/******************************************************************************
* This file is Copyright 1993 by Philip G. Richards.  All Rights Reserved.
* See the file README that came with this distribution for permissions on
* code usage, copying, and distribution.  It comes with absolutely no warranty.
* email: <pgr@prg.ox.ac.uk>
******************************************************************************/

/* ---INFOBEGIN--- *  DO NOT DELETE THIS COMMENT BLOCK!!!
COMMAND touch local "cause zero length files to be created on the server"
 *  ---INFOEND---  */

#include "client.h"
#include "table.h"

static FILE *devnull;
static int dirty;

static int
do_touch(char *name)
{
    struct stat remote;

    if (!validate_operation(name, UTIL_UPLOAD))
	return -1;

    if (util_stat(name, &remote) < 0)
    {
	if (util_upload(name, devnull) == 0)
	    dirty = 1;
	else
	    return -1;
    }

    return 0;
}

int
rtouch_main(int argc, char *const*argv, char **envp)
{
    int retval;

    if (argc > 1)
    {
	int old_client_trace = client_trace;

	devnull = fopen("/dev/null", "r");
	if (devnull == 0)
	{
	    ffprintf(STDERR, "touch: can't open `/dev/null'!\n");
	    return 1;
	}

	client_trace = 0;
	dirty  = 0;

	retval = util_process_arglist(argv + 1, do_touch);

	if (dirty)
	    util_dirtydir(".");
	client_trace = old_client_trace;

	(void)fclose(devnull);
    }
    else
	retval = 0;

    return retval;
}


syntax highlighted by Code2HTML, v. 0.9.1