view toys/chroot.c @ 293:6baa13382880

Sort was including the trailing comma and getting the order wrong. (Specifically, it was comparing "sh," with "sha1sum," and putting sha1sum first in generated/newtoys.h so the binary search wasn't finding sha1sum. Alas, you can't feed separate beginning and ending delimiters to "sort -t". The fix is to copy the appropriate field out with sed, duplicate it at the start of the string where it's easy to compare, and then remove it again with a second sed after the sort.
author Rob Landley <rob@landley.net>
date Mon, 12 May 2008 01:23:19 -0500
parents 163498bf547b
children 064fc1b8b7b1
line wrap: on
line source

/* vi: set sw=4 ts=4:
 *
 * chroot.c - Run command in new root directory.
 *
 * Copyright 2007 Rob Landley <rob@landley.net>
 *
 * Not in SUSv3.

USE_CHROOT(NEWTOY(chroot, "<1", TOYFLAG_USR|TOYFLAG_SBIN))

config CHROOT
	bool "chroot"
	default y
	help
	  usage: chroot NEWPATH [commandline...]

	  Run command within a new root directory.  If no command, run /bin/sh.
*/

#include "toys.h"

void chroot_main(void)
{
	char *binsh[] = {"/bin/sh", "-i", 0};
	if (chdir(*toys.optargs) || chroot("."))
		perror_exit("%s", *toys.optargs);
	xexec(toys.optargs[1] ? toys.optargs+1 : binsh);
}