view 3rdparty/packages/ed/getnum.c @ 2876:1ca5c484c7a7

joydrv_6551L.asm: Remove spurious ! (OR) from expression
author Tormod Volden <debian.tormod@gmail.com>
date Sun, 24 Nov 2013 15:48:17 +0100
parents bef1844de0dc
children
line wrap: on
line source

/*      getnum.c        */
#include <stdio.h>
#include "tools.h"
#include "ed.h"

int mark['z' - 'a' + 1];

int getnum(first)
int first;
{
  TOKEN *srchpat;
  int num;
  char c;

  while (*inptr == SP || *inptr == HT) inptr++;

  if (*inptr >= '0' && *inptr <= '9') { /* line number */
        for (num = 0; *inptr >= '0' && *inptr <= '9';) {
                num = (num * 10) + *inptr - '0';
                inptr++;
        }
        return num;
  }
  switch (c = *inptr) {
      case '.':
        inptr++;
        return(curln);

      case '$':
        inptr++;
        return(lastln);

      case '/':
      case '?':
        srchpat = optpat();
        if (*inptr == c) inptr++;
        return(find(srchpat, c == '/' ? 1 : 0));

      case '-':
      case '+':
        return(first ? curln : 1);

      case '\'':
        inptr++;
        if (*inptr < 'a' || *inptr > 'z') return(EOF);

        return mark[*inptr++ - 'a'];

      default:
        return(first ? EOF : 1);/* unknown address */
  }
}