Several more updates
-Erik
This commit is contained in:
		
							
								
								
									
										3
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -42,3 +42,6 @@ Enrique Zanardi <ezanardi@ull.es> | ||||
|  | ||||
| Karl M. Hegbloom <karlheg@debian.org> | ||||
|     cp_mv.c, the test suite, various fixes to utility.c, &c. | ||||
|  | ||||
| Daniel Jacobowitz <dan@debian.org> | ||||
|     mktemp.c | ||||
|   | ||||
| @@ -1,6 +1,10 @@ | ||||
| 0.44 | ||||
|         * added the -v option (inverted search) to grep, | ||||
|             updated docs/busybox.pod accordingly.  -beppu | ||||
| 	* Added mktemp, contributed by Daniel Jacobowitz <dan@debian.org> | ||||
| 	* Fix for ping warnings from Sascha Ziemann <szi@aibon.ping.de> | ||||
| 	* More doc updates | ||||
|  | ||||
|  | ||||
| 0.43 | ||||
| 	* Major update to the provided documentation. | ||||
|   | ||||
| @@ -197,6 +197,9 @@ static const struct Applet applets[] = { | ||||
| #ifdef BB_MKSWAP | ||||
| 	{"mkswap", mkswap_main, _BB_DIR_SBIN}, | ||||
| #endif | ||||
| #ifdef BB_MKTEMP | ||||
| 	{"mktemp", mktemp_main, _BB_DIR_BIN}, | ||||
| #endif | ||||
| #ifdef BB_MNC | ||||
| 	{"mnc", mnc_main, _BB_DIR_USR_BIN}, | ||||
| #endif | ||||
|   | ||||
| @@ -197,6 +197,9 @@ static const struct Applet applets[] = { | ||||
| #ifdef BB_MKSWAP | ||||
| 	{"mkswap", mkswap_main, _BB_DIR_SBIN}, | ||||
| #endif | ||||
| #ifdef BB_MKTEMP | ||||
| 	{"mktemp", mktemp_main, _BB_DIR_BIN}, | ||||
| #endif | ||||
| #ifdef BB_MNC | ||||
| 	{"mnc", mnc_main, _BB_DIR_USR_BIN}, | ||||
| #endif | ||||
|   | ||||
| @@ -52,12 +52,13 @@ | ||||
| #define BB_LS | ||||
| #define BB_LSMOD | ||||
| #define BB_MAKEDEVS | ||||
| #define BB_MKFS_MINIX | ||||
| #define BB_MATH | ||||
| #define BB_MKDIR | ||||
| #define BB_MKFIFO | ||||
| #define BB_MKFS_MINIX | ||||
| #define BB_MKNOD | ||||
| #define BB_MKSWAP | ||||
| #define BB_MKTEMP | ||||
| #define BB_MNC | ||||
| #define BB_MORE | ||||
| #define BB_MOUNT | ||||
|   | ||||
| @@ -60,10 +60,10 @@ dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free, | ||||
| freeramdisk, deallocvt, fsck.minix, grep, gunzip, gzip, halt, head, hostid, | ||||
| hostname, init, kill, killall, length, ln, loadacm, loadfont, loadkmap, logger, | ||||
| logname, ls, lsmod, makedevs, math, mkdir, mkfifo, mkfs.minix, mknod, mkswap, | ||||
| mnc, more, mount, mt, mv, nslookup, ping, poweroff, printf, ps, pwd, reboot, | ||||
| rm, rmdir, rmmod, sed, sh, sfdisk, sleep, sort, sync, syslogd, swapon, swapoff, | ||||
| tail, tar, test, tee, touch, tr, true, tty, umount, uname, uniq, update, | ||||
| uptime, usleep, wc, whoami, yes, zcat, [ | ||||
| mktemp, mnc, more, mount, mt, mv, nslookup, ping, poweroff, printf, ps, pwd, | ||||
| reboot, rm, rmdir, rmmod, sed, sh, sfdisk, sleep, sort, sync, syslogd, swapon, | ||||
| swapoff, tail, tar, test, tee, touch, tr, true, tty, umount, uname, uniq, | ||||
| update, uptime, usleep, wc, whoami, yes, zcat, [ | ||||
|  | ||||
| =over 4 | ||||
|  | ||||
| @@ -1050,6 +1050,22 @@ Options: | ||||
|  | ||||
| ------------------------------- | ||||
|  | ||||
| =item mktemp | ||||
|  | ||||
| Usage: mktemp [-q] TEMPLATE | ||||
|  | ||||
| Creates a temporary file with its name based on TEMPLATE. | ||||
| TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX). | ||||
|  | ||||
| Example: | ||||
| 	 | ||||
| 	$ mktemp /tmp/temp.XXXXXX | ||||
| 	/tmp/temp.mWiLjM | ||||
| 	$ ls -la /tmp/temp.mWiLjM | ||||
| 	-rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM | ||||
|  | ||||
| ------------------------------- | ||||
|  | ||||
| =item mnc | ||||
|  | ||||
| Usage: mnc [IP] [port] | ||||
| @@ -1817,4 +1833,4 @@ Enrique Zanardi <ezanardi@ull.es> | ||||
|  | ||||
| =cut | ||||
|  | ||||
| # $Id: busybox.pod,v 1.22 2000/04/24 18:07:30 beppu Exp $ | ||||
| # $Id: busybox.pod,v 1.23 2000/04/25 23:24:55 erik Exp $ | ||||
|   | ||||
| @@ -119,6 +119,7 @@ extern int mkfifo_main(int argc, char **argv); | ||||
| extern int mkfs_minix_main(int argc, char **argv); | ||||
| extern int mknod_main(int argc, char** argv); | ||||
| extern int mkswap_main(int argc, char** argv); | ||||
| extern int mktemp_main(int argc, char **argv); | ||||
| extern int mnc_main(int argc, char** argv); | ||||
| extern int more_main(int argc, char** argv); | ||||
| extern int mount_main(int argc, char** argv); | ||||
|   | ||||
							
								
								
									
										43
									
								
								miscutils/mktemp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								miscutils/mktemp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| /* vi: set sw=4 ts=4: */ | ||||
| /* | ||||
|  * Mini mktemp implementation for busybox | ||||
|  * | ||||
|  * | ||||
|  * Copyright (C) 2000 by Daniel Jacobowitz | ||||
|  * Written by Daniel Jacobowitz <dan@debian.org> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include "internal.h" | ||||
| #include <stdio.h> | ||||
| #include <errno.h> | ||||
|  | ||||
|  | ||||
| extern int mktemp_main(int argc, char **argv) | ||||
| { | ||||
| 	if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q"))) | ||||
| 		usage	("mktemp [-q] TEMPLATE\n" | ||||
| #ifndef BB_FEATURE_TRIVIAL_HELP | ||||
| 				"\nCreates a temporary file with its name based on TEMPLATE.\n" | ||||
| 				"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n" | ||||
| #endif | ||||
| 				); | ||||
| 	if(mkstemp(argv[argc-1]) < 0) | ||||
| 			exit(FALSE); | ||||
| 	(void) puts(argv[argc-1]); | ||||
| 	exit(TRUE); | ||||
| } | ||||
							
								
								
									
										43
									
								
								mktemp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								mktemp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| /* vi: set sw=4 ts=4: */ | ||||
| /* | ||||
|  * Mini mktemp implementation for busybox | ||||
|  * | ||||
|  * | ||||
|  * Copyright (C) 2000 by Daniel Jacobowitz | ||||
|  * Written by Daniel Jacobowitz <dan@debian.org> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include "internal.h" | ||||
| #include <stdio.h> | ||||
| #include <errno.h> | ||||
|  | ||||
|  | ||||
| extern int mktemp_main(int argc, char **argv) | ||||
| { | ||||
| 	if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q"))) | ||||
| 		usage	("mktemp [-q] TEMPLATE\n" | ||||
| #ifndef BB_FEATURE_TRIVIAL_HELP | ||||
| 				"\nCreates a temporary file with its name based on TEMPLATE.\n" | ||||
| 				"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n" | ||||
| #endif | ||||
| 				); | ||||
| 	if(mkstemp(argv[argc-1]) < 0) | ||||
| 			exit(FALSE); | ||||
| 	(void) puts(argv[argc-1]); | ||||
| 	exit(TRUE); | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* vi: set sw=4 ts=4: */ | ||||
| /* | ||||
|  * $Id: ping.c,v 1.13 2000/04/21 01:26:49 erik Exp $ | ||||
|  * $Id: ping.c,v 1.14 2000/04/25 23:24:55 erik Exp $ | ||||
|  * Mini ping implementation for busybox | ||||
|  * | ||||
|  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | ||||
| @@ -262,6 +262,26 @@ static void sendping(int ign) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static char *icmp_type_name (int id) | ||||
| { | ||||
| 	switch (id) { | ||||
| 	case ICMP_ECHOREPLY: 		return "Echo Reply"; | ||||
| 	case ICMP_DEST_UNREACH: 	return "Destination Unreachable"; | ||||
| 	case ICMP_SOURCE_QUENCH: 	return "Source Quench"; | ||||
| 	case ICMP_REDIRECT: 		return "Redirect (change route)"; | ||||
| 	case ICMP_ECHO: 			return "Echo Request"; | ||||
| 	case ICMP_TIME_EXCEEDED: 	return "Time Exceeded"; | ||||
| 	case ICMP_PARAMETERPROB: 	return "Parameter Problem"; | ||||
| 	case ICMP_TIMESTAMP: 		return "Timestamp Request"; | ||||
| 	case ICMP_TIMESTAMPREPLY: 	return "Timestamp Reply"; | ||||
| 	case ICMP_INFO_REQUEST: 	return "Information Request"; | ||||
| 	case ICMP_INFO_REPLY: 		return "Information Reply"; | ||||
| 	case ICMP_ADDRESS: 			return "Address Mask Request"; | ||||
| 	case ICMP_ADDRESSREPLY: 	return "Address Mask Reply"; | ||||
| 	default: 					return "unknown ICMP type"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| { | ||||
| 	struct icmp *icmppkt; | ||||
| @@ -282,10 +302,11 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| 	sz -= hlen; | ||||
| 	icmppkt = (struct icmp *) (buf + hlen); | ||||
|  | ||||
| 	if (icmppkt->icmp_id != myid) | ||||
| 	    return;				/* not our ping */ | ||||
|  | ||||
| 	if (icmppkt->icmp_type == ICMP_ECHOREPLY) { | ||||
| 		if (icmppkt->icmp_id != myid) | ||||
| 			return;				/* not our ping */ | ||||
| 		++nreceived; | ||||
| 	    ++nreceived; | ||||
| 		tp = (struct timeval *) icmppkt->icmp_data; | ||||
|  | ||||
| 		if ((tv.tv_usec -= tp->tv_usec) < 0) { | ||||
| @@ -321,10 +342,11 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| 		if (dupflag) | ||||
| 			printf(" (DUP!)"); | ||||
| 		printf("\n"); | ||||
| 	} else { | ||||
| 		fprintf(stderr, | ||||
| 				"Warning: unknown ICMP packet received (not echo-reply)\n"); | ||||
| 	} | ||||
| 	} else  | ||||
| 		if (icmppkt->icmp_type != ICMP_ECHO) | ||||
| 			fprintf(stderr, | ||||
| 					"Warning: Got ICMP %d (%s)\n", | ||||
| 					icmppkt->icmp_type, icmp_type_name (icmppkt->icmp_type)); | ||||
| } | ||||
|  | ||||
| static void ping(char *host) | ||||
|   | ||||
							
								
								
									
										38
									
								
								ping.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								ping.c
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| /* vi: set sw=4 ts=4: */ | ||||
| /* | ||||
|  * $Id: ping.c,v 1.13 2000/04/21 01:26:49 erik Exp $ | ||||
|  * $Id: ping.c,v 1.14 2000/04/25 23:24:55 erik Exp $ | ||||
|  * Mini ping implementation for busybox | ||||
|  * | ||||
|  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | ||||
| @@ -262,6 +262,26 @@ static void sendping(int ign) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static char *icmp_type_name (int id) | ||||
| { | ||||
| 	switch (id) { | ||||
| 	case ICMP_ECHOREPLY: 		return "Echo Reply"; | ||||
| 	case ICMP_DEST_UNREACH: 	return "Destination Unreachable"; | ||||
| 	case ICMP_SOURCE_QUENCH: 	return "Source Quench"; | ||||
| 	case ICMP_REDIRECT: 		return "Redirect (change route)"; | ||||
| 	case ICMP_ECHO: 			return "Echo Request"; | ||||
| 	case ICMP_TIME_EXCEEDED: 	return "Time Exceeded"; | ||||
| 	case ICMP_PARAMETERPROB: 	return "Parameter Problem"; | ||||
| 	case ICMP_TIMESTAMP: 		return "Timestamp Request"; | ||||
| 	case ICMP_TIMESTAMPREPLY: 	return "Timestamp Reply"; | ||||
| 	case ICMP_INFO_REQUEST: 	return "Information Request"; | ||||
| 	case ICMP_INFO_REPLY: 		return "Information Reply"; | ||||
| 	case ICMP_ADDRESS: 			return "Address Mask Request"; | ||||
| 	case ICMP_ADDRESSREPLY: 	return "Address Mask Reply"; | ||||
| 	default: 					return "unknown ICMP type"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| { | ||||
| 	struct icmp *icmppkt; | ||||
| @@ -282,10 +302,11 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| 	sz -= hlen; | ||||
| 	icmppkt = (struct icmp *) (buf + hlen); | ||||
|  | ||||
| 	if (icmppkt->icmp_id != myid) | ||||
| 	    return;				/* not our ping */ | ||||
|  | ||||
| 	if (icmppkt->icmp_type == ICMP_ECHOREPLY) { | ||||
| 		if (icmppkt->icmp_id != myid) | ||||
| 			return;				/* not our ping */ | ||||
| 		++nreceived; | ||||
| 	    ++nreceived; | ||||
| 		tp = (struct timeval *) icmppkt->icmp_data; | ||||
|  | ||||
| 		if ((tv.tv_usec -= tp->tv_usec) < 0) { | ||||
| @@ -321,10 +342,11 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from) | ||||
| 		if (dupflag) | ||||
| 			printf(" (DUP!)"); | ||||
| 		printf("\n"); | ||||
| 	} else { | ||||
| 		fprintf(stderr, | ||||
| 				"Warning: unknown ICMP packet received (not echo-reply)\n"); | ||||
| 	} | ||||
| 	} else  | ||||
| 		if (icmppkt->icmp_type != ICMP_ECHO) | ||||
| 			fprintf(stderr, | ||||
| 					"Warning: Got ICMP %d (%s)\n", | ||||
| 					icmppkt->icmp_type, icmp_type_name (icmppkt->icmp_type)); | ||||
| } | ||||
|  | ||||
| static void ping(char *host) | ||||
|   | ||||
| @@ -163,13 +163,13 @@ extern int ps_main(int argc, char **argv) | ||||
| 		if (*groupName == '\0') | ||||
| 			sprintf(groupName, "%d", p.rgid); | ||||
|  | ||||
| 		len = fprintf(stdout, "%5d %-8s %-8s %c ", p.pid, uidName, groupName, | ||||
| 				p.state); | ||||
| 		sprintf(path, "/proc/%s/cmdline", entry->d_name); | ||||
| 		file = fopen(path, "r"); | ||||
| 		if (file == NULL) | ||||
| 			fatalError("Can't open %s: %s\n", path, strerror(errno)); | ||||
| 			continue; | ||||
| 		i = 0; | ||||
| 		len = fprintf(stdout, "%5d %-8s %-8s %c ", p.pid, uidName, groupName, | ||||
| 				p.state); | ||||
| 		while (((c = getc(file)) != EOF) && (i < (terminal_width-len))) { | ||||
| 			i++; | ||||
| 			if (c == '\0') | ||||
|   | ||||
							
								
								
									
										6
									
								
								ps.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								ps.c
									
									
									
									
									
								
							| @@ -163,13 +163,13 @@ extern int ps_main(int argc, char **argv) | ||||
| 		if (*groupName == '\0') | ||||
| 			sprintf(groupName, "%d", p.rgid); | ||||
|  | ||||
| 		len = fprintf(stdout, "%5d %-8s %-8s %c ", p.pid, uidName, groupName, | ||||
| 				p.state); | ||||
| 		sprintf(path, "/proc/%s/cmdline", entry->d_name); | ||||
| 		file = fopen(path, "r"); | ||||
| 		if (file == NULL) | ||||
| 			fatalError("Can't open %s: %s\n", path, strerror(errno)); | ||||
| 			continue; | ||||
| 		i = 0; | ||||
| 		len = fprintf(stdout, "%5d %-8s %-8s %c ", p.pid, uidName, groupName, | ||||
| 				p.state); | ||||
| 		while (((c = getc(file)) != EOF) && (i < (terminal_width-len))) { | ||||
| 			i++; | ||||
| 			if (c == '\0') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user