tvote.c: remove blank lines in options field - vote - simple cgi voting system for web and gopher
 (HTM) git clone git://src.adamsgaard.dk/vote
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c214ae3ad448784c1da35ec3b14dec92fc92fccd
 (DIR) parent 524a5c649d588c13e3ec21a599765bb55bee2501
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Mon, 28 Sep 2020 09:43:11 +0200
       
       vote.c: remove blank lines in options field
       
       Diffstat:
         M vote.c                              |      46 ++++++++++++++++---------------
       
       1 file changed, 24 insertions(+), 22 deletions(-)
       ---
 (DIR) diff --git a/vote.c b/vote.c
       t@@ -106,9 +106,9 @@ int
        create_poll_file(const char *name, const char *question, const char *options)
        {
                FILE *fp;
       -        char fname[PATH_MAX];
       -        char buf[PATH_MAX];
       +        char fname[PATH_MAX], buf[PATH_MAX];
                struct stat sb;
       +        size_t col;
        
                strlcpy(buf, name, sizeof(buf));
                escapechars(buf);
       t@@ -139,35 +139,31 @@ create_poll_file(const char *name, const char *question, const char *options)
                                exit(1);
                        } else {
                                fputs(question, fp);
       -                        fputs("\n0\t", fp);
       -                        /*while (*question != '\0') {
       -                                switch(*question) {
       -                                case '<':
       -                                case '>':
       -                                        fputc(' ', fp);
       -                                        break;
       -                                default:
       -                                        fputc(*question, fp);
       -                                }
       -                                (void)*question++;
       -                        }*/
       -                        while (*options != '\0') {
       +                        fputc('\n', fp);
       +
       +                        for (col = 0; *options; (void)*options++) {
       +
       +                                if (++col == 1 && *options != '\n' && *options != '\r')
       +                                        fputs("0\t", fp);
       +
                                        switch(*options) {
       -                                case '<':
       -                                case '>':
                                        case '\t':
                                                fputc(' ', fp);
                                                break;
       -                                case '\n':
       -                                        fprintf(fp, "\n0\t");
       +                                case '\r':
                                                break;
       +                                case '\n':
       +                                        if (col < 3) {
       +                                                col = 0;
       +                                                break;
       +                                        }
       +                                        col = 0;
                                        default:
                                                fputc(*options, fp);
                                                break;
                                        }
       -                                (void)*options++;
                                }
       -                        fputc('\n', fp);
       +                        /* fputc('\n', fp); */
                                fclose(fp);
                        }
                }
       t@@ -213,11 +209,12 @@ list_polls()
                }
        
                puts("<h2>Poll listing</h2>");
       +        puts("<ul>");
        
                while ((p = fts_read(ftsp)) != NULL) {
                        switch (p->fts_info) {
                        case FTS_F:
       -                        printf("<a href=\"?poll=%s\">%s</a>\n",
       +                        printf("<li><a href=\"?poll=%s\">%s</a></li>\n",
                                       p->fts_path + LEN(POLLS_DIR),
                                       p->fts_path + LEN(POLLS_DIR));
                                break;
       t@@ -226,9 +223,13 @@ list_polls()
                        }
                }
                fts_close(ftsp);
       +        puts("</ul>");
        }
        
        /*
       +void
       +increment_option(FILE *fp)
       +{
                while ((ch = fgetc(ft)) != EOF) {
                        if (ch == 'i') {
                                fseek(ft, -1, SEEK_CUR);
       t@@ -236,6 +237,7 @@ list_polls()
                                fseek(ft, 0, SEEK_CUR);
                        }
                }
       +}
        */
        
        void