fixed build systes, add verbose flag to chmod, chown, chgrp

This commit is contained in:
Your Name 2023-12-20 20:30:00 +03:00
parent c90681ba2a
commit 76d1f36797
5 changed files with 40 additions and 14 deletions

0
bin/.gitignore vendored Normal file → Executable file
View File

View File

@ -4,7 +4,7 @@ if [ -z $PROJECT_DIR ]; then
fi
if [ -z $CFLAGS ]; then
CFLAGS="-pedantic -s -Os -flto -Werror -Wall -Wextra -I$PROJECT_DIR -I$PROJECT_DIR/include/libmu -lm"
CFLAGS="-pedantic -s -Os -flto -Werror -Wall -Wextra"
fi
if [ -z $CC ]; then
@ -25,9 +25,11 @@ for project in $projects; do
for i in $p; do
cd $PROJECT_DIR/$i
echo " * Compile" $i
env CC=$CC CFLAGS="$CFLAGS" OUTPUT="-o $PROJECT_DIR"/bin/$(basename $i) ./build.sh
env CC=$CC CFLAGS="$CFLAGS -I$PROJECT_DIR -I$PROJECT_DIR/include/libmu -lm" OUTPUT="-o $PROJECT_DIR"/bin/$(basename $i) ./build.sh
cd $PROJECT_DIR
done
echo
done
done
chmod -vR a+x bin/

View File

@ -12,6 +12,7 @@
unsigned int r_flag;
char *f_flag = "chgrp";
unsigned int H_flag;
unsigned int v_flag;
int change(const char *path, void *p) {
struct group *grp = (struct group *)p;
@ -27,13 +28,15 @@ int change(const char *path, void *p) {
return 1;
}
if (v_flag)
printf("chgrp: %s: changed group to %s\n", path, grp->gr_name);
return 0;
}
int main(int argc, char **argv) {
int opt;
while ((opt = getopt(argc, argv, "RfH")) != -1) {
while ((opt = getopt(argc, argv, "RfHv")) != -1) {
switch (opt) {
case 'R':
r_flag = 1;
@ -47,8 +50,12 @@ int main(int argc, char **argv) {
H_flag = 1;
break;
case 'v':
v_flag = 1;
break;
default:
printf("chgrp [group] [file1 file2...]\n\t[-H if a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n");
printf("chgrp [group] [file1 file2...]\n\t[-H if a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n");
return 0;
}
}

View File

@ -12,6 +12,7 @@
unsigned int r_flag;
char *f_flag = "chmod";
unsigned int H_flag;
unsigned int v_flag;
int change(const char *file, void *p) {
char *mode_arg = (char *)p;
@ -28,6 +29,9 @@ int change(const char *file, void *p) {
return 1;
}
if (v_flag)
printf("chmod: %s: changed mode to %d\n", file, mode );
return 0;
}
@ -47,7 +51,7 @@ int main(int argc, char **argv) {
}
int opt;
while ((opt = getopt(argc, argv, "RfH")) != -1) {
while ((opt = getopt(argc, argv, "RfHv")) != -1) {
switch (opt) {
case 'R':
r_flag = 1;
@ -61,8 +65,12 @@ int main(int argc, char **argv) {
H_flag = 1;
break;
case 'v':
v_flag = 1;
break;
default:
printf("chmod [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n");
printf("chmod [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n");
return 0;
}
}

View File

@ -14,19 +14,24 @@
unsigned int r_flag;
char *f_flag = "chown";
unsigned int H_flag;
unsigned int v_flag;
int (*chown_func)(const char *pathname, uid_t owner, gid_t group);
long gid;
long uid;
int change(const char *file, void *p) {
UNUSED(p);
if (chown_func(file, uid, gid)) {
int change(const char *path, void *p) {
char *name = (char *)p;
if (chown_func(path, uid, gid)) {
if (f_flag)
fprintf(stderr, "chown: unable to chown %s: %s\n", file, strerror(errno));
fprintf(stderr, "chown: unable to chown %s: %s\n", path, strerror(errno));
return 1;
}
if (v_flag)
printf("chown: %s: changed to %s\n", path, name);
return 0;
}
@ -74,7 +79,7 @@ int main(int argc, char **argv) {
chown_func = lchown;
int opt;
while ((opt = getopt(argc, argv, "RfH")) != -1) {
while ((opt = getopt(argc, argv, "RfHv")) != -1) {
switch (opt) {
case 'R':
r_flag = 1;
@ -89,8 +94,12 @@ int main(int argc, char **argv) {
chown_func = chown;
break;
case 'v':
v_flag = 1;
break;
default:
printf("chown USER[:[GRP]] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n");
printf("chown USER[:[GRP]] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n");
return 0;
}
}
@ -110,12 +119,12 @@ int main(int argc, char **argv) {
int ret = 0;
for (int i = 1; i < argc; i++) {
if (r_flag) {
if (mu_recurse(f_flag, H_flag, argv[i], NULL, change, change))
if (mu_recurse(f_flag, H_flag, argv[i], argv[0], change, change))
ret = 1;
}
else
change(argv[i], NULL);
change(argv[i], argv[0]);
}
return ret;