From df6504d6853de003e509d62fd5f7e35a625d4e1f Mon Sep 17 00:00:00 2001 From: rillig Date: Sun, 21 Feb 2021 15:41:04 +0000 Subject: cgram: indent With manual corrections afterwards: - indent removes empty lines between statement and declaration. This had been a syntax error in C90, since C99 this is common style and should be accepted by indent. - indent didn't format the first line of main for whatever reason, did that manually. - indent removed the empty line above the '/////' separators. It should have left these empty lines as-is. --- cgram/cgram.c | 548 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 286 insertions(+), 262 deletions(-) diff --git a/cgram/cgram.c b/cgram/cgram.c index 62662cef..2dfc8bbe 100644 --- a/cgram/cgram.c +++ b/cgram/cgram.c @@ -1,3 +1,5 @@ +/* $NetBSD */ + /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -39,40 +41,48 @@ //////////////////////////////////////////////////////////// -static char *xstrdup(const char *s) { - char *ret; +static char * +xstrdup(const char *s) +{ + char *ret; - ret = malloc(strlen(s) + 1); - if (ret == NULL) { - errx(1, "Out of memory"); - } - strcpy(ret, s); - return ret; + ret = malloc(strlen(s) + 1); + if (ret == NULL) { + errx(1, "Out of memory"); + } + strcpy(ret, s); + return ret; } //////////////////////////////////////////////////////////// struct stringarray { - char **v; - int num; + char **v; + int num; }; -static void stringarray_init(struct stringarray *a) { - a->v = NULL; - a->num = 0; +static void +stringarray_init(struct stringarray *a) +{ + a->v = NULL; + a->num = 0; } -static void stringarray_cleanup(struct stringarray *a) { - free(a->v); +static void +stringarray_cleanup(struct stringarray *a) +{ + free(a->v); } -static void stringarray_add(struct stringarray *a, const char *s) { - a->v = realloc(a->v, (a->num + 1) * sizeof(a->v[0])); - if (a->v == NULL) { - errx(1, "Out of memory"); - } - a->v[a->num] = xstrdup(s); - a->num++; +static void +stringarray_add(struct stringarray *a, const char *s) +{ + a->v = realloc(a->v, (a->num + 1) * sizeof(a->v[0])); + if (a->v == NULL) { + errx(1, "Out of memory"); + } + a->v[a->num] = xstrdup(s); + a->num++; } //////////////////////////////////////////////////////////// @@ -84,265 +94,279 @@ static int scrolldown; static unsigned curx; static int cury; -static void readquote(void) { - FILE *f = popen(_PATH_FORTUNE, "r"); - if (!f) { - err(1, "%s", _PATH_FORTUNE); - } - - char buf[128], buf2[8*sizeof(buf)]; - while (fgets(buf, sizeof(buf), f)) { - char *s = strrchr(buf, '\n'); - assert(s); - assert(strlen(s)==1); - *s = 0; - - int i,j; - for (i=j=0; buf[i]; i++) { - if (buf[i]=='\t') { - buf2[j++] = ' '; - while (j%8) buf2[j++] = ' '; - } - else if (buf[i]=='\b') { - if (j>0) j--; - } - else { - buf2[j++] = buf[i]; - } - } - buf2[j] = 0; - - stringarray_add(&lines, buf2); - stringarray_add(&sollines, buf2); - } - - pclose(f); +static void +readquote(void) +{ + FILE *f = popen(_PATH_FORTUNE, "r"); + if (!f) { + err(1, "%s", _PATH_FORTUNE); + } + + char buf[128], buf2[8 * sizeof(buf)]; + while (fgets(buf, sizeof(buf), f)) { + char *s = strrchr(buf, '\n'); + assert(s); + assert(strlen(s) == 1); + *s = 0; + + int i, j; + for (i = j = 0; buf[i]; i++) { + if (buf[i] == '\t') { + buf2[j++] = ' '; + while (j % 8) + buf2[j++] = ' '; + } else if (buf[i] == '\b') { + if (j > 0) + j--; + } else { + buf2[j++] = buf[i]; + } + } + buf2[j] = 0; + + stringarray_add(&lines, buf2); + stringarray_add(&sollines, buf2); + } + + pclose(f); } -static void encode(void) { - int key[26]; - for (int i=0; i<26; i++) key[i] = i; - for (int i=26; i>1; i--) { - int c = random() % i; - int t = key[i-1]; - key[i-1] = key[c]; - key[c] = t; - } - - for (int y=0; y 1; i--) { + int c = random() % i; + int t = key[i - 1]; + key[i - 1] = key[c]; + key[c] = t; + } + + for (int y = 0; y < lines.num; y++) { + for (unsigned x = 0; lines.v[y][x]; x++) { + if (islower((unsigned char)lines.v[y][x])) { + int q = lines.v[y][x] - 'a'; + lines.v[y][x] = 'a' + key[q]; + } + if (isupper((unsigned char)lines.v[y][x])) { + int q = lines.v[y][x] - 'A'; + lines.v[y][x] = 'A' + key[q]; + } + } + } } -static int substitute(int ch) { - assert(cury>=0 && cury= strlen(lines.v[cury])) { - beep(); - return -1; - } - - int och = lines.v[cury][curx]; - if (!isalpha((unsigned char)och)) { - beep(); - return -1; - } - - int loch = tolower((unsigned char)och); - int uoch = toupper((unsigned char)och); - int lch = tolower((unsigned char)ch); - int uch = toupper((unsigned char)ch); - - for (int y=0; y= 0 && cury < lines.num); + if (curx >= strlen(lines.v[cury])) { + beep(); + return -1; + } + + int och = lines.v[cury][curx]; + if (!isalpha((unsigned char)och)) { + beep(); + return -1; + } + + int loch = tolower((unsigned char)och); + int uoch = toupper((unsigned char)och); + int lch = tolower((unsigned char)ch); + int uch = toupper((unsigned char)ch); + + for (int y = 0; y < lines.num; y++) { + for (unsigned x = 0; lines.v[y][x]; x++) { + if (lines.v[y][x] == loch) { + lines.v[y][x] = lch; + } else if (lines.v[y][x] == uoch) { + lines.v[y][x] = uch; + } else if (lines.v[y][x] == lch) { + lines.v[y][x] = loch; + } else if (lines.v[y][x] == uch) { + lines.v[y][x] = uoch; + } + } + } + return 0; } //////////////////////////////////////////////////////////// -static void redraw(void) { - erase(); - bool won = true; - for (int i=0; i 0) { - curx--; - } - else if (cury > 0) { - cury--; - curx = strlen(lines.v[cury]); - } - break; - case 5: /* ^E */ - case KEY_END: - curx = strlen(lines.v[cury]); - break; - case 6: /* ^F */ - case KEY_RIGHT: - if (curx < strlen(lines.v[cury])) { - curx++; - } - else if (cury < lines.num - 1) { - cury++; - curx = 0; - } - break; - case 12: /* ^L */ - clear(); - break; - case 14: /* ^N */ - case KEY_DOWN: - if (cury < lines.num-1) { - cury++; - } - if (curx > strlen(lines.v[cury])) { - curx = strlen(lines.v[cury]); - } - if (scrolldown < cury - (LINES-2)) { - scrolldown = cury - (LINES-2); +static void +loop(void) +{ + bool done = false; + while (!done) { + redraw(); + int ch = getch(); + switch (ch) { + case 1: /* ^A */ + case KEY_HOME: + curx = 0; + break; + case 2: /* ^B */ + case KEY_LEFT: + if (curx > 0) { + curx--; + } else if (cury > 0) { + cury--; + curx = strlen(lines.v[cury]); + } + break; + case 5: /* ^E */ + case KEY_END: + curx = strlen(lines.v[cury]); + break; + case 6: /* ^F */ + case KEY_RIGHT: + if (curx < strlen(lines.v[cury])) { + curx++; + } else if (cury < lines.num - 1) { + cury++; + curx = 0; + } + break; + case 12: /* ^L */ + clear(); + break; + case 14: /* ^N */ + case KEY_DOWN: + if (cury < lines.num - 1) { + cury++; + } + if (curx > strlen(lines.v[cury])) { + curx = strlen(lines.v[cury]); + } + if (scrolldown < cury - (LINES - 2)) { + scrolldown = cury - (LINES - 2); + } + break; + case 16: /* ^P */ + case KEY_UP: + if (cury > 0) { + cury--; + } + if (curx > strlen(lines.v[cury])) { + curx = strlen(lines.v[cury]); + } + if (scrolldown > cury) { + scrolldown = cury; + } + break; + case '*': + hinting = !hinting; + break; + case '~': + done = true; + break; + default: + if (isalpha(ch)) { + if (!substitute(ch)) { + if (curx < strlen(lines.v[cury])) { + curx++; + } + if (curx == strlen(lines.v[cury]) && + cury < lines.num - 1) { + curx = 0; + cury++; + } + } + } else if (curx < strlen(lines.v[cury]) && + ch == lines.v[cury][curx]) { + curx++; + if (curx == strlen(lines.v[cury]) && + cury < lines.num - 1) { + curx = 0; + cury++; + } + } else { + beep(); + } + break; + } } - break; - case 16: /* ^P */ - case KEY_UP: - if (cury > 0) { - cury--; - } - if (curx > strlen(lines.v[cury])) { - curx = strlen(lines.v[cury]); - } - if (scrolldown > cury) { - scrolldown = cury; - } - break; - case '*': - hinting = !hinting; - break; - case '~': - done = true; - break; - default: - if (isalpha(ch)) { - if (!substitute(ch)) { - if (curx < strlen(lines.v[cury])) { - curx++; - } - if (curx==strlen(lines.v[cury]) && cury < lines.num-1) { - curx=0; - cury++; - } - } - } - else if (curx < strlen(lines.v[cury]) && ch==lines.v[cury][curx]) { - curx++; - if (curx==strlen(lines.v[cury]) && cury < lines.num-1) { - curx=0; - cury++; - } - } - else { - beep(); - } - break; - } - } } //////////////////////////////////////////////////////////// -int main(void) { - stringarray_init(&lines); - stringarray_init(&sollines); - srandom(time(NULL)); - readquote(); - encode(); - opencurses(); - - keypad(stdscr, TRUE); - loop(); - - closecurses(); - stringarray_cleanup(&sollines); - stringarray_cleanup(&lines); - return 0; +int +main(void) +{ + + stringarray_init(&lines); + stringarray_init(&sollines); + srandom(time(NULL)); + readquote(); + encode(); + opencurses(); + + keypad(stdscr, TRUE); + loop(); + + closecurses(); + stringarray_cleanup(&sollines); + stringarray_cleanup(&lines); } -- cgit v1.2.3-56-ge451