Re: "Publishing your work" questions?

From: Linus Torvalds <torvalds@osdl.org>
Date: 2005-08-21 02:12:11
On Sat, 20 Aug 2005, Linus Torvalds wrote:
> 
> But yes, you _should_ be able to do it with that ultra-simplistic login 
> shell. Probably just a 5-liner main() function or something.

This is entirely untested, and a lot more than five lines of code. Edit 
until it works.

		Linus

----
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

static char *parse_argument(char *orig)
{
	int i;
	int len = strlen(orig);

	/* We only accept properly quoted arguments */
	if (len < 2 || orig[0] != '\'' || orig[len-1] != '\'')
		exit(2);
	orig[len-1] = 0;
	orig++;
	len -= 2;

	/*
	 * Go look for quoted single-ticks. They are always
	 * quoted as '\'', we don't accept anything else
	 */
	for (i = 0; len ; i++, len--) {
		char c = orig[i];
		if (c != '\'')
			continue;
		if (len < 4 || memcmp(orig+i, "'\\''", 4))
			exit(2);
		len -= 3;
		memmove(orig+1, orig+4, len+1);
	}
	return orig;
}

int main(int argc, char **argv)
{
	int i;
	char *cmd, *arg;

	if (argc < 2)
		exit(1);
	i = 2;
	cmd = argv[1];
	if (!strcmp(cmd, "-c"))
		cmd = argv[i++];

	/* We're not going to allow anything else */
	if (argc != i)
		exit(1);

	/*
	 * Right now we only accept "upload" commands, but
	 * we could have some maintenance commands too, to
	 * create new archives or delete old ones..
	 */
	if (strncmp(cmd, "git-upload-pack ", 16))
		exit(1);

	arg = parse_argument(cmd+16);
	execlp("git-upload-pack", "git-upload-pack", arg, NULL);
	exit(3);
}
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Sun Aug 21 02:12:28 2005

This archive was generated by hypermail 2.1.8 : 2005-08-21 02:12:30 EST