fixed. Support buulding in 1 binary
This commit is contained in:
parent
f8dd7660ae
commit
7d0207ace2
4
build.sh
4
build.sh
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
CFLAGS=-s -Os -Wextra -Wall -pedantic
|
||||||
|
CC=cc
|
||||||
|
|
||||||
for i in $(ls src); do
|
for i in $(ls src); do
|
||||||
echo "CC $i"
|
echo "CC $i"
|
||||||
cc -s -Os -Wextra -Wall -pedantic -I. -Iinclude src/$i -o bin/$(basename $i .c)
|
$CC $CFLAGS -Iconfigs -Iinclude src/$i -o bin/$(basename $i .c)
|
||||||
done
|
done
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef _CONFIG_H
|
#ifndef _CONFIG_H
|
||||||
#define _CONFIG_H
|
#define _CONFIG_H
|
||||||
|
|
||||||
/* (cat tee wc xargs rev split cp) text buffer */
|
/* (cat tee wc xargs rev split cp) text buffer */
|
||||||
#define BUF_SIZE 512 * 512
|
#define BUF_SIZE 32000
|
||||||
|
|
||||||
#ifdef _SHRED_C
|
#ifdef _SHRED_C
|
||||||
/* source of random (shred) */
|
/* source of random (shred) */
|
@ -1,4 +0,0 @@
|
|||||||
NAME="Plain Os"
|
|
||||||
ID=plainos
|
|
||||||
VERSION_ID=0.1
|
|
||||||
PRETTY_NAME="PlainOs/Linux 0.1 "
|
|
@ -1,9 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
echo "[*] Mounting..."
|
|
||||||
mount -a
|
|
||||||
|
|
||||||
echo "[*] Hostname..."
|
|
||||||
hostname -c /etc/hostname
|
|
||||||
|
|
||||||
cat /etc/motd
|
|
||||||
env TERM="linux" login
|
|
@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#FIXME!!!
|
|
||||||
|
|
||||||
echo "[*] Umounting..."
|
|
||||||
umount -a
|
|
||||||
|
|
||||||
echo "[*] Syncing..."
|
|
||||||
sync
|
|
||||||
|
|
||||||
echo "[*] Closing processes..."
|
|
||||||
kill -a -s TERM
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
echo "[*] Poweroff..."
|
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
unsigned long long parse_uint(const char *str) {
|
static unsigned long long parse_uint(const char *str) {
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
|
|
||||||
unsigned long long res = strtoull(str, &p, 0);
|
unsigned long long res = strtoull(str, &p, 0);
|
||||||
@ -32,7 +32,7 @@ unsigned long long parse_uint(const char *str) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long long mu_parse_duration(const char *arg) {
|
static unsigned long long mu_parse_duration(const char *arg) {
|
||||||
if (strchr(arg, '.')) {
|
if (strchr(arg, '.')) {
|
||||||
/* TODO */
|
/* TODO */
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path) {
|
static int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path) {
|
||||||
if (stat(path, stat_path)) {
|
if (stat(path, stat_path)) {
|
||||||
if (prog_name != NULL)
|
if (prog_name != NULL)
|
||||||
fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno));
|
fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno));
|
||||||
@ -17,7 +17,7 @@ int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path) {
|
static int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path) {
|
||||||
if (lstat(path, stat_path)) {
|
if (lstat(path, stat_path)) {
|
||||||
if (prog_name != NULL)
|
if (prog_name != NULL)
|
||||||
fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno));
|
fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno));
|
||||||
@ -28,7 +28,7 @@ int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mu_get_stats(const char *prog_name, int flag, const char *path, struct stat *stat_path) {
|
static int mu_get_stats(const char *prog_name, int flag, const char *path, struct stat *stat_path) {
|
||||||
if (flag)
|
if (flag)
|
||||||
return mu_get_lstat(prog_name, path, stat_path);
|
return mu_get_lstat(prog_name, path, stat_path);
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#define MU_HUMAN_BUF_SIZE 16
|
#define MU_HUMAN_BUF_SIZE 16
|
||||||
|
|
||||||
char *mu_humansize(off_t n, off_t block) {
|
static char *mu_humansize(off_t n, off_t block) {
|
||||||
static char mu_hs_buf[MU_HUMAN_BUF_SIZE + 1];
|
static char mu_hs_buf[MU_HUMAN_BUF_SIZE + 1];
|
||||||
memset(mu_hs_buf, '\0', sizeof(mu_hs_buf));
|
memset(mu_hs_buf, '\0', sizeof(mu_hs_buf));
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
char *mu_make_path(const char *prog_name, const char *src, const char *dst) {
|
static char *mu_make_path(const char *prog_name, const char *src, const char *dst) {
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
if (src == NULL) {
|
if (src == NULL) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
char *mu_mode_2_str(mode_t file_mode) {
|
static char *mu_mode_2_str(mode_t file_mode) {
|
||||||
static char mode[11];
|
static char mode[11];
|
||||||
snprintf(mode, sizeof(mode), "----------");
|
snprintf(mode, sizeof(mode), "----------");
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef _UTF8_STRLEN
|
#ifndef _UTF8_STRLEN
|
||||||
#define _UTF8_STRLEN
|
#define _UTF8_STRLEN
|
||||||
|
|
||||||
size_t mu_strlen(const char *s) {
|
static size_t mu_strlen(const char *s) {
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
while (*s++)
|
while (*s++)
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#define SU_PERM (S_ISUID | S_ISGID | S_ISVTX)
|
#define SU_PERM (S_ISUID | S_ISGID | S_ISVTX)
|
||||||
#define FULL_PERM (WR_PERM | EX_PERM | RD_PERM)
|
#define FULL_PERM (WR_PERM | EX_PERM | RD_PERM)
|
||||||
|
|
||||||
mode_t mu_parse_mode(const char *s, mode_t cur_mode) {
|
static mode_t mu_parse_mode(const char *s, mode_t cur_mode) {
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
|
|
||||||
mode_t mode = (mode_t)strtol(s, &p, 8);
|
mode_t mode = (mode_t)strtol(s, &p, 8);
|
||||||
|
@ -9,7 +9,7 @@ typedef struct {
|
|||||||
unsigned int val;
|
unsigned int val;
|
||||||
} MU_MOUNT_OPTS;
|
} MU_MOUNT_OPTS;
|
||||||
|
|
||||||
MU_MOUNT_OPTS mu_options[] = {
|
static MU_MOUNT_OPTS mu_options[] = {
|
||||||
{"defaults", NULL, NULL, 0},
|
{"defaults", NULL, NULL, 0},
|
||||||
{"ro", "rw", "Read only / Read and write", MS_RDONLY},
|
{"ro", "rw", "Read only / Read and write", MS_RDONLY},
|
||||||
{"remount", NULL, "Remount a mounted filesystem", MS_REMOUNT},
|
{"remount", NULL, "Remount a mounted filesystem", MS_REMOUNT},
|
||||||
@ -20,7 +20,7 @@ MU_MOUNT_OPTS mu_options[] = {
|
|||||||
{"noatime", "atime", "Disable/enable updates to inode access times", MS_NOATIME}
|
{"noatime", "atime", "Disable/enable updates to inode access times", MS_NOATIME}
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned long mu_parse_opts(char *str, char *data, const size_t data_size) {
|
static unsigned long mu_parse_opts(char *str, char *data, const size_t data_size) {
|
||||||
memset(data, '\0', data_size);
|
memset(data, '\0', data_size);
|
||||||
unsigned long opt = 0;
|
unsigned long opt = 0;
|
||||||
size_t data_len = 0;
|
size_t data_len = 0;
|
||||||
|
@ -46,7 +46,7 @@ struct mu_proc {
|
|||||||
long rsslim;
|
long rsslim;
|
||||||
};
|
};
|
||||||
|
|
||||||
int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) {
|
static int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) {
|
||||||
proc_s->uid = -1;
|
proc_s->uid = -1;
|
||||||
proc_s->gid = -1;
|
proc_s->gid = -1;
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mu_proc_stat(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) {
|
static int mu_proc_stat(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) {
|
||||||
char path[PATH_MAX + 1];
|
char path[PATH_MAX + 1];
|
||||||
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
void dec_salt(void) {
|
static void dec_salt(void) {
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < sizeof(MU_SALT_ENC) / sizeof(int); i++)
|
for (i = 0; i < sizeof(MU_SALT_ENC) / sizeof(int); i++)
|
||||||
MU_SALT_BUF[i] = (char)MU_SALT_ENC[i];
|
MU_SALT_BUF[i] = (char)MU_SALT_ENC[i];
|
||||||
@ -16,7 +16,7 @@ void dec_salt(void) {
|
|||||||
MU_SALT_BUF[i + 1] = '\0';
|
MU_SALT_BUF[i + 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
char *enc_password(const char *prog_name, const char *pass, const char *salt) {
|
static char *enc_password(const char *prog_name, const char *pass, const char *salt) {
|
||||||
if (salt == NULL)
|
if (salt == NULL)
|
||||||
dec_salt();
|
dec_salt();
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ char *enc_password(const char *prog_name, const char *pass, const char *salt) {
|
|||||||
return cpass;
|
return cpass;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pw_check(const char *prog_name, const struct passwd *pw, const char *pass) {
|
static int pw_check(const char *prog_name, const struct passwd *pw, const char *pass) {
|
||||||
if (pw->pw_passwd[0] == '\0' && pass[0] == '\0')
|
if (pw->pw_passwd[0] == '\0' && pass[0] == '\0')
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "make_path.h"
|
#include "make_path.h"
|
||||||
#include "get_stat.h"
|
#include "get_stat.h"
|
||||||
|
|
||||||
int mu_recurse(const char *restrict prog_name, int link_flag, const char *restrict path, void *restrict arg, int (*file_act)(const char *path, void *p), int (*dir_act)(const char *path, void *p)) {
|
static int mu_recurse(const char *restrict prog_name, int link_flag, const char *restrict path, void *restrict arg, int (*file_act)(const char *path, void *p), int (*dir_act)(const char *path, void *p)) {
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
if (mu_get_stats(prog_name, link_flag, path, &sb))
|
if (mu_get_stats(prog_name, link_flag, path, &sb))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
|
||||||
char *bname(char *str, const char *suffix) {
|
static char *bname(char *str, const char *suffix) {
|
||||||
char *base = basename(str);
|
char *base = basename(str);
|
||||||
|
|
||||||
if (suffix) {
|
if (suffix) {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
int cat(const char *path) {
|
static int cat(const char *path) {
|
||||||
int fd = STDIN_FILENO;
|
int fd = STDIN_FILENO;
|
||||||
|
|
||||||
if (strcmp(path, "-"))
|
if (strcmp(path, "-"))
|
||||||
|
10
src/chgrp.c
10
src/chgrp.c
@ -9,12 +9,12 @@
|
|||||||
#include "get_stat.h"
|
#include "get_stat.h"
|
||||||
#include "recurse.h"
|
#include "recurse.h"
|
||||||
|
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char *f_flag = "chgrp";
|
static char *f_flag = "chgrp";
|
||||||
char H_flag;
|
static char H_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
|
|
||||||
int change(const char *path, void *p) {
|
static int change(const char *path, void *p) {
|
||||||
struct group *grp = (struct group *)p;
|
struct group *grp = (struct group *)p;
|
||||||
|
|
||||||
struct stat stat_path;
|
struct stat stat_path;
|
||||||
|
10
src/chmod.c
10
src/chmod.c
@ -10,12 +10,12 @@
|
|||||||
#include "parse_mode.h"
|
#include "parse_mode.h"
|
||||||
#include "recurse.h"
|
#include "recurse.h"
|
||||||
|
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char *f_flag = "chmod";
|
static char *f_flag = "chmod";
|
||||||
char H_flag;
|
static char H_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
|
|
||||||
int change(const char *file, void *p) {
|
static int change(const char *file, void *p) {
|
||||||
char *mode_arg = (char *)p;
|
char *mode_arg = (char *)p;
|
||||||
|
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
18
src/chown.c
18
src/chown.c
@ -11,15 +11,15 @@
|
|||||||
#include "recurse.h"
|
#include "recurse.h"
|
||||||
#include "unused.h"
|
#include "unused.h"
|
||||||
|
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char *f_flag = "chown";
|
static char *f_flag = "chown";
|
||||||
char H_flag;
|
static char H_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
int (*chown_func)(const char *pathname, uid_t owner, gid_t group);
|
static int (*chown_func)(const char *pathname, uid_t owner, gid_t group);
|
||||||
long gid;
|
static long gid;
|
||||||
long uid;
|
static long uid;
|
||||||
|
|
||||||
int change(const char *path, void *p) {
|
static int change(const char *path, void *p) {
|
||||||
char *name = (char *)p;
|
char *name = (char *)p;
|
||||||
|
|
||||||
if (chown_func(path, uid, gid)) {
|
if (chown_func(path, uid, gid)) {
|
||||||
@ -35,7 +35,7 @@ int change(const char *path, void *p) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_owner(const char *arg) {
|
static void get_owner(const char *arg) {
|
||||||
char *group = strchr(arg, ':');
|
char *group = strchr(arg, ':');
|
||||||
|
|
||||||
char g_flag = 1;
|
char g_flag = 1;
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
char s_flag;
|
static char s_flag;
|
||||||
|
|
||||||
int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) {
|
static int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) {
|
||||||
if (fp1 == fp2)
|
if (fp1 == fp2)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
long parse_int(const char *str) {
|
static long parse_int(const char *str) {
|
||||||
char *ptr;
|
char *ptr;
|
||||||
long val = strtol(str, &ptr, 0);
|
long val = strtol(str, &ptr, 0);
|
||||||
if (*ptr || val < 0) {
|
if (*ptr || val < 0) {
|
||||||
@ -55,7 +55,7 @@ long parse_int(const char *str) {
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *file_open(const char *path) {
|
static FILE *file_open(const char *path) {
|
||||||
if (!strcmp(path, "-"))
|
if (!strcmp(path, "-"))
|
||||||
return stdin;
|
return stdin;
|
||||||
|
|
||||||
|
16
src/cp.c
16
src/cp.c
@ -12,12 +12,12 @@
|
|||||||
#include "get_stat.h"
|
#include "get_stat.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
char *f_flag = "cp";
|
static char *f_flag = "cp";
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
char L_flag;
|
static char L_flag;
|
||||||
|
|
||||||
char copy_reg(int mode, const char *src, const char *dst) {
|
static char copy_reg(int mode, const char *src, const char *dst) {
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
|
|
||||||
int ifd = open(src, O_RDONLY);
|
int ifd = open(src, O_RDONLY);
|
||||||
@ -52,7 +52,7 @@ CLOSE_OFD:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char copy_lnk(const char *src, const char *dst) {
|
static char copy_lnk(const char *src, const char *dst) {
|
||||||
char path[PATH_MAX + 1];
|
char path[PATH_MAX + 1];
|
||||||
ssize_t ret = readlink(src, path, sizeof(path));
|
ssize_t ret = readlink(src, path, sizeof(path));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -65,7 +65,7 @@ char copy_lnk(const char *src, const char *dst) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char copy(struct stat st, const char *src, const char *dst) {
|
static char copy(struct stat st, const char *src, const char *dst) {
|
||||||
if (v_flag)
|
if (v_flag)
|
||||||
printf("Copying '%s' to '%s'\n", src, dst);
|
printf("Copying '%s' to '%s'\n", src, dst);
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ char copy(struct stat st, const char *src, const char *dst) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cptree(const char *src, const char *dst) {
|
static int cptree(const char *src, const char *dst) {
|
||||||
struct stat src_stat;
|
struct stat src_stat;
|
||||||
if (mu_get_stats(f_flag, !L_flag, src, &src_stat))
|
if (mu_get_stats(f_flag, !L_flag, src, &src_stat))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
const char *fmts[] = {
|
static const char *fmts[] = {
|
||||||
"%R",
|
"%R",
|
||||||
"%T",
|
"%T",
|
||||||
"%d-%m",
|
"%d-%m",
|
||||||
@ -19,7 +19,7 @@ const char *fmts[] = {
|
|||||||
"%d-%m-%Y %T"
|
"%d-%m-%Y %T"
|
||||||
};
|
};
|
||||||
|
|
||||||
time_t parse_date(char *str) {
|
static time_t parse_date(char *str) {
|
||||||
time_t local = time(NULL);
|
time_t local = time(NULL);
|
||||||
struct tm *tm = localtime(&local);
|
struct tm *tm = localtime(&local);
|
||||||
|
|
||||||
|
14
src/dd.c
14
src/dd.c
@ -7,18 +7,18 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "human.h"
|
#include "human.h"
|
||||||
|
|
||||||
off_t infull, inpart;
|
static off_t infull, inpart;
|
||||||
off_t outfull, outpart;
|
static off_t outfull, outpart;
|
||||||
off_t tbytes;
|
static off_t tbytes;
|
||||||
|
|
||||||
void summary(void) {
|
static void summary(void) {
|
||||||
fprintf(stderr, "%jd+%jd records in\n", infull, inpart);
|
fprintf(stderr, "%jd+%jd records in\n", infull, inpart);
|
||||||
fprintf(stderr, "%jd+%jd records out\n", outfull, outpart);
|
fprintf(stderr, "%jd+%jd records out\n", outfull, outpart);
|
||||||
|
|
||||||
fprintf(stderr, "%s total bytes copied\n", mu_humansize(tbytes, 1024));
|
fprintf(stderr, "%s total bytes copied\n", mu_humansize(tbytes, 1024));
|
||||||
}
|
}
|
||||||
|
|
||||||
int openfile(int flag, char *path, int mode) {
|
static int openfile(int flag, char *path, int mode) {
|
||||||
if (!strcmp(path, "-")) {
|
if (!strcmp(path, "-")) {
|
||||||
if (flag)
|
if (flag)
|
||||||
return STDOUT_FILENO;
|
return STDOUT_FILENO;
|
||||||
@ -35,7 +35,7 @@ int openfile(int flag, char *path, int mode) {
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
off_t strtonum(char *str) {
|
static off_t strtonum(char *str) {
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
off_t res = strtoll(str, &p, 0);
|
off_t res = strtoll(str, &p, 0);
|
||||||
if (str != p) {
|
if (str != p) {
|
||||||
@ -67,7 +67,7 @@ off_t strtonum(char *str) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int copy(int fd, void *buf, off_t len, off_t max) {
|
static int copy(int fd, void *buf, off_t len, off_t max) {
|
||||||
off_t n = write(fd, buf, len);
|
off_t n = write(fd, buf, len);
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
fprintf(stderr, "dd: %s\n", strerror(errno));
|
fprintf(stderr, "dd: %s\n", strerror(errno));
|
||||||
|
10
src/df.c
10
src/df.c
@ -9,12 +9,12 @@
|
|||||||
#include "human.h"
|
#include "human.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
char a_flag;
|
static char a_flag;
|
||||||
char h_flag;
|
static char h_flag;
|
||||||
char *t_flag;
|
static char *t_flag;
|
||||||
off_t block = 1024;
|
static off_t block = 1024;
|
||||||
|
|
||||||
int print(const struct mntent *me) {
|
static int print(const struct mntent *me) {
|
||||||
|
|
||||||
struct statvfs disk;
|
struct statvfs disk;
|
||||||
if (!strcmp(me->mnt_fsname, "none"))
|
if (!strcmp(me->mnt_fsname, "none"))
|
||||||
|
12
src/du.c
12
src/du.c
@ -9,12 +9,12 @@
|
|||||||
#include "make_path.h"
|
#include "make_path.h"
|
||||||
#include "human.h"
|
#include "human.h"
|
||||||
|
|
||||||
char h_flag;
|
static char h_flag;
|
||||||
char s_flag;
|
static char s_flag;
|
||||||
char c_flag;
|
static char c_flag;
|
||||||
off_t total;
|
static off_t total;
|
||||||
|
|
||||||
void print(off_t size, const char *filename) {
|
static void print(off_t size, const char *filename) {
|
||||||
if (h_flag)
|
if (h_flag)
|
||||||
printf("%s\t%s\n", mu_humansize(size * 512, 1024), filename);
|
printf("%s\t%s\n", mu_humansize(size * 512, 1024), filename);
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ void print(off_t size, const char *filename) {
|
|||||||
printf("%jd\t%s\n", (intmax_t)size / 2, filename);
|
printf("%jd\t%s\n", (intmax_t)size / 2, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
off_t du(const char *path, int recurs_flag) {
|
static off_t du(const char *path, int recurs_flag) {
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
if (mu_get_lstat("du", path, &sb))
|
if (mu_get_lstat("du", path, &sb))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
char n_flag = 0;
|
static char n_flag = 0;
|
||||||
char e_flag = 0;
|
static char e_flag = 0;
|
||||||
|
|
||||||
void format(char *str) {
|
static void format(char *str) {
|
||||||
for (size_t i = 0; i < strlen(str); i++) {
|
for (size_t i = 0; i < strlen(str); i++) {
|
||||||
unsigned int c = str[i];
|
unsigned int c = str[i];
|
||||||
if (c == '\\') {
|
if (c == '\\') {
|
||||||
|
@ -8,10 +8,10 @@ typedef struct {
|
|||||||
char *pattern;
|
char *pattern;
|
||||||
regex_t rgex;
|
regex_t rgex;
|
||||||
} PATTERN;
|
} PATTERN;
|
||||||
PATTERN *regexs;
|
static PATTERN *regexs;
|
||||||
size_t r_size;
|
static size_t r_size;
|
||||||
|
|
||||||
int addpattern(char *str) {
|
static int addpattern(char *str) {
|
||||||
if (regexs == NULL) {
|
if (regexs == NULL) {
|
||||||
regexs = malloc(sizeof(PATTERN));
|
regexs = malloc(sizeof(PATTERN));
|
||||||
if (regexs == NULL) {
|
if (regexs == NULL) {
|
||||||
|
10
src/head.c
10
src/head.c
@ -8,11 +8,11 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
char c_flag;
|
static char c_flag;
|
||||||
char n_flag;
|
static char n_flag;
|
||||||
|
|
||||||
long parse_long(const char *str) {
|
static long parse_long(const char *str) {
|
||||||
char *ptr;
|
char *ptr;
|
||||||
long ret = strtol(str, &ptr, 0);
|
long ret = strtol(str, &ptr, 0);
|
||||||
if (*ptr) {
|
if (*ptr) {
|
||||||
@ -23,7 +23,7 @@ long parse_long(const char *str) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int print(const char *file, FILE *fp, long lines, long bytes) {
|
static int print(const char *file, FILE *fp, long lines, long bytes) {
|
||||||
if (v_flag)
|
if (v_flag)
|
||||||
printf(HEAD_FMT, file);
|
printf(HEAD_FMT, file);
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
void readcfg(const char *cfg, char *buf, size_t len) {
|
static void readcfg(const char *cfg, char *buf, size_t len) {
|
||||||
FILE *fp = fopen(cfg, "r");
|
FILE *fp = fopen(cfg, "r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "hostname: %s\n", strerror(errno));
|
fprintf(stderr, "hostname: %s\n", strerror(errno));
|
||||||
|
18
src/id.c
18
src/id.c
@ -9,13 +9,13 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
char g_flag;
|
static char g_flag;
|
||||||
char G_flag;
|
static char G_flag;
|
||||||
char n_flag;
|
static char n_flag;
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char u_flag;
|
static char u_flag;
|
||||||
|
|
||||||
int print_groups(const struct passwd *pwd, const char *fmt, const int flag) {
|
static int print_groups(const struct passwd *pwd, const char *fmt, const int flag) {
|
||||||
gid_t groups[NGROUPS_MAX];
|
gid_t groups[NGROUPS_MAX];
|
||||||
int ngroups = NGROUPS_MAX;
|
int ngroups = NGROUPS_MAX;
|
||||||
if (getgrouplist(pwd->pw_name, pwd->pw_gid, groups, &ngroups) < 0)
|
if (getgrouplist(pwd->pw_name, pwd->pw_gid, groups, &ngroups) < 0)
|
||||||
@ -38,7 +38,7 @@ int print_groups(const struct passwd *pwd, const char *fmt, const int flag) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ids(uid_t uid, struct passwd *pwd) {
|
static int ids(uid_t uid, struct passwd *pwd) {
|
||||||
if (u_flag) {
|
if (u_flag) {
|
||||||
if (n_flag)
|
if (n_flag)
|
||||||
printf("%s", pwd->pw_name);
|
printf("%s", pwd->pw_name);
|
||||||
@ -54,7 +54,7 @@ int ids(uid_t uid, struct passwd *pwd) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int def_ids(uid_t uid, struct passwd *pwd) {
|
static int def_ids(uid_t uid, struct passwd *pwd) {
|
||||||
printf("uid=%d(%s) gid=%d", uid, pwd->pw_name, pwd->pw_gid);
|
printf("uid=%d(%s) gid=%d", uid, pwd->pw_name, pwd->pw_gid);
|
||||||
struct group *grp = getgrgid(pwd->pw_gid);
|
struct group *grp = getgrgid(pwd->pw_gid);
|
||||||
if (grp)
|
if (grp)
|
||||||
@ -67,7 +67,7 @@ int def_ids(uid_t uid, struct passwd *pwd) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usage(int sig) {
|
static void usage(int sig) {
|
||||||
puts("id [gGurn] [user]\n\t-u User ID\n\t-g Group ID\n\t-G Supplementary group IDs\n\t-n Print names instead of numbers\n\t-r Print real ID instead of effective ID");
|
puts("id [gGurn] [user]\n\t-u User ID\n\t-g Group ID\n\t-G Supplementary group IDs\n\t-n Print names instead of numbers\n\t-r Print real ID instead of effective ID");
|
||||||
exit(sig);
|
exit(sig);
|
||||||
}
|
}
|
||||||
|
67
src/init.c
67
src/init.c
@ -1,67 +0,0 @@
|
|||||||
#define INIT
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <sys/reboot.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
void poweroff(int sig) {
|
|
||||||
printf("Syncing...\n");
|
|
||||||
|
|
||||||
sync();
|
|
||||||
sleep(5);
|
|
||||||
|
|
||||||
if (sig == SIGUSR1)
|
|
||||||
reboot(RB_POWER_OFF);
|
|
||||||
|
|
||||||
else if (sig == SIGUSR2)
|
|
||||||
reboot(RB_AUTOBOOT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void execute(char *argv[]) {
|
|
||||||
if (fork() == 0) {
|
|
||||||
setsid();
|
|
||||||
execvp(argv[0], argv);
|
|
||||||
|
|
||||||
fprintf(stderr, "init: Failed to run %s\nRebooting...\n", argv[0]);
|
|
||||||
poweroff(SIGUSR2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
if (getpid() != 1) {
|
|
||||||
fprintf(stderr, "init: PID Must be 1\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
chdir("/");
|
|
||||||
printf("%s\n", INIT_MSG);
|
|
||||||
|
|
||||||
sigset_t set;
|
|
||||||
sigemptyset(&set);
|
|
||||||
sigaddset(&set, SIGUSR1);
|
|
||||||
sigaddset(&set, SIGUSR2);
|
|
||||||
|
|
||||||
signal(SIGTERM, SIG_IGN);
|
|
||||||
signal(SIGINT, SIG_IGN);
|
|
||||||
|
|
||||||
/* Start main service */
|
|
||||||
sigprocmask(SIG_BLOCK, &set, NULL);
|
|
||||||
execute(INIT_START);
|
|
||||||
|
|
||||||
/* Sig handler */
|
|
||||||
int sig = 0;
|
|
||||||
while (1) {
|
|
||||||
if (sigwait(&set, &sig) == 0)
|
|
||||||
if (sig == SIGUSR2 || sig == SIGUSR1) {
|
|
||||||
execute(INIT_POWEROFF);
|
|
||||||
poweroff(sig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -12,7 +12,7 @@ typedef struct {
|
|||||||
int signal;
|
int signal;
|
||||||
} SIG;
|
} SIG;
|
||||||
|
|
||||||
SIG signals[] = {
|
static SIG signals[] = {
|
||||||
{"HUP", SIGHUP},
|
{"HUP", SIGHUP},
|
||||||
{"INT", SIGINT},
|
{"INT", SIGINT},
|
||||||
{"QUIT", SIGQUIT},
|
{"QUIT", SIGQUIT},
|
||||||
@ -34,7 +34,7 @@ SIG signals[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int parse_sig(char *arg) {
|
static int parse_sig(char *arg) {
|
||||||
int sig = atoi(arg);
|
int sig = atoi(arg);
|
||||||
if (sig > 0 && sig <= NSIG)
|
if (sig > 0 && sig <= NSIG)
|
||||||
return sig;
|
return sig;
|
||||||
@ -49,7 +49,7 @@ int parse_sig(char *arg) {
|
|||||||
return SIGTERM;
|
return SIGTERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
int my_kill(pid_t pid, int signal) {
|
static int my_kill(pid_t pid, int signal) {
|
||||||
if (kill(pid, signal)) {
|
if (kill(pid, signal)) {
|
||||||
fprintf(stderr, "kill: %d: %s\n", pid, strerror(errno));
|
fprintf(stderr, "kill: %d: %s\n", pid, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
|
8
src/ln.c
8
src/ln.c
@ -4,11 +4,11 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "make_path.h"
|
#include "make_path.h"
|
||||||
|
|
||||||
char s_flag;
|
static char s_flag;
|
||||||
char f_flag;
|
static char f_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
|
|
||||||
int ln(const char *src, const char *dst) {
|
static int ln(const char *src, const char *dst) {
|
||||||
if (f_flag)
|
if (f_flag)
|
||||||
if (unlink(dst) && v_flag)
|
if (unlink(dst) && v_flag)
|
||||||
fprintf(stderr, "ln: removed %s\n", dst);
|
fprintf(stderr, "ln: removed %s\n", dst);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
|
#define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
|
||||||
|
|
||||||
int hide_input(int fd, int flag) {
|
static int hide_input(int fd, int flag) {
|
||||||
struct termios term;
|
struct termios term;
|
||||||
if (tcgetattr(fd, &term) < 0)
|
if (tcgetattr(fd, &term) < 0)
|
||||||
return 1;
|
return 1;
|
||||||
@ -28,7 +28,7 @@ int hide_input(int fd, int flag) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void login(const struct passwd *pw) {
|
static void login(const struct passwd *pw) {
|
||||||
char *shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell;
|
char *shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell;
|
||||||
|
|
||||||
setenv("HOME", pw->pw_dir, 1);
|
setenv("HOME", pw->pw_dir, 1);
|
||||||
@ -45,7 +45,7 @@ void login(const struct passwd *pw) {
|
|||||||
execlp(shell, shell, "-l", NULL);
|
execlp(shell, shell, "-l", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct passwd *proccess_input(char *hostname) {
|
static struct passwd *proccess_input(char *hostname) {
|
||||||
static char user[512];
|
static char user[512];
|
||||||
static char psswd[512];
|
static char psswd[512];
|
||||||
|
|
||||||
|
54
src/ls.c
54
src/ls.c
@ -20,22 +20,22 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "human.h"
|
#include "human.h"
|
||||||
|
|
||||||
char O_flag;
|
static char O_flag;
|
||||||
char a_flag;
|
static char a_flag;
|
||||||
char l_flag;
|
static char l_flag;
|
||||||
char F_flag;
|
static char F_flag;
|
||||||
char c_flag;
|
static char c_flag;
|
||||||
char R_flag;
|
static char R_flag;
|
||||||
char d_flag;
|
static char d_flag;
|
||||||
char L_flag;
|
static char L_flag;
|
||||||
char h_flag;
|
static char h_flag;
|
||||||
char s_flag;
|
static char s_flag;
|
||||||
char i_flag;
|
static char i_flag;
|
||||||
char p_flag;
|
static char p_flag;
|
||||||
char nul_flag;
|
static char nul_flag;
|
||||||
|
|
||||||
int sortd(const void *p1, const void *p2);
|
static int sortd(const void *p1, const void *p2);
|
||||||
int (*sorter)(const void *p1, const void *p2) = sortd;
|
static int (*sorter)(const void *p1, const void *p2) = sortd;
|
||||||
|
|
||||||
struct d_node {
|
struct d_node {
|
||||||
/* basename */
|
/* basename */
|
||||||
@ -49,7 +49,7 @@ struct d_node {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Work with dir */
|
/* Work with dir */
|
||||||
struct d_node *stat_file(char *filename, const int lfile) {
|
static struct d_node *stat_file(char *filename, const int lfile) {
|
||||||
/* lfile its flag. 1 if passed file from list_one() */
|
/* lfile its flag. 1 if passed file from list_one() */
|
||||||
struct d_node *file = malloc(sizeof(struct d_node));
|
struct d_node *file = malloc(sizeof(struct d_node));
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
@ -73,7 +73,7 @@ struct d_node *stat_file(char *filename, const int lfile) {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dfree(struct d_node **dir, const size_t files) {
|
static void dfree(struct d_node **dir, const size_t files) {
|
||||||
for (size_t i = 0; i < files; i++) {
|
for (size_t i = 0; i < files; i++) {
|
||||||
if (dir[i] != NULL && dir[i]->full_name != NULL)
|
if (dir[i] != NULL && dir[i]->full_name != NULL)
|
||||||
free(dir[i]->full_name);
|
free(dir[i]->full_name);
|
||||||
@ -85,7 +85,7 @@ void dfree(struct d_node **dir, const size_t files) {
|
|||||||
free(dir);
|
free(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *ret) {
|
static struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *ret) {
|
||||||
DIR *dp = opendir(path);
|
DIR *dp = opendir(path);
|
||||||
if (dp == NULL) {
|
if (dp == NULL) {
|
||||||
fprintf(stderr, "ls: %s: %s\n", path, strerror(errno));
|
fprintf(stderr, "ls: %s: %s\n", path, strerror(errno));
|
||||||
@ -134,7 +134,7 @@ struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *r
|
|||||||
return dn;
|
return dn;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_date(const time_t mtime) {
|
static char *get_date(const time_t mtime) {
|
||||||
static char date[100];
|
static char date[100];
|
||||||
|
|
||||||
strftime(date, sizeof(date), "%b %d %H:%M", localtime(&mtime));
|
strftime(date, sizeof(date), "%b %d %H:%M", localtime(&mtime));
|
||||||
@ -143,7 +143,7 @@ char *get_date(const time_t mtime) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Print */
|
/* Print */
|
||||||
int print(const struct d_node *node) {
|
static int print(const struct d_node *node) {
|
||||||
char suf = ' ';
|
char suf = ' ';
|
||||||
char *color = "";
|
char *color = "";
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ int print(const struct d_node *node) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int col_print(struct d_node **node, const size_t files, const struct winsize w) {
|
static int col_print(struct d_node **node, const size_t files, const struct winsize w) {
|
||||||
/* Get max len */
|
/* Get max len */
|
||||||
size_t maxlen = 0;
|
size_t maxlen = 0;
|
||||||
for (size_t i = 0; i < files; i++) {
|
for (size_t i = 0; i < files; i++) {
|
||||||
@ -288,7 +288,7 @@ int col_print(struct d_node **node, const size_t files, const struct winsize w)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int struct_print(struct d_node **dir, const size_t files, const struct winsize w) {
|
static int struct_print(struct d_node **dir, const size_t files, const struct winsize w) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/* pipe print */
|
/* pipe print */
|
||||||
@ -309,20 +309,20 @@ int struct_print(struct d_node **dir, const size_t files, const struct winsize w
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Sort */
|
/* Sort */
|
||||||
int sortt(const void *p1, const void *p2) {
|
static int sortt(const void *p1, const void *p2) {
|
||||||
return (*(struct d_node **)p2)->stats.st_mtime - (*(struct d_node **)p1)->stats.st_mtime;
|
return (*(struct d_node **)p2)->stats.st_mtime - (*(struct d_node **)p1)->stats.st_mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sorts(const void *p1, const void *p2) {
|
static int sorts(const void *p1, const void *p2) {
|
||||||
return (*(struct d_node **)p2)->stats.st_size - (*(struct d_node **)p1)->stats.st_size;
|
return (*(struct d_node **)p2)->stats.st_size - (*(struct d_node **)p1)->stats.st_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sortd(const void *p1, const void *p2) {
|
static int sortd(const void *p1, const void *p2) {
|
||||||
return strcmp((*(struct d_node **)p1)->full_name, (*(struct d_node **)p2)->full_name);
|
return strcmp((*(struct d_node **)p1)->full_name, (*(struct d_node **)p2)->full_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ls */
|
/* Ls */
|
||||||
int ls_dir(const char *dir_name, const int label, const struct winsize w) {
|
static int ls_dir(const char *dir_name, const int label, const struct winsize w) {
|
||||||
if (dir_name == NULL)
|
if (dir_name == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ int ls_dir(const char *dir_name, const int label, const struct winsize w) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ls_files(int argc, char **argv, const struct winsize w) {
|
static int ls_files(int argc, char **argv, const struct winsize w) {
|
||||||
size_t files = 0;
|
size_t files = 0;
|
||||||
struct d_node **file = malloc(sizeof(struct d_node *));
|
struct d_node **file = malloc(sizeof(struct d_node *));
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
|
10
src/mkdir.c
10
src/mkdir.c
@ -7,11 +7,11 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "parse_mode.h"
|
#include "parse_mode.h"
|
||||||
|
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
char p_flag;
|
static char p_flag;
|
||||||
mode_t mode = 0777;
|
static mode_t mode = 0777;
|
||||||
|
|
||||||
int do_mkdir(const char *path) {
|
static int do_mkdir(const char *path) {
|
||||||
if (mkdir(path, mode)) {
|
if (mkdir(path, mode)) {
|
||||||
if (p_flag)
|
if (p_flag)
|
||||||
return 0;
|
return 0;
|
||||||
@ -26,7 +26,7 @@ int do_mkdir(const char *path) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int do_parents(const char *path) {
|
static int do_parents(const char *path) {
|
||||||
if (path[0] == '.' || path[0] == '/')
|
if (path[0] == '.' || path[0] == '/')
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "parse_mode.h"
|
#include "parse_mode.h"
|
||||||
|
|
||||||
long parse_long(const char *str) {
|
static long parse_long(const char *str) {
|
||||||
char *ptr = NULL;
|
char *ptr = NULL;
|
||||||
long value = strtol(str, &ptr, 10);
|
long value = strtol(str, &ptr, 10);
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "make_path.h"
|
#include "make_path.h"
|
||||||
|
|
||||||
int make_temp_dir(char *tmp) {
|
static int make_temp_dir(char *tmp) {
|
||||||
if (!mkdtemp(tmp)) {
|
if (!mkdtemp(tmp)) {
|
||||||
if (errno == EINVAL)
|
if (errno == EINVAL)
|
||||||
fprintf(stderr, "mktemp: template does not end in exactly 'XXXXX': %s\n", tmp);
|
fprintf(stderr, "mktemp: template does not end in exactly 'XXXXX': %s\n", tmp);
|
||||||
@ -19,7 +19,7 @@ int make_temp_dir(char *tmp) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_suffix(const char *str) {
|
static int get_suffix(const char *str) {
|
||||||
size_t len = strlen(str);
|
size_t len = strlen(str);
|
||||||
for (size_t i = len - 1; i > 0; i--)
|
for (size_t i = len - 1; i > 0; i--)
|
||||||
if (str[i] == 'X')
|
if (str[i] == 'X')
|
||||||
@ -28,7 +28,7 @@ int get_suffix(const char *str) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int make_temp_file(char *tmp) {
|
static int make_temp_file(char *tmp) {
|
||||||
if (!strstr(tmp, "XXXXXX")) {
|
if (!strstr(tmp, "XXXXXX")) {
|
||||||
fprintf(stderr, "mktemp: too few X's in template: %s\n", tmp);
|
fprintf(stderr, "mktemp: too few X's in template: %s\n", tmp);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "parse_mount.h"
|
#include "parse_mount.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
int do_mount(const char *src, const char *dst, const char *fs_type, unsigned long opt, char *data) {
|
static int do_mount(const char *src, const char *dst, const char *fs_type, unsigned long opt, char *data) {
|
||||||
if (mount(src, dst, fs_type, opt, data) < 0) {
|
if (mount(src, dst, fs_type, opt, data) < 0) {
|
||||||
fprintf(stderr, "mount: %s: %s\n", src, strerror(errno));
|
fprintf(stderr, "mount: %s: %s\n", src, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
@ -19,7 +19,7 @@ int do_mount(const char *src, const char *dst, const char *fs_type, unsigned lon
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_fstab(void) {
|
static int parse_fstab(void) {
|
||||||
FILE *fp = setmntent(MOUNT_CFG, "r");
|
FILE *fp = setmntent(MOUNT_CFG, "r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "mount: %s\n", strerror(errno));
|
fprintf(stderr, "mount: %s\n", strerror(errno));
|
||||||
@ -39,7 +39,7 @@ int parse_fstab(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int print_mounts(void) {
|
static int print_mounts(void) {
|
||||||
FILE *fp = fopen(MOUNT_LIST, "r");
|
FILE *fp = fopen(MOUNT_LIST, "r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "mount: %s\n", strerror(errno));
|
fprintf(stderr, "mount: %s\n", strerror(errno));
|
||||||
@ -56,7 +56,7 @@ int print_mounts(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_opts(void) {
|
static void print_opts(void) {
|
||||||
for (size_t i = 0; i < sizeof(mu_options) / sizeof(mu_options[0]); i++) {
|
for (size_t i = 0; i < sizeof(mu_options) / sizeof(mu_options[0]); i++) {
|
||||||
printf("\t%s", mu_options[i].opt);
|
printf("\t%s", mu_options[i].opt);
|
||||||
if (mu_options[i].notopt != NULL)
|
if (mu_options[i].notopt != NULL)
|
||||||
|
4
src/mv.c
4
src/mv.c
@ -6,9 +6,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "make_path.h"
|
#include "make_path.h"
|
||||||
char *f_flag = "mv";
|
static char *f_flag = "mv";
|
||||||
|
|
||||||
int move(const char *src, const char *dst) {
|
static int move(const char *src, const char *dst) {
|
||||||
char *copy = strdup(src);
|
char *copy = strdup(src);
|
||||||
if (!copy)
|
if (!copy)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int printvars(int len, char **names) {
|
static int printvars(int len, char **names) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
|
2
src/ps.c
2
src/ps.c
@ -9,7 +9,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
|
||||||
int pscan(const char *pid) {
|
static int pscan(const char *pid) {
|
||||||
char path[PATH_MAX + 1];
|
char path[PATH_MAX + 1];
|
||||||
|
|
||||||
/* Arguments */
|
/* Arguments */
|
||||||
|
80
src/que.c
80
src/que.c
@ -1,5 +1,4 @@
|
|||||||
/* Safe variant of kilo editor */
|
/* Safe variant of kilo editor */
|
||||||
/* Based on the web-tutorial and contain many edits */
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -14,11 +13,11 @@
|
|||||||
#define CTRL_KEY(k) ((k) & 0x1f)
|
#define CTRL_KEY(k) ((k) & 0x1f)
|
||||||
#define TAB_SIZE 8
|
#define TAB_SIZE 8
|
||||||
|
|
||||||
struct termios orig_termios;
|
static struct termios orig_termios;
|
||||||
struct winsize ws;
|
static struct winsize ws;
|
||||||
|
|
||||||
char *scr_buf;
|
static char *scr_buf;
|
||||||
size_t scr_buf_size;
|
static size_t scr_buf_size;
|
||||||
|
|
||||||
struct row {
|
struct row {
|
||||||
char *buf;
|
char *buf;
|
||||||
@ -28,34 +27,29 @@ struct row {
|
|||||||
size_t rlen;
|
size_t rlen;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct row *row_s;
|
static struct row *row_s;
|
||||||
size_t row_size;
|
static size_t row_size;
|
||||||
|
|
||||||
/* Cursors */
|
/* Cursors */
|
||||||
unsigned int curx;
|
static unsigned int curx;
|
||||||
unsigned int cury;
|
static unsigned int cury;
|
||||||
unsigned int renx;
|
static unsigned int renx;
|
||||||
|
|
||||||
unsigned int rowoff;
|
static unsigned int rowoff;
|
||||||
unsigned int coloff;
|
static unsigned int coloff;
|
||||||
|
|
||||||
char *file_path;
|
static char *file_path;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
FAILED_SAVE = 1,
|
FAILED_SAVE = 1,
|
||||||
SUCCESS_SAVE,
|
SUCCESS_SAVE,
|
||||||
MARK
|
MARK
|
||||||
};
|
};
|
||||||
char status_type;
|
static char status_type;
|
||||||
char modified_flag;
|
static char modified_flag;
|
||||||
|
|
||||||
/* for mark */
|
|
||||||
char mark_flag;
|
|
||||||
unsigned int curx2;
|
|
||||||
unsigned int cury2;
|
|
||||||
|
|
||||||
/* Cleaners */
|
/* Cleaners */
|
||||||
void bufFree(void) {
|
static void bufFree(void) {
|
||||||
if (scr_buf != NULL)
|
if (scr_buf != NULL)
|
||||||
free(scr_buf);
|
free(scr_buf);
|
||||||
|
|
||||||
@ -63,7 +57,7 @@ void bufFree(void) {
|
|||||||
scr_buf_size = 0;
|
scr_buf_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fileBufFree(void) {
|
static void fileBufFree(void) {
|
||||||
if (row_s != NULL) {
|
if (row_s != NULL) {
|
||||||
if (row_size > 0)
|
if (row_size > 0)
|
||||||
for (size_t i = 0; i < row_size; i++) {
|
for (size_t i = 0; i < row_size; i++) {
|
||||||
@ -81,7 +75,7 @@ void fileBufFree(void) {
|
|||||||
row_size = 0;
|
row_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void die(int ret, char *msg) {
|
static void die(int ret, char *msg) {
|
||||||
write(STDOUT_FILENO, "\033[H\033[J", 6);
|
write(STDOUT_FILENO, "\033[H\033[J", 6);
|
||||||
|
|
||||||
bufFree();
|
bufFree();
|
||||||
@ -94,7 +88,7 @@ void die(int ret, char *msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Save */
|
/* Save */
|
||||||
char *buf2str(size_t *len) {
|
static char *buf2str(size_t *len) {
|
||||||
size_t totalen = 0;
|
size_t totalen = 0;
|
||||||
for (size_t i = 0; i < row_size; i++)
|
for (size_t i = 0; i < row_size; i++)
|
||||||
totalen += row_s[i].len + 1;
|
totalen += row_s[i].len + 1;
|
||||||
@ -117,7 +111,7 @@ char *buf2str(size_t *len) {
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void save(void) {
|
static void save(void) {
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
char *buf = buf2str(&len);
|
char *buf = buf2str(&len);
|
||||||
|
|
||||||
@ -148,7 +142,7 @@ BAD_SAVE:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Funcs */
|
/* Funcs */
|
||||||
void bufAppend(const char *str, const size_t len) {
|
static void bufAppend(const char *str, const size_t len) {
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -173,7 +167,7 @@ void bufAppend(const char *str, const size_t len) {
|
|||||||
scr_buf_size += len;
|
scr_buf_size += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
int updateRenderStr(const unsigned int row) {
|
static int updateRenderStr(const unsigned int row) {
|
||||||
int tabs = 0;
|
int tabs = 0;
|
||||||
for (size_t i = 0; i < row_s[row].len; i++)
|
for (size_t i = 0; i < row_s[row].len; i++)
|
||||||
if (row_s[row].buf[i] == '\t')
|
if (row_s[row].buf[i] == '\t')
|
||||||
@ -205,7 +199,7 @@ int updateRenderStr(const unsigned int row) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int addRow(const unsigned int at, const char *buf, const size_t len) {
|
static int addRow(const unsigned int at, const char *buf, const size_t len) {
|
||||||
struct row *row_s2 = realloc(row_s, sizeof(struct row) * (row_size + 1));
|
struct row *row_s2 = realloc(row_s, sizeof(struct row) * (row_size + 1));
|
||||||
if (row_s2 == NULL)
|
if (row_s2 == NULL)
|
||||||
return 1;
|
return 1;
|
||||||
@ -230,7 +224,7 @@ int addRow(const unsigned int at, const char *buf, const size_t len) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void readFile(const char *path) {
|
static void readFile(const char *path) {
|
||||||
row_s = malloc(sizeof(struct row));
|
row_s = malloc(sizeof(struct row));
|
||||||
if (row_s == NULL)
|
if (row_s == NULL)
|
||||||
die(1, "malloc in readFIle");
|
die(1, "malloc in readFIle");
|
||||||
@ -259,7 +253,7 @@ void readFile(const char *path) {
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void insertChar(char c) {
|
static void insertChar(char c) {
|
||||||
if ((size_t)cury == row_size) {
|
if ((size_t)cury == row_size) {
|
||||||
if (addRow(row_size, "", 0)) {
|
if (addRow(row_size, "", 0)) {
|
||||||
save();
|
save();
|
||||||
@ -290,7 +284,7 @@ void insertChar(char c) {
|
|||||||
curx++;
|
curx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void insertNewline(void) {
|
static void insertNewline(void) {
|
||||||
if (curx == 0) {
|
if (curx == 0) {
|
||||||
if (addRow(cury, "", 0)) {
|
if (addRow(cury, "", 0)) {
|
||||||
save();
|
save();
|
||||||
@ -327,7 +321,7 @@ void insertNewline(void) {
|
|||||||
curx = 0;
|
curx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void delChar(void) {
|
static void delChar(void) {
|
||||||
if ((curx == 0 && cury == 0) || cury == (unsigned int)row_size)
|
if ((curx == 0 && cury == 0) || cury == (unsigned int)row_size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -379,17 +373,13 @@ void delChar(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd(void) {
|
|
||||||
/* Execute internal cmds */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Terminal */
|
/* Terminal */
|
||||||
void DRawMode(void) {
|
static void DRawMode(void) {
|
||||||
if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios) < 0)
|
if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios) < 0)
|
||||||
die(1, "tcsetattr");
|
die(1, "tcsetattr");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ERawMode(void) {
|
static void ERawMode(void) {
|
||||||
if (tcgetattr(STDIN_FILENO, &orig_termios) < 0)
|
if (tcgetattr(STDIN_FILENO, &orig_termios) < 0)
|
||||||
die(1, "tcgetattr");
|
die(1, "tcgetattr");
|
||||||
|
|
||||||
@ -406,7 +396,7 @@ void ERawMode(void) {
|
|||||||
die(1, "tcsetattr");
|
die(1, "tcsetattr");
|
||||||
}
|
}
|
||||||
|
|
||||||
void winsize(void) {
|
static void winsize(void) {
|
||||||
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
|
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
|
||||||
die(1, "ioctl");
|
die(1, "ioctl");
|
||||||
|
|
||||||
@ -416,7 +406,7 @@ void winsize(void) {
|
|||||||
ws.ws_row--;
|
ws.ws_row--;
|
||||||
}
|
}
|
||||||
|
|
||||||
void statusBar(const char *path) {
|
static void statusBar(const char *path) {
|
||||||
char info[124];
|
char info[124];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
@ -437,7 +427,7 @@ void statusBar(const char *path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Keyboard */
|
/* Keyboard */
|
||||||
char readkey(void) {
|
static char readkey(void) {
|
||||||
char c;
|
char c;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -451,7 +441,7 @@ char readkey(void) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void moveCursor(char c) {
|
static void moveCursor(char c) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'A':
|
case 'A':
|
||||||
if (cury != 0)
|
if (cury != 0)
|
||||||
@ -527,7 +517,7 @@ void moveCursor(char c) {
|
|||||||
curx = row_s[cury].len;
|
curx = row_s[cury].len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void keyboard(void) {
|
static void keyboard(void) {
|
||||||
char key = readkey();
|
char key = readkey();
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case '\033':
|
case '\033':
|
||||||
@ -542,10 +532,6 @@ void keyboard(void) {
|
|||||||
insertNewline();
|
insertNewline();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CTRL_KEY('f'):
|
|
||||||
cmd();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CTRL_KEY('q'):
|
case CTRL_KEY('q'):
|
||||||
die(0, NULL);
|
die(0, NULL);
|
||||||
break;
|
break;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
|
|
||||||
int renice(int which, int who, int adj) {
|
static int renice(int which, int who, int adj) {
|
||||||
adj += getpriority(which, who);
|
adj += getpriority(which, who);
|
||||||
|
|
||||||
if (setpriority(which, who, adj)) {
|
if (setpriority(which, who, adj)) {
|
||||||
|
14
src/rm.c
14
src/rm.c
@ -10,11 +10,11 @@
|
|||||||
#include "recurse.h"
|
#include "recurse.h"
|
||||||
#include "unused.h"
|
#include "unused.h"
|
||||||
|
|
||||||
char *f_flag = "rm";
|
static char *f_flag = "rm";
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char v_flag;
|
static char v_flag;
|
||||||
|
|
||||||
int verbose(const char *path) {
|
static int verbose(const char *path) {
|
||||||
if (v_flag) {
|
if (v_flag) {
|
||||||
fprintf(stderr, "rm: remove %s? [y/n] ", path);
|
fprintf(stderr, "rm: remove %s? [y/n] ", path);
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
@ -33,12 +33,12 @@ int verbose(const char *path) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_error(const char *path) {
|
static void handle_error(const char *path) {
|
||||||
if (f_flag)
|
if (f_flag)
|
||||||
fprintf(stderr, "rm: %s: %s\n", path, strerror(errno));
|
fprintf(stderr, "rm: %s: %s\n", path, strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
int rm(const char *path, void *p) {
|
static int rm(const char *path, void *p) {
|
||||||
UNUSED(p);
|
UNUSED(p);
|
||||||
|
|
||||||
if (verbose(path) && remove(path) < 0) {
|
if (verbose(path) && remove(path) < 0) {
|
||||||
@ -49,7 +49,7 @@ int rm(const char *path, void *p) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rmd(const char *path, void *p) {
|
static int rmd(const char *path, void *p) {
|
||||||
UNUSED(p);
|
UNUSED(p);
|
||||||
|
|
||||||
if (verbose(path) && rmdir(path) < 0) {
|
if (verbose(path) && rmdir(path) < 0) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
double parse_double(const char *str) {
|
static double parse_double(const char *str) {
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
double res = strtod(str, &ptr);
|
double res = strtod(str, &ptr);
|
||||||
|
@ -18,4 +18,5 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
setsid();
|
setsid();
|
||||||
execvp(argv[1], argv + 1);
|
execvp(argv[1], argv + 1);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
10
src/shred.c
10
src/shred.c
@ -10,12 +10,12 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
char f_flag;
|
static char f_flag;
|
||||||
char u_flag;
|
static char u_flag;
|
||||||
char z_flag;
|
static char z_flag;
|
||||||
int n_loops = 3;
|
static int n_loops = 3;
|
||||||
|
|
||||||
int shred(int rand_fd, int fd) {
|
static int shred(int rand_fd, int fd) {
|
||||||
|
|
||||||
/* Get size */
|
/* Get size */
|
||||||
off_t size = lseek(fd, 0, SEEK_END);
|
off_t size = lseek(fd, 0, SEEK_END);
|
||||||
|
80
src/spark.c
80
src/spark.c
@ -1,80 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <float.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
int parse_double(const char *str, double *res) {
|
|
||||||
char *ptr;
|
|
||||||
|
|
||||||
*res = strtod(str, &ptr);
|
|
||||||
if (*ptr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void print(double diff, char *str, double min) {
|
|
||||||
double val = 0;
|
|
||||||
if (!parse_double(str, &val))
|
|
||||||
return;
|
|
||||||
|
|
||||||
putchar('\xe2');
|
|
||||||
putchar('\x96');
|
|
||||||
putchar('\x81' + (int)round((val - min + 1) / diff * 7));
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
if (argc == 1) {
|
|
||||||
printf("spark: missing operands\nspark [num1] [num2]...\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int r_flag = 0;
|
|
||||||
char ret = '\n';
|
|
||||||
|
|
||||||
double min = DBL_MAX;
|
|
||||||
double max = DBL_MIN;
|
|
||||||
|
|
||||||
/* Remove programm name */
|
|
||||||
argv++;
|
|
||||||
argc--;
|
|
||||||
|
|
||||||
for (int i = 0; i < argc; i++) {
|
|
||||||
double val = 0;
|
|
||||||
if (strstr(argv[i], "r"))
|
|
||||||
r_flag = 1;
|
|
||||||
|
|
||||||
else if (strstr(argv[i], "n"))
|
|
||||||
ret = '\r';
|
|
||||||
|
|
||||||
else if (parse_double(argv[i], &val)) {
|
|
||||||
if (val > max)
|
|
||||||
max = val;
|
|
||||||
|
|
||||||
if (val < min)
|
|
||||||
min = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
|
||||||
printf("spark [rn] [num1 num2...]\n\t-n Use \\r\n\t-r Reverse]\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
double diff = max - min + 1;
|
|
||||||
if (diff < 1)
|
|
||||||
diff = 1;
|
|
||||||
|
|
||||||
if (r_flag)
|
|
||||||
for (int i = argc - 1; i >= 0; i--)
|
|
||||||
print(diff, argv[i], min);
|
|
||||||
|
|
||||||
else
|
|
||||||
for (int i = 0; i < argc; i++)
|
|
||||||
print(diff, argv[i], min);
|
|
||||||
|
|
||||||
putchar(ret);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -6,7 +6,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
FILE *next_file(FILE *old, int x, int slen, char *prefix) {
|
static FILE *next_file(FILE *old, int x, int slen, char *prefix) {
|
||||||
if (old != NULL)
|
if (old != NULL)
|
||||||
fclose(old);
|
fclose(old);
|
||||||
|
|
||||||
|
14
src/su.c
14
src/su.c
@ -12,11 +12,11 @@
|
|||||||
|
|
||||||
#define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
|
#define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
|
||||||
|
|
||||||
char *c_flag = NULL;
|
static char *c_flag = NULL;
|
||||||
char *s_flag = NULL;
|
static char *s_flag = NULL;
|
||||||
char p_flag;
|
static char p_flag;
|
||||||
|
|
||||||
int hide_input(int fd, int flag) {
|
static int hide_input(int fd, int flag) {
|
||||||
struct termios term;
|
struct termios term;
|
||||||
if (tcgetattr(fd, &term) < 0)
|
if (tcgetattr(fd, &term) < 0)
|
||||||
return 1;
|
return 1;
|
||||||
@ -33,7 +33,7 @@ int hide_input(int fd, int flag) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void su(const struct passwd *pw) {
|
static void su(const struct passwd *pw) {
|
||||||
char *shell = s_flag;
|
char *shell = s_flag;
|
||||||
if (s_flag == NULL)
|
if (s_flag == NULL)
|
||||||
shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell;
|
shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell;
|
||||||
@ -53,7 +53,7 @@ void su(const struct passwd *pw) {
|
|||||||
execlp(shell, shell, "-l", NULL);
|
execlp(shell, shell, "-l", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int password(const struct passwd *pw) {
|
static int password(const struct passwd *pw) {
|
||||||
static char psswd[512];
|
static char psswd[512];
|
||||||
|
|
||||||
printf("Password: ");
|
printf("Password: ");
|
||||||
@ -81,7 +81,7 @@ int password(const struct passwd *pw) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void endwin(int sig) {
|
static void endwin(int sig) {
|
||||||
UNUSED(sig);
|
UNUSED(sig);
|
||||||
|
|
||||||
hide_input(STDIN_FILENO, 0);
|
hide_input(STDIN_FILENO, 0);
|
||||||
|
13
src/touch.c
13
src/touch.c
@ -1,3 +1,4 @@
|
|||||||
|
#define _XOPEN_SOURCE
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -7,11 +8,11 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
char c_flag;
|
static char c_flag;
|
||||||
char m_flag;
|
static char m_flag;
|
||||||
char a_flag;
|
static char a_flag;
|
||||||
|
|
||||||
int setdate(const char *path, const time_t date, char flag) {
|
static int setdate(const char *path, const time_t date, char flag) {
|
||||||
struct utimbuf new_time;
|
struct utimbuf new_time;
|
||||||
|
|
||||||
if (flag || a_flag)
|
if (flag || a_flag)
|
||||||
@ -28,7 +29,7 @@ int setdate(const char *path, const time_t date, char flag) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int touch(const char *path, const time_t date) {
|
static int touch(const char *path, const time_t date) {
|
||||||
|
|
||||||
if (!c_flag) {
|
if (!c_flag) {
|
||||||
int fd = open(path, O_CREAT | O_RDONLY, 0666);
|
int fd = open(path, O_CREAT | O_RDONLY, 0666);
|
||||||
@ -55,7 +56,7 @@ int touch(const char *path, const time_t date) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
time_t parse_date(char *str) {
|
static time_t parse_date(char *str) {
|
||||||
char *fmt = NULL;
|
char *fmt = NULL;
|
||||||
switch (strlen(str)) {
|
switch (strlen(str)) {
|
||||||
case 8:
|
case 8:
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
int parse_fstab(unsigned long flag) {
|
static int parse_fstab(unsigned long flag) {
|
||||||
FILE *fp = setmntent(MOUNT_CFG, "r");
|
FILE *fp = setmntent(MOUNT_CFG, "r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "umount: %s\n", strerror(errno));
|
fprintf(stderr, "umount: %s\n", strerror(errno));
|
||||||
|
@ -40,10 +40,10 @@ enum {
|
|||||||
COUNT
|
COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
char flags[COUNT];
|
static char flags[COUNT];
|
||||||
unsigned int counter = 0;
|
static unsigned int counter = 0;
|
||||||
|
|
||||||
void print(const char *msg) {
|
static void print(const char *msg) {
|
||||||
if (counter > 0 && !flags[ALL])
|
if (counter > 0 && !flags[ALL])
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
|
|
||||||
@ -129,4 +129,5 @@ int main(int argc, char **argv) {
|
|||||||
print("unknow");
|
print("unknow");
|
||||||
|
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
36
src/wc.c
36
src/wc.c
@ -7,21 +7,21 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
/* cmd arguments l - lines c - bytes w - words */
|
/* cmd arguments l - lines c - bytes w - words */
|
||||||
unsigned int l_flag;
|
static size_t l_flag;
|
||||||
unsigned int c_flag;
|
static size_t c_flag;
|
||||||
unsigned int w_flag;
|
static size_t w_flag;
|
||||||
unsigned int t_flag;
|
static size_t t_flag;
|
||||||
|
|
||||||
unsigned int words;
|
static size_t words;
|
||||||
unsigned int bytes;
|
static size_t bytes;
|
||||||
unsigned int lines;
|
static size_t lines;
|
||||||
|
|
||||||
/* Total */
|
/* Total */
|
||||||
unsigned int twords;
|
static size_t twords;
|
||||||
unsigned int tbytes;
|
static size_t tbytes;
|
||||||
unsigned int tlines;
|
static size_t tlines;
|
||||||
|
|
||||||
void count(const int fd) {
|
static void count(const int fd) {
|
||||||
char buf[BUF_SIZE + 1];
|
char buf[BUF_SIZE + 1];
|
||||||
off_t n = 0;
|
off_t n = 0;
|
||||||
|
|
||||||
@ -45,20 +45,20 @@ void count(const int fd) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tbytes += bytes;
|
tbytes += (size_t)bytes;
|
||||||
twords += words;
|
twords += (size_t)words;
|
||||||
tlines += lines;
|
tlines += (size_t)lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_count(const char *path, unsigned int plines, unsigned int pwords, unsigned int pbytes) {
|
static void print_count(const char *path, size_t plines, size_t pwords, size_t pbytes) {
|
||||||
if (l_flag)
|
if (l_flag)
|
||||||
printf("%7u ", plines);
|
printf("%7zu ", plines);
|
||||||
|
|
||||||
if (w_flag)
|
if (w_flag)
|
||||||
printf(" %7u", pwords);
|
printf(" %7zu", pwords);
|
||||||
|
|
||||||
if (c_flag)
|
if (c_flag)
|
||||||
printf(" %7u", pbytes);
|
printf(" %7zu", pbytes);
|
||||||
|
|
||||||
printf(" %s\n", path);
|
printf(" %s\n", path);
|
||||||
}
|
}
|
||||||
|
28
src/xargs.c
28
src/xargs.c
@ -12,15 +12,15 @@
|
|||||||
#define ARG_MAX 10000
|
#define ARG_MAX 10000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int args;
|
static int args;
|
||||||
char *cmd[ARG_MAX + 1];
|
static char *cmd[ARG_MAX + 1];
|
||||||
|
|
||||||
char *I_flag;
|
static char *I_flag;
|
||||||
char t_flag;
|
static char t_flag;
|
||||||
char r_flag;
|
static char r_flag;
|
||||||
char nl_flag;
|
static char nl_flag;
|
||||||
int n_flag;
|
static int n_flag;
|
||||||
size_t s_flag;
|
static size_t s_flag;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NORMAL,
|
NORMAL,
|
||||||
@ -34,7 +34,7 @@ enum {
|
|||||||
QUOTE
|
QUOTE
|
||||||
};
|
};
|
||||||
|
|
||||||
void clear_cmd(void) {
|
static void clear_cmd(void) {
|
||||||
for (int i = 0; i < args; i++) {
|
for (int i = 0; i < args; i++) {
|
||||||
if (cmd[i] != NULL) {
|
if (cmd[i] != NULL) {
|
||||||
free(cmd[i]);
|
free(cmd[i]);
|
||||||
@ -45,7 +45,7 @@ void clear_cmd(void) {
|
|||||||
args = 0;
|
args = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Iflag_push(const char *str, char **arg) {
|
static int Iflag_push(const char *str, char **arg) {
|
||||||
size_t arg_len = strlen(*arg);
|
size_t arg_len = strlen(*arg);
|
||||||
size_t str_len = strlen(str);
|
size_t str_len = strlen(str);
|
||||||
size_t Iflag_len = strlen(I_flag);
|
size_t Iflag_len = strlen(I_flag);
|
||||||
@ -68,7 +68,7 @@ int Iflag_push(const char *str, char **arg) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int add_arg(const char *str, size_t chars, int flag) {
|
static int add_arg(const char *str, size_t chars, int flag) {
|
||||||
if (args >= ARG_MAX)
|
if (args >= ARG_MAX)
|
||||||
return ERROR;
|
return ERROR;
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ int add_arg(const char *str, size_t chars, int flag) {
|
|||||||
return NORMAL;
|
return NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_correct(char c) {
|
static int is_correct(char c) {
|
||||||
if (nl_flag)
|
if (nl_flag)
|
||||||
return c == '\0';
|
return c == '\0';
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ int is_correct(char c) {
|
|||||||
return isspace(c);
|
return isspace(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
int xargs(void) {
|
static int xargs(void) {
|
||||||
size_t arg_size = 0;
|
size_t arg_size = 0;
|
||||||
char *arg = malloc(1);
|
char *arg = malloc(1);
|
||||||
if (arg == NULL) {
|
if (arg == NULL) {
|
||||||
@ -197,7 +197,7 @@ int xargs(void) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spawn(void) {
|
static int spawn(void) {
|
||||||
if (t_flag) {
|
if (t_flag) {
|
||||||
for (int i = 0; i < args; i++)
|
for (int i = 0; i < args; i++)
|
||||||
fprintf(stderr, "%s ", cmd[i]);
|
fprintf(stderr, "%s ", cmd[i]);
|
||||||
|
Loading…
Reference in New Issue
Block a user