"Fossies" - the Fresh Open Source Software Archive

Member "netbiff-0.9.18/nbproto.c" (21 Sep 2003, 1651 Bytes) of package /linux/privat/old/netbiff-0.9.18.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #include "nbproto.h"
    2 #include "util.h"
    3 
    4 #include <stdio.h>
    5 #include <string.h>
    6 #include <stdarg.h>
    7 
    8 static char input[4096];
    9 static const char *status_messages[] = {
   10   "OK",
   11   "NO",
   12   "BAD",
   13   "* UPDATE",
   14   "* RESET",
   15   "* DATAREQUEST"
   16 };
   17 
   18 void netbiff_send(int status, char *fmt, ...) {
   19   va_list ap;
   20 
   21   fputs(status_messages[status], stdout);
   22   fputc(' ', stdout);
   23 
   24   va_start(ap, fmt);
   25   vfprintf(stdout, fmt, ap);
   26   va_end(ap);
   27 
   28   fputc('\n', stdout);
   29   fflush(stdout);
   30 }
   31 
   32 int netbiff_proto_next(char *s[]) {
   33   char *argv[2];
   34   int argc;
   35   int i;
   36 
   37   for(i = 0; i < NETBIFF_PROTO_MAXARGS; i++)
   38     s[i] = NULL;
   39 
   40   while(1) {
   41     if(!fgets(input, 4096, stdin))
   42       return NETBIFF_CMD_EOF;
   43 
   44     util_chomp(input);
   45     argc = util_split(" ", input, argv, 2);
   46     if(!argc)
   47       continue;
   48     
   49     if(!strcasecmp(argv[0], "POLL")) {
   50       if(argc > 1)
   51         s[0] = argv[1];
   52       return NETBIFF_CMD_POLL;
   53     }
   54     else if(!strcasecmp(argv[0], "FOLDER")) {
   55       if(argc < 2) {
   56         netbiff_send(BAD, "Command FOLDER requires an argument");
   57         continue;
   58       }
   59       s[0] = argv[1];
   60       return NETBIFF_CMD_FOLDER;
   61     }
   62     else if(!strcasecmp(argv[0], "QUIT")) {
   63       netbiff_send(OK, "BYE");
   64       fclose(stdout);
   65       fclose(stdin);
   66       return NETBIFF_CMD_QUIT;
   67     }
   68     else if(!strcasecmp(argv[0], "DATARESPONSE")) {
   69       if(argc < 2 || util_split(" ", argv[1], s, 2) < 2) {
   70         netbiff_send(BAD, "Command DATARESPONSE requires at least two"
   71             " arguments.\n");
   72         continue;
   73       }
   74       return NETBIFF_CMD_DATARESPONSE;
   75     }
   76     else {
   77       netbiff_send(BAD, "%s unimplemented.", argv[0]);
   78     }
   79   }
   80 }