home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume2 / basic / part4 / bs2 / mksop.c < prev   
Encoding:
C/C++ Source or Header  |  1986-11-30  |  932 b   |  39 lines

  1. /* mksop.c -- make string comparator functions for bs.
  2.  *
  3.  *    USAGE: op name oper
  4.  *
  5.  * where:    name: name of function generated.
  6.  *        oper: operator for operation.
  7.  */
  8. #include <stdio.h>
  9.  
  10. main(argc,argv)
  11. char **argv;
  12. int argc;
  13. {
  14.     char *name,*oper;
  15.  
  16.     if(argc != 3) {
  17.     fprintf(stderr,"arg count\n");
  18.     exit(1);
  19.     }
  20.     name = argv[1]; oper = argv[2];
  21.  
  22.     printf("_%s(l,p)\n",name);
  23.     printf("int (*l[])(),p;\n");
  24.     printf("{\n");
  25.     printf("    union value rg1,rg2,result;\n");
  26.     printf("\n");
  27.     printf("    switch(status&XMODE) {\n");
  28.     printf("    case M_EXECUTE:\n");
  29.     printf("        rg2 = pop();\n");
  30.     printf("        rg1 = pop();\n");
  31.     printf("        result.sval = strcmp(rg1.sval,rg2.sval) %s 0;\n",oper);
  32.     printf("        push(result);\n");
  33.     printf("    case M_FIXUP:\n");
  34.     printf("    case M_COMPILE: return(p);\n");
  35.     printf("    default: STerror(\"%s\");\n",name);
  36.     printf("    }\n");
  37.     printf("}\n");
  38. }
  39.