diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-14 15:25:26 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-14 15:25:26 +0200 |
commit | ff7771d4fb524148e21045b911a869041b9271af (patch) | |
tree | 53c621c63e3893c7f0c376338106a89017669c33 | |
parent | f101b728d9315f430d900df1e4afbb2da4da8252 (diff) | |
download | mblaze-ff7771d4fb524148e21045b911a869041b9271af.tar.gz mblaze-ff7771d4fb524148e21045b911a869041b9271af.tar.xz mblaze-ff7771d4fb524148e21045b911a869041b9271af.zip |
remove some obsolete stuff
-rw-r--r-- | fastls.c | 97 | ||||
-rw-r--r-- | foo822.c | 368 |
2 files changed, 0 insertions, 465 deletions
diff --git a/fastls.c b/fastls.c deleted file mode 100644 index c1111c3..0000000 --- a/fastls.c +++ /dev/null @@ -1,97 +0,0 @@ -#define _GNU_SOURCE -#include <dirent.h> /* Defines DT_* constants */ -#include <fcntl.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/stat.h> -#include <sys/syscall.h> - -#define handle_error(msg) \ - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -struct linux_dirent64 { - ino64_t d_ino; /* 64-bit inode number */ - off64_t d_off; /* 64-bit offset to next structure */ - unsigned short d_reclen; /* Size of this dirent */ - unsigned char d_type; /* File type */ - char d_name[]; /* Filename (null-terminated) */ -}; - - -#define BUF_SIZE 1024000 - -void flagsort(char *s) { - int i, j; - if (!s[0]) - return; - // adapted insertion sort from http://stackoverflow.com/a/2789530 - for (i = 1; s[i]; i++) { - char t = s[i]; - for (j = i; j >= 1 && t < s[j-1]; j--) - s[j] = s[j-1]; - s[j] = t; - } -} - -int -main(int argc, char *argv[]) -{ - int fd, nread; - char buf[BUF_SIZE]; - struct linux_dirent64 *d; - int bpos; - char d_type; - - fd = open(argc > 1 ? argv[1] : ".", O_RDONLY | O_DIRECTORY); - if (fd == -1) - handle_error("open"); - - while (1) { - nread = syscall(SYS_getdents64, fd, buf, BUF_SIZE); - if (nread == -1) - handle_error("getdents64"); - - if (nread == 0) - break; - - printf("--------------- nread=%d ---------------\n", nread); - printf("inode# file type d_reclen d_off d_name\n"); - for (bpos = 0; bpos < nread;) { - d = (struct linux_dirent64 *) (buf + bpos); - if (d->d_type != DT_REG) - goto next; - if (d->d_name[0] == '.') - goto next; - char *flags = strstr(d->d_name, ":2,"); - if (!flags) - goto next; -// if (strncmp(d->d_name, "1467836925_0.1439.juno,U=87588,FMD5=7e33429f656f1", strlen("1467836925_0.1439.juno,U=87588,FMD5=7e33429f656f1")-1)) -// goto next; -// printf("%s\n", d->d_name); - flagsort(flags+3); - printf("%s\n", d->d_name); -// if (!strchr(flags, 'S')) -// printf("%s\n", d->d_name); - -// goto next; - -/* - printf("%-10s ", (d_type == DT_REG) ? "regular" : - (d_type == DT_DIR) ? "directory" : - (d_type == DT_FIFO) ? "FIFO" : - (d_type == DT_SOCK) ? "socket" : - (d_type == DT_LNK) ? "symlink" : - (d_type == DT_BLK) ? "block dev" : - (d_type == DT_CHR) ? "char dev" : "???"); - printf("%4d %10lld %s\n", d->d_reclen, - (long long) d->d_off, d->d_name); -*/ -next: - bpos += d->d_reclen; - } - } - - exit(EXIT_SUCCESS); -} diff --git a/foo822.c b/foo822.c deleted file mode 100644 index 0db82dd..0000000 --- a/foo822.c +++ /dev/null @@ -1,368 +0,0 @@ -#include <ctype.h> -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> - -#undef getc -#define getc getc_unlocked - -#ifndef __GLIBC__ -#include "/home/chris/src/musl/src/internal/stdio_impl.h" -#endif - -FILE *input; - -enum { - EOL = -2, - EOH = -3 -}; - - -// WSP = SP / HTAB -#define iswsp(c) (((c) == ' ' || (c) == '\t')) - -// CRLF is \n, LF is \n, just CR is ' ', -// end of file is EOF, end of line is EOL, end of header is EOH, -// CRLFCR is EOH, CRLFCRLF is EOH, CRCR is EOH -int -mgetch() -{ - int c, d; - - switch(c = getc(input)) { - case EOF: - return EOF; - case '\r': - d = getc(input); - if (d != '\n') { - // stray CR - ungetc(d, input); - return ' '; - } - /* fallthru */ - case '\n': - d = getc(input); - if (d == '\r') { - d = getc(input); - if (d != '\n' && d != '\r') - return d; - } - if (d == '\n' || d == '\r') { - return EOH; - } else if (iswsp(d)) { - // line continuation - return ' '; - } else { - // end of line - ungetc(d, input); - return EOL; - } - default: - return c; - } -} - -char * -strip(char *t) -{ - char *b, *e; - for (b = t; *b && iswsp(*b); b++); - for (e = b; *e && !iswsp(*e); e++); - *e = 0; - return b; -} - -void skipws() { - int c; - do { - c = getc(input); - } while (c != EOF && iswsp(c)); - ungetc(c, input); -} - -char * -parse_header() -{ - static char hdr[1024]; - static const char *hdrend = hdr + sizeof hdr; - int c; - - char *s = hdr; - *s = 0; - while ((c = mgetch()) > 0 && s < hdrend) { - if (c < 0) - return 0; - if (c == ':') { - *s = 0; - skipws(); - return strip(hdr); - } - *s++ = tolower(c); - } - return 0; -} - -char * -parse_value() -{ - static char value[1024]; - static const char *valend = value + sizeof value; - - int c; - char *s = value; - - *s = 0; - - while ((c = mgetch()) != EOF && s < valend) { - if (c == EOH) { - ungetc('\n', input); - return value; - } - if (c == EOL) { - *s = 0; - return value; - } - *s++ = c; - } - return value; -} - -int -parse_tok(char **t) -{ - static char tok[16]; - static const char *tokend = tok + sizeof tok; - - int c; - - char *s = tok; - *s = 0; - *t = 0; - - c = mgetch(); - while (iswsp(c)) - c = mgetch(); - while (c > 0 && s < tokend) { -// printf("%c/%d ", c, c); - if (iswsp(c)) { - skipws(); - *s = 0; - *t = tok; - break; - } - else - *s++ = c; - c = mgetch(); - } - if (c == EOL) { - *s = 0; - *t = tok; - } - if (t) - *t = strip(tok); - -// printf("TOK |%s|", tok); - if (c < 0) - return c; - else { - return 1; - } -} - -static long -parse_posint(char *s, size_t minn, size_t maxn) -{ - long n; - char *end; - - errno = 0; - n = strtol(s, &end, 10); - if (errno || *end || n < (long)minn || n > (long)maxn) - return -1; - return n; -} - -int -parse_date(time_t *r) -{ - char *t; - int c; - - struct tm tm; - - if ((c = parse_tok(&t)) < 0) goto fail; - if (strlen(t) == 4 && t[3] == ',') // ignore day of week - if ((c = parse_tok(&t)) < 0) goto fail; - - if ((c = parse_posint(t, 1, 31)) < 0) goto fail; - tm.tm_mday = c; - - if ((c = parse_tok(&t)) < 0) goto fail; - // convert to switch - if (strcmp("Jan", t) == 0) tm.tm_mon = 0; - else if (strcmp("Feb", t) == 0) tm.tm_mon = 1; - else if (strcmp("Mar", t) == 0) tm.tm_mon = 2; - else if (strcmp("Apr", t) == 0) tm.tm_mon = 3; - else if (strcmp("May", t) == 0) tm.tm_mon = 4; - else if (strcmp("Jun", t) == 0) tm.tm_mon = 5; - else if (strcmp("Jul", t) == 0) tm.tm_mon = 6; - else if (strcmp("Aug", t) == 0) tm.tm_mon = 7; - else if (strcmp("Sep", t) == 0) tm.tm_mon = 8; - else if (strcmp("Oct", t) == 0) tm.tm_mon = 9; - else if (strcmp("Nov", t) == 0) tm.tm_mon = 10; - else if (strcmp("Dec", t) == 0) tm.tm_mon = 11; - else goto fail; - - if ((c = parse_tok(&t)) < 0) goto fail; - if ((c = parse_posint(t, 1000, 9999)) > 0) { - tm.tm_year = c - 1900; - } else if ((c = parse_posint(t, 0, 49)) > 0) { - tm.tm_year = c + 100; - } else if ((c = parse_posint(t, 50, 99)) > 0) { - tm.tm_year = c; - } else goto fail; - - if ((c = parse_tok(&t)) < 0) - if (!t) goto fail; - if (strlen(t) == 8 && t[2] == ':' && t[5] == ':') { - t[2] = t[5] = 0; - if ((c = parse_posint(t, 0, 24)) < 0) goto fail; - tm.tm_hour = c; - if ((c = parse_posint(t+3, 0, 59)) < 0) goto fail; - tm.tm_min = c; - if ((c = parse_posint(t+6, 0, 61)) < 0) goto fail; - tm.tm_sec = c; - } else if (strlen(t) == 5 && t[2] == ':') { - t[2] = 0; - if ((c = parse_posint(t, 0, 24)) < 0) goto fail; - tm.tm_hour = c; - if ((c = parse_posint(t+3, 0, 59)) < 0) goto fail; - tm.tm_min = c; - tm.tm_sec = 0; - } else { - goto fail; - } - -// if ((c = parse_tok(&t)) > 0) goto fail; // expect EOL, EOH, EOF - c = parse_tok(&t); - if (t && strlen(t) == 5 && (t[0] == '+' || t[0] == '-')) { - if ((c = parse_posint(t+1, 0, 10000)) < 0) goto fail; - if (t[0] == '+') { - tm.tm_hour -= c / 100; - tm.tm_min -= c % 100; - } else { - tm.tm_hour += c / 100; - tm.tm_min += c % 100; - } - } - // TODO: parse obs-zone? - - tm.tm_isdst = -1; - - *r = timegm(&tm); - return 0; - -fail: - *r = -1; - /* slurp rest of line and leave it */ - while ((c = mgetch()) > 0) - ; - return c; -} - -int decode_rfc2047 (char *str, char *dst, size_t dstlen); - - -int catmain() { - int c; - - input = stdin; - while ((c = mgetch())) { - if (c > 0) - putchar(c); - else - printf("[%d]\n", c); - } - - return 0; -} - -int tmain() { - char *s; - - input = stdin; - while ((s = parse_header())) { - if (strcmp(s, "date") == 0) { - time_t t; - if (parse_date(&t) >= 0) - printf("%s :: (%ld) %s", s, t, ctime(&t)); - else - printf("date : OOPS\n"); - } else if (strcmp(s, "subject") == 0) { - char *v = parse_value(); - char buf[2048]; - decode_rfc2047(v, buf, sizeof buf); - printf("%s : %s\n", s, v); - printf("%s :: %s\n", s, buf); - } else { - char *v = parse_value(); - printf("%s : %s\n", s, v); - } - } - - return 0; -} - -int main() { - char *s; - - char *line = 0; - size_t linelen = 0; - int read; - - int i = 0; - - static char buf[50000]; /* buf must survive until stdout is closed */ - - while ((read = getdelim(&line, &linelen, '\n', stdin)) != -1) { - if (line[read-1] == '\n') line[read-1] = 0; - - printf("%s\n", line); - - FILE *f = fopen(line, "r"); - if (!f) { - perror("fopen"); - continue; - } - setvbuf ( f , buf , _IOFBF , sizeof(buf) ); - i++; - - input = f; - while ((s = parse_header())) { - if (strcmp(s, "date") == 0) { - time_t t; - if (parse_date(&t) >= 0) - printf("%s :: (%ld) %s", s, t, ctime(&t)); - else - printf("date : OOPS\n"); - } else if (strcmp(s, "subject") == 0 || - strcmp(s, "from") == 0 || - strcmp(s, "to") == 0) { - char *v = parse_value(); - char buf[2048]; - if (decode_rfc2047(v, buf, sizeof buf)) - printf("%s :: %s\n", s, buf); - else - printf("%s : %s\n", s, v); - } else - parse_value(); // and ignore it - } - fclose(f); - } - - printf("%d mails scanned\n", i); - - return 0; -} |