0, S_IXOTH, S_IXOTH, 0 /* other */
};
-#define parse_error(x) do { errmsg = x; goto pe_label; } while(0)
+#define parse_error(x) do { errmsg = x; goto pe_label; } while (0)
static void parse_config_file(void)
{
#endif
) {
extension[-1] = '\0';
- } else if(strcmp(extension, "tgz") == 0) {
+ } else if (strcmp(extension, "tgz") == 0) {
filename = xstrdup(filename);
extension = strrchr(filename, '.');
extension[2] = 'a';
//#define DEBUG 1
/* Diagnostic functions */
#ifdef DEBUG
-# define Assert(cond,msg) {if(!(cond)) bb_error_msg(msg);}
+# define Assert(cond,msg) { if (!(cond)) bb_error_msg(msg); }
# define Trace(x) fprintf x
# define Tracev(x) {if (verbose) fprintf x ;}
# define Tracevv(x) {if (verbose > 1) fprintf x ;}
/* child exited with 0 */
return;
/* Cannot happen?
- if(!WIFSIGNALED(status) && !WIFEXITED(status)) return; */
+ if (!WIFSIGNALED(status) && !WIFEXITED(status)) return; */
child_error = 1;
}
#endif
opt_complementary = "f-i:i-f";
opt = getopt32(argc, argv, "fiRr");
argv += optind;
- if(opt & 1)
+ if (opt & 1)
flags |= FILEUTILS_FORCE;
- if(opt & 2)
+ if (opt & 2)
flags |= FILEUTILS_INTERACTIVE;
- if(opt & 12)
+ if (opt & 12)
flags |= FILEUTILS_RECUR;
if (*argv != NULL) {
if (!quiet && killed) {
printf("stopped %s (pid", what);
for (p = found; p; p = p->next)
- if(p->pid < 0)
+ if (p->pid < 0)
printf(" %d", -p->pid);
puts(")");
}
X.rsm = newfile(R.s);
if (! X.rsm->F) {
if (opn == '|') {
- if((X.rsm->F = popen(R.s, "w")) == NULL)
+ X.rsm->F = popen(R.s, "w");
+ if (X.rsm->F == NULL)
bb_perror_msg_and_die("popen");
X.rsm->is_pipe = 1;
} else {
/* skip over (patch_level) number of leading directories */
for (i = 0; i < patch_level; i++) {
- if(!(temp = strchr(filename_start_ptr, '/'))) break;
+ temp = strchr(filename_start_ptr, '/');
+ if (!temp)
+ break;
filename_start_ptr = temp + 1;
}
q = p;
p = strchr(q,'\n');
if (p)
- while(*p == '\n')
+ while (*p == '\n')
*p++ = '\0';
if (*q)
colon(q);
} else {
goto set;
}
- } else { /* if(state == NORM) */
+ } else { /* if (state == NORM) */
if (ISSPACE(c)) {
if (s) {
unexpected_eof:
for (a = actions; a->name != 0; a++) {
if (strcmp(a->name, action) == 0) {
if (*id != '\0') {
- if(strncmp(id, "/dev/", 5) == 0)
+ if (strncmp(id, "/dev/", 5) == 0)
id += 5;
strcpy(tmpConsole, "/dev/");
safe_strncpy(tmpConsole + 5, id,
return -1;
}
if (con) {
- if(setfilecon(dest, con) == -1) {
+ if (setfilecon(dest, con) == -1) {
bb_perror_msg("setfilecon:%s,%s", dest, con);
freecon(con);
return -1;
for (fd = 2; fd >= 0; fd--) {
int fd4name;
- int choise_fd;
+ int choice_fd;
char arg;
fd4name = open_a_console(console_names[fd]);
chk_std:
- choise_fd = (fd4name >= 0 ? fd4name : fd);
+ choice_fd = (fd4name >= 0 ? fd4name : fd);
arg = 0;
- if (ioctl(choise_fd, KDGKBTYPE, &arg) == 0)
- return choise_fd;
- if(fd4name >= 0) {
+ if (ioctl(choice_fd, KDGKBTYPE, &arg) == 0)
+ return choice_fd;
+ if (fd4name >= 0) {
close(fd4name);
fd4name = -1;
goto chk_std;
* end of line. If end isn't NULL, length of the chunk read is stored in it.
* Return NULL if EOF/error */
-char *bb_get_chunk_from_file(FILE * file, int *end)
+char *bb_get_chunk_from_file(FILE *file, int *end)
{
int ch;
int idx = 0;
while ((ch = getc(file)) != EOF) {
/* grow the line buffer as necessary */
if (idx >= linebufsz) {
- linebuf = xrealloc(linebuf, linebufsz += 80);
+ linebufsz += 80;
+ linebuf = xrealloc(linebuf, linebufsz);
}
linebuf[idx++] = (char) ch;
if (!ch || (end && ch == '\n'))
}
/* Get line, including trailing \n if any */
-char *xmalloc_fgets(FILE * file)
+char *xmalloc_fgets(FILE *file)
{
int i;
}
/* Get line. Remove trailing \n */
-char *xmalloc_getline(FILE * file)
+char *xmalloc_getline(FILE *file)
{
int i;
char *c = bb_get_chunk_from_file(file, &i);
outbuf = buf;
buf[0] = c;
buf[1] = '\0';
- if(c == '\n') {
+ if (c == '\n') {
buf[1] = '\r';
buf[2] = '\0';
}
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
#include "libbb.h"
-
void trim(char *s)
{
size_t len = strlen(s);
while (len && isspace(s[len-1])) --len;
/* trim leading whitespace */
- if(len) {
+ if (len) {
lws = strspn(s, " \n\r\t\v");
memmove(s, s + lws, len -= lws);
}
- s[len] = 0;
+ s[len] = '\0';
}
int sz;
sz = snprintf(buf, sizeof(buf), "%s%d", basedev, S);
- if(sz<0 || sz>=sizeof(buf)) /* libc different */
+ if (sz < 0 || sz >= sizeof(buf)) /* libc different */
bb_error_msg_and_die("%s too large", basedev);
/* if mode != S_IFCHR and != S_IFBLK third param in mknod() ignored */
sec->header = section_headers[i];
sec->idx = i;
- if(sec->header.sh_size) {
+ if (sec->header.sh_size) {
switch (sec->header.sh_type) {
case SHT_NULL:
case SHT_NOTE:
goto out;
}
- if(flag_print_load_map)
+ if (flag_print_load_map)
print_load_map(f);
exit_status = EXIT_SUCCESS;
out:
#if ENABLE_FEATURE_CLEAN_UP
- if(fp)
+ if (fp)
fclose(fp);
free(tmp1);
- if(!tmp1)
+ if (!tmp1)
free(m_name);
free(m_filename);
#endif
/* Parse command line. */
n = getopt32(argc, argv, "wfa");
- if((n & 1)) // --wait
+ if (n & 1) // --wait
flags &= ~O_NONBLOCK;
- if((n & 2)) // --force
+ if (n & 2) // --force
flags |= O_TRUNC;
- if((n & 4)) {
+ if (n & 4) {
/* Unload _all_ unused modules via NULL delete_module() call */
/* until the number of modules does not change */
size_t nmod = 0; /* number of modules */
/* Debug: squirt whatever message and sleep a bit so we can see it go by. */
/* Beware: writes to stdOUT... */
#if 0
-#define Debug(...) do { printf(__VA_ARGS__); printf("\n"); fflush(stdout); sleep(1); } while(0)
+#define Debug(...) do { printf(__VA_ARGS__); printf("\n"); fflush(stdout); sleep(1); } while (0)
#else
-#define Debug(...) do { } while(0)
+#define Debug(...) do { } while (0)
#endif
-#define holler_error(...) do { if (o_verbose) bb_error_msg(__VA_ARGS__); } while(0)
-#define holler_perror(...) do { if (o_verbose) bb_perror_msg(__VA_ARGS__); } while(0)
+#define holler_error(...) do { if (o_verbose) bb_error_msg(__VA_ARGS__); } while (0)
+#define holler_perror(...) do { if (o_verbose) bb_perror_msg(__VA_ARGS__); } while (0)
/* catch: no-brainer interrupt handler */
static void catch(int sig)
/* (but it also says "may be enabled in /etc/resolv.conf|) */
/*_res.options |= RES_USE_INET6;*/
- if(argc == 3)
+ if (argc == 3)
set_default_dns(argv[2]);
server_print();
/* recognize x.x.x.x/mask format. */
prefix = strchr(target, '/');
- if(prefix) {
+ if (prefix) {
int prefix_len;
prefix_len = xatoul_range(prefix+1, 0, 32);
if (isnet < 0) {
bb_error_msg_and_die("resolving %s", target);
}
- if(prefix) {
+ if (prefix) {
/* do not destroy prefix for process args */
*prefix = '/';
}
char *tmpdir;
struct stat ts;
- if (!(dp = opendir(path))) {
+ dp = opendir(path);
+ if (!dp) {
retval = -1;
} else {
while ((de = readdir(dp)) != NULL) {
tmpdir = concat_subpath_file(path, de->d_name);
- if(tmpdir == NULL)
+ if (tmpdir == NULL)
continue;
- if ((retval2 = stat(tmpdir, &ts)) != 0)
+ retval2 = stat(tmpdir, &ts);
+ if (retval2 != 0)
bb_perror_msg(tmpdir);
else {
if (S_ISDIR(ts.st_mode)) {
upminutes = (int) info.uptime / 60;
uphours = (upminutes / 60) % 24;
upminutes %= 60;
- if(uphours)
+ if (uphours)
printf("%2d:%02d, ", uphours, upminutes);
else
printf("%d min, ", upminutes);
fprintf(stderr, "docproc: ");
perror(real_filename);
}
- while(fgets(line, MAXLINESZ, fp)) {
+ while (fgets(line, MAXLINESZ, fp)) {
char *p;
char *e;
if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != 0) ||
{
char line[MAXLINESZ];
char * s;
- while(fgets(line, MAXLINESZ, infile)) {
+ while (fgets(line, MAXLINESZ, infile)) {
if (line[0] == '!') {
s = line + 2;
switch (line[1]) {
bb_perror_msg_and_die("error while processing %s", prefix);
}
- while((path = *argv++) != NULL) {
+ while ((path = *argv++) != NULL) {
security_context_t con;
int rc;
static void free_list(void *list, void (*freeit)(void *data))
{
- while(list) {
+ while (list) {
void **next = (void **)list;
void *list_next = *next;
freeit(list);
// Handle local commands. This is totally fake and plastic.
if (cmd->argc==2 && !strcmp(cmd->argv[0],"cd"))
chdir(cmd->argv[1]);
- else if(!strcmp(cmd->argv[0],"exit"))
+ else if (!strcmp(cmd->argv[0],"exit"))
exit(cmd->argc>1 ? atoi(cmd->argv[1]) : 0);
else {
int status;
pid_t pid=fork();
- if(!pid) {
+ if (!pid) {
run_applet_and_exit(cmd->argv[0],cmd->argc,cmd->argv);
execvp(cmd->argv[0],cmd->argv);
printf("No %s",cmd->argv[0]);
{
struct command *cmd=(struct command *)data;
- while(cmd->argc) free(cmd->argv[--cmd->argc]);
+ while (cmd->argc) free(cmd->argv[--cmd->argc]);
}
else {
unsigned cmdlen=0;
for (;;) {
- if(!f) putchar('$');
- if(1 > getline(&command, &cmdlen,f ? : stdin)) break;
+ if (!f) putchar('$');
+ if (1 > getline(&command, &cmdlen,f ? : stdin)) break;
handle(command);
}
#ifdef MSHDEBUG
int mshdbg = MSHDEBUG;
-#define DBGPRINTF(x) if(mshdbg>0)printf x
-#define DBGPRINTF0(x) if(mshdbg>0)printf x
-#define DBGPRINTF1(x) if(mshdbg>1)printf x
-#define DBGPRINTF2(x) if(mshdbg>2)printf x
-#define DBGPRINTF3(x) if(mshdbg>3)printf x
-#define DBGPRINTF4(x) if(mshdbg>4)printf x
-#define DBGPRINTF5(x) if(mshdbg>5)printf x
-#define DBGPRINTF6(x) if(mshdbg>6)printf x
-#define DBGPRINTF7(x) if(mshdbg>7)printf x
-#define DBGPRINTF8(x) if(mshdbg>8)printf x
-#define DBGPRINTF9(x) if(mshdbg>9)printf x
+#define DBGPRINTF(x) if (mshdbg>0) printf x
+#define DBGPRINTF0(x) if (mshdbg>0) printf x
+#define DBGPRINTF1(x) if (mshdbg>1) printf x
+#define DBGPRINTF2(x) if (mshdbg>2) printf x
+#define DBGPRINTF3(x) if (mshdbg>3) printf x
+#define DBGPRINTF4(x) if (mshdbg>4) printf x
+#define DBGPRINTF5(x) if (mshdbg>5) printf x
+#define DBGPRINTF6(x) if (mshdbg>6) printf x
+#define DBGPRINTF7(x) if (mshdbg>7) printf x
+#define DBGPRINTF8(x) if (mshdbg>8) printf x
+#define DBGPRINTF9(x) if (mshdbg>9) printf x
int mshdbg_rc = 0;
-#define RCPRINTF(x) if(mshdbg_rc)printf x
+#define RCPRINTF(x) if (mshdbg_rc) printf x
#else
&& (p[len]==',' || p[len]==0))
goto skip;
p = strchr(p,',');
- if(!p) break;
+ if (!p) break;
p++;
}
p = xasprintf("%s,%.*s", *oldopts, len, newopts);
#define MS_MOVE 8192
#endif
-dev_t rootdev;
+static dev_t rootdev;
// Recursively delete contents of rootfs.
// Recursively delete the contents of directories.
if (S_ISDIR(st.st_mode)) {
- if((dir = opendir(directory))) {
+ dir = opendir(directory);
+ if (dir) {
while ((d = readdir(dir))) {
- char *newdir=d->d_name;
+ char *newdir = d->d_name;
// Skip . and ..
- if(*newdir=='.' && (!newdir[1] || (newdir[1]=='.' && !newdir[2])))
+ if (*newdir=='.' && (!newdir[1] || (newdir[1]=='.' && !newdir[2])))
continue;
// Recurse to delete contents
int switch_root_main(int argc, char **argv);
int switch_root_main(int argc, char **argv)
{
- char *newroot, *console=NULL;
+ char *newroot, *console = NULL;
struct stat st1, st2;
struct statfs stfs;
// Change to new root directory and verify it's a different fs.
- newroot=argv[optind++];
+ newroot = argv[optind++];
if (chdir(newroot) || lstat(".", &st1) || lstat("/", &st2) ||
st1.st_dev == st2.st_dev)
{
bb_error_msg_and_die("bad newroot %s", newroot);
}
- rootdev=st2.st_dev;
+ rootdev = st2.st_dev;
// Additional sanity checks: we're about to rm -rf /, so be REALLY SURE
// we mean it. (I could make this a CONFIG option, but I would get email
- // from all the people who WILL eat their filesystemss.)
+ // from all the people who WILL eat their filesystems.)
if (lstat("/init", &st1) || !S_ISREG(st1.st_mode) || statfs("/", &stfs) ||
(stfs.f_type != RAMFS_MAGIC && stfs.f_type != TMPFS_MAGIC) ||
// recalculate "." and ".." links.
if (mount(".", "/", NULL, MS_MOVE, NULL) || chroot(".") || chdir("/"))
- bb_error_msg_and_die("moving root");
+ bb_error_msg_and_die("error moving root");
// If a new console specified, redirect stdin/stdout/stderr to that.
if (console) {
close(0);
- if (open(console, O_RDWR) < 0)
- bb_error_msg_and_die("bad console '%s'", console);
+ xopen(console, O_RDWR);
dup2(0, 1);
dup2(0, 2);
}