From 49f7c2be366f0b918b68a4cc8e4335ebab0a15ba Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Sun, 30 Apr 2023 02:12:02 -0400 Subject: fix ls and add start of ed --- src/shared.c | 127 ----------------------------------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 src/shared.c (limited to 'src/shared.c') diff --git a/src/shared.c b/src/shared.c deleted file mode 100644 index 240e364..0000000 --- a/src/shared.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "shared.h" - -#include -#include -#include -#include -#include -#include - -void error(const char* format, ...) { - va_list list; - va_start(list, format); - - vfprintf(stderr, format, list); - fprintf(stderr, "\n"); - exit(EXIT_FAILURE); -} - -FILE* get_file_s(const char* path, const char* type) { - struct stat s; - if (stat(path, &s) < 0) { - fprintf(stderr, "error: failed to read %s: %s\n", path, strerror(errno)); - return NULL; - } - if (!S_ISREG(s.st_mode)) { - fprintf(stderr, "error: %s is not a file\n", path); - return NULL; - } - FILE* file = fopen(path, type); - if (file == NULL) { - fprintf(stderr, "error: failed to open file %s: %s\n", path, strerror(errno)); - } - return file; -} - -FILE* get_file(const char* path, const char* type) { - if (streql("-", path)) return stdin; - FILE* file = get_file_s(path, type); - if (file == NULL) exit(EXIT_FAILURE); - return file; -} - -long int get_number(const char* text) { - char* end; - long int n = strtol(text, &end, 10); - if (text == end) { - error("error: %s is not a valid number", text); - } - return n; -} - -long int get_blkm(const char* text) { - char* end; - long int n = strtol(text, &end, 10); - if (text == end) { - error("error: %s is not a valid bkm", text); - } - if (*end == '\0') return n; - switch (*end) { - case 'K': - case 'k': - return n * 1024; - case 'B': - case 'b': - return n * 512; - case 'M': - case 'm': - return n * 1024 * 1204; - default: - error("error: invalid bkm type %c", *end); - } - // shouldnt get here anyways - return 0; -} - -bool streql(const char* a, const char* b) { - if (*a != *b) return false; - int n = 0; - while (true) { - if (*(a+n) != *(b+n)) return false; - if (*(a+n) == '\0') return true; - ++n; - } -} - -bool prefix(const char* pre, const char* str) { - return strncmp(pre, str, strlen(pre)) == 0; -} - -static char fs_types[5] = {'K','M','G','T','P'}; -void print_file_size(size_t bytes, char buf[5]) { - int index = 0; - float next = bytes; - while (true) { - if (next < 1000) { - break; - } - if (index == 5) { - printf("999P"); - return; - }; - next /= 1024; - index++; - } - - int n = snprintf(buf, 4, "%u", (int)(next+.5)); - if (index > 0) { - buf[n] = (fs_types[index - 1]); - n++; - } - buf[n] = '\0'; -} - -static char* months[12] = - {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; -void print_date_time(time_t mills, char buf[13]) { - struct tm* info; - info = localtime(&mills); - int n = snprintf(buf, 5, "%s ", months[info->tm_mon]); - - if (info->tm_mday < 10) { - buf[n] = ' '; - n++; - } - - snprintf(buf + n, 13 - n, "%d %02d:%02d ", info->tm_mday, info->tm_hour, info->tm_sec); -} -- cgit v1.2.3-freya