diff options
| -rw-r--r-- | badroff.c | 27 | 
1 files changed, 18 insertions, 9 deletions
| @@ -15,12 +15,11 @@ FILE* getfile(int argc, char** argv){          return stdin;  } +// file read & buffer fill helpers +  FILE* in;  buf* inbuf; -int width = 80; -bool brk = false; // not implemented -  size_t fillbuf(size_t len){ // returns real len      int c;      size_t set; @@ -40,14 +39,18 @@ size_t chrfill(char chr){      return line;  } -char* center(char* text){ -    size_t len = strlen(text); +// typesetting config and commands to change. +int width = 80; +bool brk = false; // not implemented + +char* center(char* txt){ +    size_t len = strlen(txt);      int max = width/2 + len/2; // excluding terminator -    int min = max-len+1; // first index of *text +    int min = max-len+1; // first index of *txt      char* str = malloc(sizeof(char)*(max + 1));      str[max] = 0;      for (int i=0; i < min; i++) str[i] = ' '; -    memcpy(str+min, text, len); +    memcpy(str+min, txt, len);      return str;  }  char* setwidth(char* txt){ @@ -67,18 +70,22 @@ char* cmd(void){          int cmp = strncmp(dat, mval, strlen(mval));          if (cmp < 0) // dat < mval -            low = mid + 1; -        else if (cmp > 0)              high = mid - 1; +        else if (cmp > 0) +            low = mid + 1;          else return call[mid](dat+strlen(mval));      }      return NULL;  } +// normal typesetting  +  char* typeset(void){      return popstrbuf(inbuf, chrfill('\n'));  } +// a parser to choose when to typeset and when to run a command +  char* line(void){      size_t sz;      if ( (sz = fillbuf(2)) == 0) @@ -95,6 +102,8 @@ char* line(void){      }  } +// orchestration +  int main(int argc, char** argv){      int c;      in = getfile(argc, argv); | 
