Beispiel #1
0
CSLbool minusp(Lisp_Object a)
{
    switch ((int)a & TAG_BITS)
    {
    case TAG_FIXNUM:
        return ((int32_t)a < 0);
    case TAG_SFLOAT:
    {   Float_union aa;
        aa.i = a - TAG_SFLOAT;
        return (aa.f < 0.0);
    }
    case TAG_NUMBERS:
    {   int32_t ha = type_of_header(numhdr(a));
        switch (ha)
        {
        case TYPE_BIGNUM:
        {   int32_t l = (bignum_length(a)-CELL-4)/4;
            return ((int32_t)bignum_digits(a)[l] < (int32_t)0);
        }
        case TYPE_RATNUM:
            return minusp(numerator(a));
        default:
            aerror1("Bad arg for minusp",  a);
            return 0;
        }
    }
    case TAG_BOXFLOAT:
    {   double d = float_of_number(a);
        return (d < 0.0);
    }
    default:
        aerror1("Bad arg for minusp",  a);
        return 0;
    }
}
Beispiel #2
0
int main(int argc,char *argv[]) {
  int i;
  int p=0,v=0;
  int mode=0777-umask(0);
  mode_t and,or;
  if (argc<2) usage();
  for (i=1; i<argc; i++) {
    if (!argv[i]) continue;
    if (argv[i][0]=='-') {
      int j,len=strlen(argv[i]);
      for (j=1; j<len; j++) {
	switch (argv[i][j]) {
	case '-':
	  if (!strcmp(argv[i],"--parent")) p=1;
	  else if (!strcmp(argv[i],"--verbose")) v=1;
	  else if (argv[i][2]) usage();
	  j=len; break;
	case 'p': p=1; break;
	case 'v': v=1; break;
	case 'm': parsemode(argv[i+1],&and,&or); mode=(mode&and)|or; argv[i+1]=0; break;
	default:
	  usage();
	}
      }
    } else {
      if (p) {
	minusp(argv[i],mode,v);
      } else
	domkdir(argv[i],mode,v,0,argv[i]);
    }
  }
  return res;
}
Beispiel #3
0
static Lisp_Object mod_by_rem(Lisp_Object a, Lisp_Object b)
{
    Lisp_Object nil;
    CSLbool sb = minusp(b);
    errexit();
    a = Cremainder(a, b);   /* Repeats dispatch on argument type. Sorry */
    errexit();
    if (sb)
    {   if (plusp(a))
        {   errexit();
            a = plus2(a, b);
        }
    }
    else if (minusp(a))
    {   errexit();
        a = plus2(a, b);
    }
    return a;
}