Fix touch so it behaves itself (it could segfault in some cases).
Fix uname help info formatting. -Erik
This commit is contained in:
parent
808d03ec19
commit
5a0a2aa00b
@ -33,26 +33,21 @@
|
|||||||
|
|
||||||
static const char touch_usage[] = "touch [-c] file [file ...]\n"
|
static const char touch_usage[] = "touch [-c] file [file ...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\nUpdate the last-modified date on the given file[s].\n"
|
"\nUpdate the last-modified date on the given file[s].\n\n"
|
||||||
|
"Options:\n"
|
||||||
|
"\t-c\tDo not create any files\n"
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int touch_main(int argc, char **argv)
|
extern int touch_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int create = TRUE;
|
int create = TRUE;
|
||||||
|
|
||||||
if (argc < 2) {
|
|
||||||
usage(touch_usage);
|
|
||||||
}
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
|
|
||||||
/* Parse options */
|
/* Parse options */
|
||||||
while (**argv == '-') {
|
while (--argc > 0 && **(++argv) == '-') {
|
||||||
while (*++(*argv))
|
while (*(++(*argv))) {
|
||||||
switch (**argv) {
|
switch (**argv) {
|
||||||
case 'c':
|
case 'c':
|
||||||
create = FALSE;
|
create = FALSE;
|
||||||
@ -61,23 +56,30 @@ extern int touch_main(int argc, char **argv)
|
|||||||
usage(touch_usage);
|
usage(touch_usage);
|
||||||
exit(FALSE);
|
exit(FALSE);
|
||||||
}
|
}
|
||||||
argc--;
|
}
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(*argv, (create == FALSE) ? O_RDWR : O_RDWR | O_CREAT, 0644);
|
if (argc < 1) {
|
||||||
|
usage(touch_usage);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (argc > 0) {
|
||||||
|
fd = open(*argv, (create == FALSE) ? O_RDWR : O_RDWR | O_CREAT,
|
||||||
|
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
if (create == FALSE && errno == ENOENT)
|
if (create == FALSE && errno == ENOENT)
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
else {
|
else {
|
||||||
perror("touch");
|
fatalError("touch: %s", strerror(errno));
|
||||||
exit(FALSE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
if (utime(*argv, NULL)) {
|
if (utime(*argv, NULL)) {
|
||||||
perror("touch");
|
fatalError("touch: %s", strerror(errno));
|
||||||
exit(FALSE);
|
}
|
||||||
} else
|
argc--;
|
||||||
|
argv++;
|
||||||
|
}
|
||||||
|
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
}
|
}
|
||||||
|
@ -42,9 +42,9 @@
|
|||||||
|
|
||||||
|
|
||||||
static const char uname_usage[] =
|
static const char uname_usage[] =
|
||||||
"uname [OPTION]...\n\n"
|
"uname [OPTION]...\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"Print certain system information. With no OPTION, same as -s.\n\n"
|
"\nPrint certain system information. With no OPTION, same as -s.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
"\t-a\tprint all information\n"
|
"\t-a\tprint all information\n"
|
||||||
"\t-m\tthe machine (hardware) type\n"
|
"\t-m\tthe machine (hardware) type\n"
|
||||||
|
38
touch.c
38
touch.c
@ -33,26 +33,21 @@
|
|||||||
|
|
||||||
static const char touch_usage[] = "touch [-c] file [file ...]\n"
|
static const char touch_usage[] = "touch [-c] file [file ...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\nUpdate the last-modified date on the given file[s].\n"
|
"\nUpdate the last-modified date on the given file[s].\n\n"
|
||||||
|
"Options:\n"
|
||||||
|
"\t-c\tDo not create any files\n"
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int touch_main(int argc, char **argv)
|
extern int touch_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int create = TRUE;
|
int create = TRUE;
|
||||||
|
|
||||||
if (argc < 2) {
|
|
||||||
usage(touch_usage);
|
|
||||||
}
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
|
|
||||||
/* Parse options */
|
/* Parse options */
|
||||||
while (**argv == '-') {
|
while (--argc > 0 && **(++argv) == '-') {
|
||||||
while (*++(*argv))
|
while (*(++(*argv))) {
|
||||||
switch (**argv) {
|
switch (**argv) {
|
||||||
case 'c':
|
case 'c':
|
||||||
create = FALSE;
|
create = FALSE;
|
||||||
@ -61,23 +56,30 @@ extern int touch_main(int argc, char **argv)
|
|||||||
usage(touch_usage);
|
usage(touch_usage);
|
||||||
exit(FALSE);
|
exit(FALSE);
|
||||||
}
|
}
|
||||||
argc--;
|
}
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(*argv, (create == FALSE) ? O_RDWR : O_RDWR | O_CREAT, 0644);
|
if (argc < 1) {
|
||||||
|
usage(touch_usage);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (argc > 0) {
|
||||||
|
fd = open(*argv, (create == FALSE) ? O_RDWR : O_RDWR | O_CREAT,
|
||||||
|
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
if (create == FALSE && errno == ENOENT)
|
if (create == FALSE && errno == ENOENT)
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
else {
|
else {
|
||||||
perror("touch");
|
fatalError("touch: %s", strerror(errno));
|
||||||
exit(FALSE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
if (utime(*argv, NULL)) {
|
if (utime(*argv, NULL)) {
|
||||||
perror("touch");
|
fatalError("touch: %s", strerror(errno));
|
||||||
exit(FALSE);
|
}
|
||||||
} else
|
argc--;
|
||||||
|
argv++;
|
||||||
|
}
|
||||||
|
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
}
|
}
|
||||||
|
4
uname.c
4
uname.c
@ -42,9 +42,9 @@
|
|||||||
|
|
||||||
|
|
||||||
static const char uname_usage[] =
|
static const char uname_usage[] =
|
||||||
"uname [OPTION]...\n\n"
|
"uname [OPTION]...\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"Print certain system information. With no OPTION, same as -s.\n\n"
|
"\nPrint certain system information. With no OPTION, same as -s.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
"\t-a\tprint all information\n"
|
"\t-a\tprint all information\n"
|
||||||
"\t-m\tthe machine (hardware) type\n"
|
"\t-m\tthe machine (hardware) type\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user