void _awka_init_procinfo( a_VAR *procinfo ) { a_VAR *ret, *tmp = NULL; awka_varinit(tmp); /* egid */ /* euid */ /* FS */ awka_strcpy(tmp, "FS"); ret = awka_arraysearch1( procinfo, tmp, a_ARR_CREATE, 0 ); awka_strcpy(ret, "FS"); ret->type = a_VARUNK; /* gid */ /* pgrpid */ /* pid */ /* ppid */ /* uid */ }
void MAIN() { int i, _curfile; if (*(awka_gets(a_bivar[a_FILENAME])) == '\0') awka_strcpy(a_bivar[a_FILENAME], ""); i = setjmp(context); while (awka_getline(a_TEMP, awka_dol0(0), awka_gets(a_bivar[a_FILENAME]), FALSE, TRUE)->dval > 0 && awka_setNF()) { awka_setd(SUM_awk) += awka_getd(awka_doln(2, 0)); if (fmod(a_bivar[a_NR]->dval, 100000) == 0) { awka_print(NULL, 0, 0, awka_arg1(a_TEMP, SUM_awk)); awka_vardblset(SUM_awk, 0); } nextrec: ; } }
void awka_parsecmdline(int first) { int i = 1, j, argc, options_done = FALSE; char c, *p, *p1, *p2, tmp[128]; a_VAR *var; awka_getd(a_bivar[a_ARGC]); if (!first) { for (i=1; i<_argc; i++) if (_argv[i]) free(_argv[i]); argc = _argc; _argc = (int) awka_getd(a_bivar[a_ARGC]); if (argc != _argc) realloc( &_argv, _argc * sizeof(char *)); for (i=0; i<_argc; i++) { var = awka_arraysearch1(a_bivar[a_ARGV], awka_tmp_dbl2var(i), a_ARR_QUERY, 0); if (var->slen != -1) { var = awka_arraysearch1(a_bivar[a_ARGV], awka_tmp_dbl2var(i), a_ARR_CREATE, 0); p1 = awka_gets1(var); malloc( &_argv[i], var->slen+1); strcpy(_argv[i], p1); } else { _argv[i] = NULL; } } if (awka_filein_no) { for (i=0; i<awka_filein_no; i++) free(awka_filein[i]); free(awka_filein); awka_filein_no = 0; } a_bivar[a_ARGC]->dval = 0; } else { a_bivar[a_ARGC]->dval = 0; awka_strcpy(awka_arraysearch1(a_bivar[a_ARGV], a_bivar[a_ARGC], a_ARR_CREATE, 1), _argv[0]); } i = 1; while (i < _argc) { if (!_argv[i]) { i++; continue; } c = _argv[i][0]; if (options_done == FALSE && c == '-' && _argv[i][1] != '\0') { switch (_argv[i][1]) { case 'F': _setp; if (!first) break; if (!a_bivar[a_FS]) _awka_init_ivar(a_FS); awka_strcpy(a_bivar[a_FS], p); break; case '-': switch (_argv[i][2]) { case 'h': case 'u': _awka_printhelp(); default: awka_error("command line parse: unknown option %s\n",_argv[i]); case 'a': break; } case 'a': fprintf(stderr,"\n\"%s\" was generated by Awka (http://awka.sourceforge.net)\n",_argv[0]); fprintf(stderr," - translator version %s, %s\n",patch_str,date_str); fprintf(stderr," - library version %s, %s\n\n",AWKAVERSION,DATE_STRING); exit(0); case 'v': _setp; if (!first) break; strcpy(tmp, p); p1 = p2 = tmp; while (*p2 && *p2 != '=') p2++; if (*p2 == '=') *p2++ = '\0'; else awka_error("command line parse: expected 'var=value' after -v.\n"); if (p1 == p2-1) awka_error("command line parse: null value for 'var' in 'var=value' after -v.\n"); j = 0; while (_gvar[j].name) { if (!strcmp(_gvar[j].name, tmp)) break; j++; } if (!_gvar[j].name) { if ((j = findivar(tmp)) == -1) awka_error("command line parse: variable '%s' not defined.\n",tmp); if (!a_bivar[ivar[j].var]) _awka_init_ivar(ivar[j].var); if (a_bivar[ivar[j].var]->type == a_VARARR) awka_error("command line parse: array variable '%s' used as scalar.\n",tmp); awka_strcpy(a_bivar[ivar[j].var], p2); a_bivar[ivar[j].var]->type = a_VARUNK; break; } else if (_gvar[j].var->type == a_VARARR) awka_error("command line parse: array variable '%s' used as scalar.\n",tmp); awka_strcpy(_gvar[j].var, p2); _gvar[j].var->type = a_VARUNK; break; case 'W': _setp; switch (*p) { case 'e': options_done = TRUE; break; case 'i': _interactive = TRUE; break; default: awka_error("command line parse: unknown option -W%s\n",p); } break; case 's': if (_int_argc == 0) fprintf(stderr,"No compiled-in arguments.\n"); else { fprintf(stderr,"The following arguments were compiled into this executable:-\n "); for (j=0; j<_int_argc; j++) fprintf(stderr," %s", _int_argv[j]); fprintf(stderr,"\n"); } exit(1); case 'h': _awka_printhelp(); default: awka_error("command-line parse error: unknown argument '%s' - type \"-help\" for more info.\n",_argv[i]); } } else if (_argv[i][0] != '\0') { a_bivar[a_ARGC]->dval++; var = awka_arraysearch1(a_bivar[a_ARGV], a_bivar[a_ARGC], a_ARR_CREATE, 0); awka_strcpy(var, _argv[i]); var->type = a_VARUNK; if (!awka_filein_no) malloc( &awka_filein, (_argc + i) * sizeof(char *) ); malloc( &awka_filein[awka_filein_no], strlen(_argv[i])+1 ); strcpy(awka_filein[awka_filein_no++], _argv[i]); if (!_awka_fileoffset) _awka_fileoffset = i; } i++; } a_bivar[a_ARGC]->dval++; if (!awka_filein_no) { malloc( &awka_filein, sizeof(char *) ); malloc( &awka_filein[0], 3 ); strcpy(awka_filein[0], "-"); awka_filein_no = 1; _awka_fileoffset = -1; } }