1303 files changed, 32187 insertions, 57138 deletions
diff --git a/coreutils/dos2unix.c b/coreutils/dos2unix.c index c9ae76e..6d23471 100644 --- a/coreutils/dos2unix.c +++ b/coreutils/dos2unix.c @@ -10,7 +10,26 @@ * dos2unix filters reading input from stdin and writing output to stdout. * * Licensed under GPLv2 or later, see file LICENSE in this source tree. -*/ + */ +//config:config DOS2UNIX +//config: bool "dos2unix" +//config: default y +//config: help +//config: dos2unix is used to convert a text file from DOS format to +//config: UNIX format, and vice versa. +//config: +//config:config UNIX2DOS +//config: bool "unix2dos" +//config: default y +//config: help +//config: unix2dos is used to convert a text file from UNIX format to +//config: DOS format, and vice versa. + +//applet:IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix)) +//applet:IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos)) + +//kbuild:lib-$(CONFIG_DOS2UNIX) += dos2unix.o +//kbuild:lib-$(CONFIG_UNIX2DOS) += dos2unix.o //usage:#define dos2unix_trivial_usage //usage: "[-ud] [FILE]" @@ -41,36 +60,38 @@ enum { static void convert(char *fn, int conv_type) { FILE *in, *out; - int i; - char *temp_fn = NULL; - char *resolved_fn = NULL; + int ch; + char *temp_fn = temp_fn; /* for compiler */ + char *resolved_fn = resolved_fn; in = stdin; out = stdout; if (fn != NULL) { struct stat st; + int fd; resolved_fn = xmalloc_follow_symlinks(fn); if (resolved_fn == NULL) bb_simple_perror_msg_and_die(fn); in = xfopen_for_read(resolved_fn); - fstat(fileno(in), &st); + xfstat(fileno(in), &st, resolved_fn); temp_fn = xasprintf("%sXXXXXX", resolved_fn); - i = xmkstemp(temp_fn); - if (fchmod(i, st.st_mode) == -1) + fd = xmkstemp(temp_fn); + if (fchmod(fd, st.st_mode) == -1) bb_simple_perror_msg_and_die(temp_fn); + fchown(fd, st.st_uid, st.st_gid); - out = xfdopen_for_write(i); + out = xfdopen_for_write(fd); } - while ((i = fgetc(in)) != EOF) { - if (i == '\r') + while ((ch = fgetc(in)) != EOF) { + if (ch == '\r') continue; - if (i == '\n') + if (ch == '\n') if (conv_type == CT_UNIX2DOS) fputc('\r', out); - fputc(i, out); + fputc(ch, out); } if (fn != NULL) { @@ -90,9 +111,12 @@ int dos2unix_main(int argc UNUSED_PARAM, char **argv) int o, conv_type; /* See if we are supposed to be doing dos2unix or unix2dos */ - conv_type = CT_UNIX2DOS; - if (applet_name[0] == 'd') { + if (ENABLE_DOS2UNIX + && (!ENABLE_UNIX2DOS || applet_name[0] == 'd') + ) { conv_type = CT_DOS2UNIX; + } else { + conv_type = CT_UNIX2DOS; } /* -u convert to unix, -d convert to dos */ |