git home / emma home
logo

sgw

Static git web. Emma's fork of stagit.
git clone https://git.y1.nz/archives/sgw.tar.gz
README | Files | Log | Refs | LICENSE

opt.c


      1 
      2 #include <stdlib.h>
      3 #include <stdio.h>
      4 #include <limits.h>
      5 
      6 #include "opt.h"
      7 
      8 
      9 int
     10 parse_opt(Opt *opt, const char *cur, const char *next)
     11 {
     12 	int index;
     13 	char flag;
     14 
     15 	if (cur[0] != '-') return OPT_LAST;
     16 	for (index = 1;;) {
     17 		flag = cur[index];
     18 		if (flag == '\0') break;
     19 
     20 		switch (flag) {
     21 		case 'i': opt->index = 1; break;
     22 		case 'p': opt->pages = 1; break;
     23 		case 'o': opt->out_dir = next; return OPT_SKIP;
     24 		case 'b': opt->base_url = next; return OPT_SKIP;
     25 		case 'c': opt->cache = next; return OPT_SKIP;
     26 		default: ERROR("Unrecognized flag: -%c." "\n\n", flag);
     27 		}
     28 
     29 		index++;
     30 	}
     31 
     32 	return OPT_GOOD;
     33 }
     34 
     35 int
     36 parse_opts(Opt *opt, int argc, const char * argv[])
     37 {
     38 	const char * cur;
     39 	const char * next;
     40 	int index;
     41 
     42 	if (argc < 2) ERROR("");
     43 
     44 	/* set default values */
     45 	opt->index = 0;
     46 	opt->pages = 0;
     47 	opt->base_url = "";
     48 	opt->out_dir = "";
     49 
     50 	for (index = 1;;) {
     51 		cur = argv[index];
     52 		// printf("Parsing flag group: %s" "\n", cur);
     53 		next = (index+1 < argc-1) ? argv[index+1] : NULL;
     54 		switch (parse_opt(opt, cur, next)) {
     55 		case OPT_SKIP: index++; break;
     56 		case OPT_FAIL: return OPT_FAIL;
     57 		case OPT_LAST: 
     58 			opt->repo_dirs = argv + index;
     59 			opt->repo_count = argc - index;
     60 			return OPT_GOOD;
     61 		}
     62 		index++;
     63 		if(index >= argc) break;
     64 	}
     65 	
     66 	ERROR("Must specify at least one repository." "\n\n");
     67 }
     68 

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.