summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog4
-rw-r--r--TODO9
-rw-r--r--cat.c4
-rw-r--r--coreutils/cat.c4
-rw-r--r--coreutils/ls.c27
-rw-r--r--ls.c27
6 files changed, 49 insertions, 26 deletions
diff --git a/Changelog b/Changelog
index 1a7fd71..7a7f50a 100644
--- a/Changelog
+++ b/Changelog
@@ -6,6 +6,10 @@
* Several options are now moved into busybox.defs.h
* Now 'rm -R' and 'rm -r' both work.
* dd now properly handles input beyond 1 block from stdin.
+ * Fixed a bug where tar unpacked everything a directories. Moved some code
+ from createPath into mkdir where it belonged, thereby making tar work properly.
+ * Fixed an off-by-one bug in cat. Given a list of file it wouldn't cat out the
+ last file in the list.
-Erik Andrsen
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..20cd41e
--- /dev/null
+++ b/TODO
@@ -0,0 +1,9 @@
+TODO list for busybox in no particular order
+
+* Add in a mini syslogd
+* Allow tar to create archives with sockets, devices, and other special files
+* Add in a mini modprobe, insmod, rmmod
+* poweroff
+* Change init so halt, reboot (and poweroff) work with an initrd
+ when init is not PID 1
+*
diff --git a/cat.c b/cat.c
index 1f4ef4a..758a83e 100644
--- a/cat.c
+++ b/cat.c
@@ -49,14 +49,12 @@ extern int cat_main(int argc, char **argv)
argv++;
while (argc-- > 0) {
- file = fopen(*argv, "r");
+ file = fopen(*(argv++), "r");
if (file == NULL) {
perror(*argv);
exit(FALSE);
}
print_file( file);
- argc--;
- argv++;
}
exit(TRUE);
}
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 1f4ef4a..758a83e 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -49,14 +49,12 @@ extern int cat_main(int argc, char **argv)
argv++;
while (argc-- > 0) {
- file = fopen(*argv, "r");
+ file = fopen(*(argv++), "r");
if (file == NULL) {
perror(*argv);
exit(FALSE);
}
print_file( file);
- argc--;
- argv++;
}
exit(TRUE);
}
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 3b38067..571c962 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -193,27 +193,34 @@ static void list_single(const char *name, struct stat *info, const char *fullnam
fputs(" ", stdout);
#ifdef BB_FEATURE_LS_USERNAME
if (!(opts & DISP_NUMERIC)) {
- scratch[8]='\0';
+ scratch[0]='\0';
my_getpwuid( scratch, info->st_uid);
+ scratch[8]='\0';
if (*scratch)
- fputs(scratch, stdout);
- else
- writenum((long)info->st_uid,(short)0);
+ wr(scratch,8);
+ else {
+ writenum((long) info->st_uid,(short)8);
+ fputs(" ", stdout);
+ }
} else
#endif
- writenum((long)info->st_uid,(short)0);
+ {
+ writenum((long) info->st_uid,(short)8);
+ fputs(" ", stdout);
+ }
tab(16);
#ifdef BB_FEATURE_LS_USERNAME
if (!(opts & DISP_NUMERIC)) {
- scratch[8]='\0';
+ scratch[0]='\0';
my_getgrgid( scratch, info->st_gid);
+ scratch[8]='\0';
if (*scratch)
- fputs(scratch, stdout);
- else
- writenum((long)info->st_gid,(short)0);
+ wr(scratch,8);
+ else
+ writenum((long) info->st_gid,(short)8);
} else
#endif
- writenum((long)info->st_gid,(short)0);
+ writenum((long) info->st_gid,(short)8);
tab(17);
if (S_ISBLK(mode) || S_ISCHR(mode)) {
writenum((long)MAJOR(info->st_rdev),(short)3);
diff --git a/ls.c b/ls.c
index 3b38067..571c962 100644
--- a/ls.c
+++ b/ls.c
@@ -193,27 +193,34 @@ static void list_single(const char *name, struct stat *info, const char *fullnam
fputs(" ", stdout);
#ifdef BB_FEATURE_LS_USERNAME
if (!(opts & DISP_NUMERIC)) {
- scratch[8]='\0';
+ scratch[0]='\0';
my_getpwuid( scratch, info->st_uid);
+ scratch[8]='\0';
if (*scratch)
- fputs(scratch, stdout);
- else
- writenum((long)info->st_uid,(short)0);
+ wr(scratch,8);
+ else {
+ writenum((long) info->st_uid,(short)8);
+ fputs(" ", stdout);
+ }
} else
#endif
- writenum((long)info->st_uid,(short)0);
+ {
+ writenum((long) info->st_uid,(short)8);
+ fputs(" ", stdout);
+ }
tab(16);
#ifdef BB_FEATURE_LS_USERNAME
if (!(opts & DISP_NUMERIC)) {
- scratch[8]='\0';
+ scratch[0]='\0';
my_getgrgid( scratch, info->st_gid);
+ scratch[8]='\0';
if (*scratch)
- fputs(scratch, stdout);
- else
- writenum((long)info->st_gid,(short)0);
+ wr(scratch,8);
+ else
+ writenum((long) info->st_gid,(short)8);
} else
#endif
- writenum((long)info->st_gid,(short)0);
+ writenum((long) info->st_gid,(short)8);
tab(17);
if (S_ISBLK(mode) || S_ISCHR(mode)) {
writenum((long)MAJOR(info->st_rdev),(short)3);