Example #1
0
File: init.c Project: noyesno/awka
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 */
}
Example #2
0
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:
        ;
    }
}
Example #3
0
File: init.c Project: noyesno/awka
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;
  }
}