SMOLNET PORTAL home about changes
#!/usr/pkg/bin/bash
#
# Update timestamps on blog/gopher posts or post caches
#
# License GPLv3 or later by slugmax@tx0.org
#
# Call with no args to force post timestamps back to those stored in
# cached copies.
# Call with -u to update the timestamp cache. 
# Call with -f to specify a single file to update
# Call with -g to use gopher directories, rather than the default blog
# directories.
#
gflag=
uflag=
fflag=

while getopts 'guf:' OPTION
do
  case $OPTION in
      g)  gflag=1
	  ;;
      u)  uflag=1
	  ;;
      f)  fflag=1
	  fval="$OPTARG"
	  ;;
      ?) printf "Usage: %s [-g] [-u] [-f filename]\n" $(basename $0) >&2
  esac
done

shift $(($OPTIND - 1))

# Edit BLOGDIR and TSTAMPDIR to suit
if [ "$gflag" ]; then
    BLOGDIR="$HOME/gopher/dat"
    TSTAMPDIR="$HOME/.gtstamps"
else
    BLOGDIR="$HOME/html/motd/journal/entries"
    TSTAMPDIR="$HOME/.tstamps"
fi

if [ "$uflag" ]; then
    SRC="$BLOGDIR"
    DEST="$TSTAMPDIR"
else
    SRC="$TSTAMPDIR"
    DEST="$BLOGDIR"
fi

if [ "$fflag" ]; then
    if [ ! "$uflag" ]; then
        # We are changing the timestamp on just one blog post file
        # from the cached timestamp, so both must exist
	if [ \( -e "$SRC/$fval" \) -a \( -e "$DEST/$fval" \) ]; then
	    echo "Running touch -r $SRC/$fval $DEST/$fval"
	    touch -r $SRC/$fval $DEST/$fval
	else
	    echo "Either $SRC/$fval or $DEST/$fval does not exist, aborting"
	fi
    else
	# We are changing the timestamp on the cache, from the real
	# post file. So only the post file need exist.
	if [ -e "$SRC/$fval" ]; then
	    echo "Running touch -r $SRC/$fval $DEST/$fval"
	    touch -r $SRC/$fval $DEST/$fval
	else
	    echo "$SRC/$fval does not exist, aborting"
	fi
    fi
else
    # We didn't specify a file, so operate on all of the posts we can
    # find. Build a list of posts that we will use in the next step
    FILES=$(find $BLOGDIR -name '*txt' -print0 | xargs -0 | sed -e "s!$BLOGDIR/!!g")

    for POST in $FILES
    do
	if [ "$uflag" -a \( ! -e "$DEST/$POST" \) -a \( ! -d $(dirname $DEST/$POST) \) ]; then
	    echo "Creating $(dirname $DEST/$POST)"
	    mkdir -p $(dirname $DEST/$POST)
	fi
	echo "Running touch -r $SRC/$POST $DEST/$POST"
	touch -r $SRC/$POST $DEST/$POST
    done
fi
Response: text/plain
Original URLgopher://sdf.org/0/users/slugmax/code/upd
Content-Typetext/plain; charset=utf-8