Staging
v0.5.2
https://github.com/git/git
Revision d661146ac2ada526e80dbb6234f8f8da6642ffcb authored by Jakub Narebski on 29 January 2008, 19:52:32 UTC, committed by Junio C Hamano on 30 January 2008, 06:01:20 UTC
Those two configuration variables are important enough that it is
worth to explicitely write about them in the "Gitweb config file
variables" section even if they are usually set during build by
GITWEB_PROJECTROOT and GITWEB_LIST build (Makefile) configuration
variables.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent a5d86f7
Raw File
Tip revision: d661146ac2ada526e80dbb6234f8f8da6642ffcb authored by Jakub Narebski on 29 January 2008, 19:52:32 UTC
gitweb: Add info about $projectroot and $projects_list to gitweb/README
Tip revision: d661146
test-chmtime.c
#include "git-compat-util.h"
#include <utime.h>

static const char usage_str[] = "(+|=|=+|=-|-)<seconds> <file>...";

int main(int argc, const char *argv[])
{
	int i;
	int set_eq;
	long int set_time;
	char *test;
	const char *timespec;

	if (argc < 3)
		goto usage;

	timespec = argv[1];
	set_eq = (*timespec == '=') ? 1 : 0;
	if (set_eq) {
		timespec++;
		if (*timespec == '+') {
			set_eq = 2; /* relative "in the future" */
			timespec++;
		}
	}
	set_time = strtol(timespec, &test, 10);
	if (*test) {
		fprintf(stderr, "Not a base-10 integer: %s\n", argv[1] + 1);
		goto usage;
	}
	if ((set_eq && set_time < 0) || set_eq == 2) {
		time_t now = time(NULL);
		set_time += now;
	}

	for (i = 2; i < argc; i++) {
		struct stat sb;
		struct utimbuf utb;

		if (stat(argv[i], &sb) < 0) {
			fprintf(stderr, "Failed to stat %s: %s\n",
			        argv[i], strerror(errno));
			return -1;
		}

		utb.actime = sb.st_atime;
		utb.modtime = set_eq ? set_time : sb.st_mtime + set_time;

		if (utime(argv[i], &utb) < 0) {
			fprintf(stderr, "Failed to modify time on %s: %s\n",
			        argv[i], strerror(errno));
			return -1;
		}
	}

	return 0;

usage:
	fprintf(stderr, "Usage: %s %s\n", argv[0], usage_str);
	return -1;
}
back to top