commit: 1aeeadeaa0405eaaeccdd4e2a897d2334adc1672
parent e5d7e7e39bd832c9ef2303b491443807db984548
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sun, 21 Apr 2024 14:03:10 +0200
Formatting
Diffstat:
4 files changed, 147 insertions(+), 166 deletions(-)
diff --git a/cmd/chmod.c b/cmd/chmod.c
@@ -165,8 +165,8 @@ int
main(int argc, char *argv[])
{
bool opt_R = false;
- int c = -1;
+ int c = -1;
while((c = getopt(argc, argv, ":cRv")) != -1)
{
switch(c)
@@ -224,4 +224,6 @@ getopt_out:
int ret = do_fchmodat(AT_FDCWD, argv[0], argv[i], argv[i], opt_R);
if(ret != 0) return ret;
}
+
+ return 0;
}
diff --git a/cmd/realpath.c b/cmd/realpath.c
@@ -22,9 +22,9 @@ usage()
int
main(int argc, char *argv[])
{
- int c = -1;
bool must_exists = false;
+ int c = -1;
while((c = getopt(argc, argv, ":Ee")) != -1)
{
switch(c)
diff --git a/cmd/test.c b/cmd/test.c
@@ -12,20 +12,18 @@
* This program is in the Public Domain.
*/
-#include <sys/types.h>
-#include <sys/stat.h>
-
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <inttypes.h>
+#include <locale.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
#include <unistd.h>
-#include <locale.h>
-
static void
error(const char *msg, ...)
{
@@ -53,15 +51,17 @@ error(const char *msg, ...)
operand ::= <any legal UNIX file name>
*/
-enum token_types {
- UNOP = 0x100,
- BINOP = 0x200,
- BUNOP = 0x300,
+enum token_types
+{
+ UNOP = 0x100,
+ BINOP = 0x200,
+ BUNOP = 0x300,
BBINOP = 0x400,
- PAREN = 0x500
+ PAREN = 0x500
};
-enum token {
+enum token
+{
EOI,
OPERAND,
FILRD = UNOP + 1,
@@ -106,10 +106,13 @@ enum token {
#define TOKEN_TYPE(token) ((token) & 0xff00)
-static const struct t_op {
+static const struct t_op
+{
char op_text[2];
short op_num;
-} ops1[] = {
+} ops1[] =
+ {
+ // clang-format off
{"=", STREQ},
{"<", STRLT},
{">", STRGT},
@@ -153,64 +156,65 @@ static const struct t_op {
{"nt", FILNT},
{"ot", FILOT},
{"ef", FILEQ},
+ // clang-format on
};
static int nargc;
static char **t_wp;
static int parenlevel;
-static int aexpr(enum token);
-static int binop(enum token);
-static int equalf(const char *, const char *);
-static int filstat(char *, enum token);
-static int getn(const char *);
-static intmax_t getq(const char *);
-static int intcmp(const char *, const char *);
-static int isunopoperand(void);
-static int islparenoperand(void);
-static int isrparenoperand(void);
-static int newerf(const char *, const char *);
-static int nexpr(enum token);
-static int oexpr(enum token);
-static int olderf(const char *, const char *);
-static int primary(enum token);
-static void syntax(const char *, const char *);
-static enum token t_lex(char *);
+static int aexpr(enum token);
+static int binop(enum token);
+static int equalf(const char *, const char *);
+static int filstat(char *, enum token);
+static int getn(const char *);
+static intmax_t getq(const char *);
+static int intcmp(const char *, const char *);
+static int isunopoperand(void);
+static int islparenoperand(void);
+static int isrparenoperand(void);
+static int newerf(const char *, const char *);
+static int nexpr(enum token);
+static int oexpr(enum token);
+static int olderf(const char *, const char *);
+static int primary(enum token);
+static void syntax(const char *, const char *);
+static enum token t_lex(char *);
int
main(int argc, char **argv)
{
- int res;
- char *p;
+ int res;
+ char *p;
- if ((p = strrchr(argv[0], '/')) == NULL)
+ if((p = strrchr(argv[0], '/')) == NULL)
p = argv[0];
else
p++;
- if (strcmp(p, "[") == 0) {
- if (strcmp(argv[--argc], "]") != 0)
- error("missing ]");
+ if(strcmp(p, "[") == 0)
+ {
+ if(strcmp(argv[--argc], "]") != 0) error("missing ]");
argv[argc] = NULL;
}
/* no expression => false */
- if (--argc <= 0)
- return 1;
+ if(--argc <= 0) return 1;
(void)setlocale(LC_CTYPE, "");
- nargc = argc;
- t_wp = &argv[1];
+ nargc = argc;
+ t_wp = &argv[1];
parenlevel = 0;
- if (nargc == 4 && strcmp(*t_wp, "!") == 0) {
+ if(nargc == 4 && strcmp(*t_wp, "!") == 0)
+ {
/* Things like ! "" -o x do not fit in the normal grammar. */
--nargc;
++t_wp;
res = oexpr(t_lex(*t_wp));
- } else
+ }
+ else
res = !oexpr(t_lex(*t_wp));
- if (--nargc > 0)
- syntax(*t_wp, "unexpected operator");
+ if(--nargc > 0) syntax(*t_wp, "unexpected operator");
return res;
}
@@ -219,7 +223,7 @@ static void
syntax(const char *op, const char *msg)
{
- if (op && *op)
+ if(op && *op)
error("%s: %s", op, msg);
else
error("%s", msg);
@@ -231,9 +235,8 @@ oexpr(enum token n)
int res;
res = aexpr(n);
- if (t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) == BOR)
- return oexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) ||
- res;
+ if(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) == BOR)
+ return oexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) || res;
t_wp--;
nargc++;
return res;
@@ -245,9 +248,8 @@ aexpr(enum token n)
int res;
res = nexpr(n);
- if (t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) == BAND)
- return aexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) &&
- res;
+ if(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) == BAND)
+ return aexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) && res;
t_wp--;
nargc++;
return res;
@@ -256,8 +258,7 @@ aexpr(enum token n)
static int
nexpr(enum token n)
{
- if (n == UNOT)
- return !nexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL));
+ if(n == UNOT) return !nexpr(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL));
return primary(n);
}
@@ -267,26 +268,27 @@ primary(enum token n)
enum token nn;
int res;
- if (n == EOI)
- return 0; /* missing expression */
- if (n == LPAREN) {
+ if(n == EOI) return 0; /* missing expression */
+ if(n == LPAREN)
+ {
parenlevel++;
- if ((nn = t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) ==
- RPAREN) {
+ if((nn = t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL)) == RPAREN)
+ {
parenlevel--;
- return 0; /* missing expression */
+ return 0; /* missing expression */
}
res = oexpr(nn);
- if (t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) != RPAREN)
+ if(t_lex(nargc > 0 ? (--nargc, *++t_wp) : NULL) != RPAREN)
syntax(NULL, "closing paren expected");
parenlevel--;
return res;
}
- if (TOKEN_TYPE(n) == UNOP) {
+ if(TOKEN_TYPE(n) == UNOP)
+ {
/* unary expression */
- if (--nargc == 0)
- syntax(NULL, "argument expected"); /* impossible */
- switch (n) {
+ if(--nargc == 0) syntax(NULL, "argument expected"); /* impossible */
+ switch(n)
+ {
case STREZ:
return strlen(*++t_wp) == 0;
case STRNZ:
@@ -299,8 +301,7 @@ primary(enum token n)
}
nn = t_lex(nargc > 0 ? t_wp[1] : NULL);
- if (TOKEN_TYPE(nn) == BINOP)
- return binop(nn);
+ if(TOKEN_TYPE(nn) == BINOP) return binop(nn);
return strlen(*t_wp) > 0;
}
@@ -311,12 +312,12 @@ binop(enum token n)
const char *opnd1, *op, *opnd2;
opnd1 = *t_wp;
- op = nargc > 0 ? (--nargc, *++t_wp) : NULL;
+ op = nargc > 0 ? (--nargc, *++t_wp) : NULL;
- if ((opnd2 = nargc > 0 ? (--nargc, *++t_wp) : NULL) == NULL)
- syntax(op, "argument expected");
+ if((opnd2 = nargc > 0 ? (--nargc, *++t_wp) : NULL) == NULL) syntax(op, "argument expected");
- switch (n) {
+ switch(n)
+ {
case STREQ:
return strcmp(opnd1, opnd2) == 0;
case STRNE:
@@ -338,11 +339,11 @@ binop(enum token n)
case INTLT:
return intcmp(opnd1, opnd2) < 0;
case FILNT:
- return newerf (opnd1, opnd2);
+ return newerf(opnd1, opnd2);
case FILOT:
- return olderf (opnd1, opnd2);
+ return olderf(opnd1, opnd2);
case FILEQ:
- return equalf (opnd1, opnd2);
+ return equalf(opnd1, opnd2);
default:
abort();
/* NOTREACHED */
@@ -354,10 +355,10 @@ filstat(char *nm, enum token mode)
{
struct stat s;
- if (mode == FILSYM ? lstat(nm, &s) : stat(nm, &s))
- return 0;
+ if(mode == FILSYM ? lstat(nm, &s) : stat(nm, &s)) return 0;
- switch (mode) {
+ switch(mode)
+ {
case FILRD:
return (access(nm, R_OK) == 0);
case FILWR:
@@ -403,9 +404,9 @@ find_op_1char(const struct t_op *op, const struct t_op *end, const char *s)
char c;
c = s[0];
- while (op != end) {
- if (c == *op->op_text)
- return op->op_num;
+ while(op != end)
+ {
+ if(c == *op->op_text) return op->op_num;
op++;
}
return OPERAND;
@@ -414,9 +415,9 @@ find_op_1char(const struct t_op *op, const struct t_op *end, const char *s)
static int
find_op_2char(const struct t_op *op, const struct t_op *end, const char *s)
{
- while (op != end) {
- if (s[0] == op->op_text[0] && s[1] == op->op_text[1])
- return op->op_num;
+ while(op != end)
+ {
+ if(s[0] == op->op_text[0] && s[1] == op->op_text[1]) return op->op_num;
op++;
}
return OPERAND;
@@ -425,16 +426,15 @@ find_op_2char(const struct t_op *op, const struct t_op *end, const char *s)
static int
find_op(const char *s)
{
- if (s[0] == '\0')
+ if(s[0] == '\0')
return OPERAND;
- else if (s[1] == '\0')
+ else if(s[1] == '\0')
return find_op_1char(ops1, (&ops1)[1], s);
- else if (s[2] == '\0')
- return s[0] == '-' ? find_op_1char(opsm1, (&opsm1)[1], s + 1) :
- find_op_2char(ops2, (&ops2)[1], s);
- else if (s[3] == '\0')
- return s[0] == '-' ? find_op_2char(opsm2, (&opsm2)[1], s + 1) :
- OPERAND;
+ else if(s[2] == '\0')
+ return s[0] == '-' ? find_op_1char(opsm1, (&opsm1)[1], s + 1)
+ : find_op_2char(ops2, (&ops2)[1], s);
+ else if(s[3] == '\0')
+ return s[0] == '-' ? find_op_2char(opsm2, (&opsm2)[1], s + 1) : OPERAND;
else
return OPERAND;
}
@@ -444,14 +444,13 @@ t_lex(char *s)
{
int num;
- if (s == NULL) {
+ if(s == NULL)
+ {
return EOI;
}
num = find_op(s);
- if (((TOKEN_TYPE(num) == UNOP || TOKEN_TYPE(num) == BUNOP)
- && isunopoperand()) ||
- (num == LPAREN && islparenoperand()) ||
- (num == RPAREN && isrparenoperand()))
+ if(((TOKEN_TYPE(num) == UNOP || TOKEN_TYPE(num) == BUNOP) && isunopoperand()) ||
+ (num == LPAREN && islparenoperand()) || (num == RPAREN && isrparenoperand()))
return OPERAND;
return num;
}
@@ -463,15 +462,12 @@ isunopoperand(void)
char *t;
int num;
- if (nargc == 1)
- return 1;
+ if(nargc == 1) return 1;
s = *(t_wp + 1);
- if (nargc == 2)
- return parenlevel == 1 && strcmp(s, ")") == 0;
- t = *(t_wp + 2);
+ if(nargc == 2) return parenlevel == 1 && strcmp(s, ")") == 0;
+ t = *(t_wp + 2);
num = find_op(s);
- return TOKEN_TYPE(num) == BINOP &&
- (parenlevel == 0 || t[0] != ')' || t[1] != '\0');
+ return TOKEN_TYPE(num) == BINOP && (parenlevel == 0 || t[0] != ')' || t[1] != '\0');
}
static int
@@ -480,13 +476,10 @@ islparenoperand(void)
char *s;
int num;
- if (nargc == 1)
- return 1;
+ if(nargc == 1) return 1;
s = *(t_wp + 1);
- if (nargc == 2)
- return parenlevel == 1 && strcmp(s, ")") == 0;
- if (nargc != 3)
- return 0;
+ if(nargc == 2) return parenlevel == 1 && strcmp(s, ")") == 0;
+ if(nargc != 3) return 0;
num = find_op(s);
return TOKEN_TYPE(num) == BINOP;
}
@@ -496,11 +489,9 @@ isrparenoperand(void)
{
char *s;
- if (nargc == 1)
- return 0;
+ if(nargc == 1) return 0;
s = *(t_wp + 1);
- if (nargc == 2)
- return parenlevel == 1 && strcmp(s, ")") == 0;
+ if(nargc == 2) return parenlevel == 1 && strcmp(s, ")") == 0;
return 0;
}
@@ -512,22 +503,18 @@ getn(const char *s)
long r;
errno = 0;
- r = strtol(s, &p, 10);
+ r = strtol(s, &p, 10);
- if (s == p)
- error("%s: bad number", s);
+ if(s == p) error("%s: bad number", s);
- if (errno != 0)
- error((errno == EINVAL) ? "%s: bad number" :
- "%s: out of range", s);
+ if(errno != 0) error((errno == EINVAL) ? "%s: bad number" : "%s: out of range", s);
- while (isspace((unsigned char)*p))
+ while(isspace((unsigned char)*p))
p++;
- if (*p)
- error("%s: bad number", s);
+ if(*p) error("%s: bad number", s);
- return (int) r;
+ return (int)r;
}
/* atoi with error detection and 64 bit range */
@@ -538,71 +525,59 @@ getq(const char *s)
intmax_t r;
errno = 0;
- r = strtoimax(s, &p, 10);
+ r = strtoimax(s, &p, 10);
- if (s == p)
- error("%s: bad number", s);
+ if(s == p) error("%s: bad number", s);
- if (errno != 0)
- error((errno == EINVAL) ? "%s: bad number" :
- "%s: out of range", s);
+ if(errno != 0) error((errno == EINVAL) ? "%s: bad number" : "%s: out of range", s);
- while (isspace((unsigned char)*p))
+ while(isspace((unsigned char)*p))
p++;
- if (*p)
- error("%s: bad number", s);
+ if(*p) error("%s: bad number", s);
return r;
}
static int
-intcmp (const char *s1, const char *s2)
+intcmp(const char *s1, const char *s2)
{
intmax_t q1, q2;
-
q1 = getq(s1);
q2 = getq(s2);
- if (q1 > q2)
- return 1;
+ if(q1 > q2) return 1;
- if (q1 < q2)
- return -1;
+ if(q1 < q2) return -1;
return 0;
}
static int
-newerf (const char *f1, const char *f2)
+newerf(const char *f1, const char *f2)
{
struct stat b1, b2;
- if (stat(f1, &b1) != 0 || stat(f2, &b2) != 0)
- return 0;
+ if(stat(f1, &b1) != 0 || stat(f2, &b2) != 0) return 0;
- if (b1.st_mtim.tv_sec > b2.st_mtim.tv_sec)
- return 1;
- if (b1.st_mtim.tv_sec < b2.st_mtim.tv_sec)
- return 0;
+ if(b1.st_mtim.tv_sec > b2.st_mtim.tv_sec) return 1;
+ if(b1.st_mtim.tv_sec < b2.st_mtim.tv_sec) return 0;
- return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec);
+ return (b1.st_mtim.tv_nsec > b2.st_mtim.tv_nsec);
}
static int
-olderf (const char *f1, const char *f2)
+olderf(const char *f1, const char *f2)
{
return (newerf(f2, f1));
}
static int
-equalf (const char *f1, const char *f2)
+equalf(const char *f1, const char *f2)
{
struct stat b1, b2;
- return (stat (f1, &b1) == 0 &&
- stat (f2, &b2) == 0 &&
- b1.st_dev == b2.st_dev &&
- b1.st_ino == b2.st_ino);
+ return (stat(f1, &b1) == 0 && stat(f2, &b2) == 0 && b1.st_dev == b2.st_dev &&
+ b1.st_ino == b2.st_ino);
}
diff --git a/cmd/uname.c b/cmd/uname.c
@@ -3,31 +3,34 @@
// SPDX-License-Identifier: MPL-2.0
#define _POSIX_C_SOURCE 200809L
+#include "../lib/bitmasks.h"
+
#include <errno.h>
-#include <string.h> // strerror
#include <stdio.h> // printf
#include <stdlib.h> // exit, abort
+#include <string.h> // strerror
#include <sys/utsname.h> // uname
-#include <unistd.h> // getopt
-
-#include "../lib/bitmasks.h"
+#include <unistd.h> // getopt
-enum uname_names {
- CMD_UNAME_SYSNAME = 1 << 1,
+enum uname_names
+{
+ CMD_UNAME_SYSNAME = 1 << 1,
CMD_UNAME_NODENAME = 1 << 2,
- CMD_UNAME_RELEASE = 1 << 3,
- CMD_UNAME_VERSION = 1 << 4,
- CMD_UNAME_MACHINE = 1 << 5,
- CMD_UNAME_ALL = CMD_UNAME_SYSNAME | CMD_UNAME_NODENAME | CMD_UNAME_RELEASE | CMD_UNAME_VERSION | CMD_UNAME_MACHINE,
+ CMD_UNAME_RELEASE = 1 << 3,
+ CMD_UNAME_VERSION = 1 << 4,
+ CMD_UNAME_MACHINE = 1 << 5,
+ CMD_UNAME_ALL = CMD_UNAME_SYSNAME | CMD_UNAME_NODENAME | CMD_UNAME_RELEASE | CMD_UNAME_VERSION |
+ CMD_UNAME_MACHINE,
};
-const char *fmt = "%s";
+const char *fmt = "%s";
enum uname_names names = 0;
static void
maybe_print_name(enum uname_names key, char *value)
{
- if(FIELD_MATCH(names, key)) {
+ if(FIELD_MATCH(names, key))
+ {
if(printf(fmt, value) < 0)
{
fprintf(stderr, "uname: Write Error: %s", strerror(errno));
@@ -86,7 +89,8 @@ main(int argc, char *argv[])
struct utsname name;
if(uname(&name) != 0)
{
- fprintf(stderr, "uname: Failed getting current system names via uname(): %s\n", strerror(errno));
+ fprintf(
+ stderr, "uname: Failed getting current system names via uname(): %s\n", strerror(errno));
return 1;
}