📄 unix.c
字号:
#include <stdio.h>#include <stddef.h>#include <stdlib.h>#include <string.h>#include "cpp.h"extern int getopt(int, char *const *, const char *);extern char *optarg, rcsid[];extern int optind;int verbose;int Mflag; /* only print active include files */char *objname; /* "src.$O: " */int Cplusplus = 1;voidsetup(int argc, char **argv){ int c, i; FILE *fd; char *fp, *dp; Tokenrow tr; extern void setup_kwtab(void); setup_kwtab(); while ((c = getopt(argc, argv, "MNOVv+I:D:U:F:lg")) != -1) switch (c) { case 'N': for (i=0; i<NINCLUDE; i++) if (includelist[i].always==1) includelist[i].deleted = 1; break; case 'I': for (i=NINCLUDE-2; i>=0; i--) { if (includelist[i].file==NULL) { includelist[i].always = 1; includelist[i].file = optarg; break; } } if (i<0) error(FATAL, "Too many -I directives"); break; case 'D': case 'U': setsource("<cmdarg>", NULL, optarg); maketokenrow(3, &tr); gettokens(&tr, 1); doadefine(&tr, c); unsetsource(); break; case 'M': Mflag++; break; case 'v': fprintf(stderr, "%s %s\n", argv[0], rcsid); break; case 'V': verbose++; break; case '+': Cplusplus++; break; default: break; } dp = "."; fp = "<stdin>"; fd = stdin; if (optind<argc) { if ((fp = strrchr(argv[optind], '/')) != NULL) { int len = fp - argv[optind]; dp = (char*)newstring((uchar*)argv[optind], len+1, 0); dp[len] = '\0'; } fp = (char*)newstring((uchar*)argv[optind], strlen(argv[optind]), 0); if ((fd = fopen(fp, "r")) == NULL) error(FATAL, "Can't open input file %s", fp); } if (optind+1<argc) { FILE *fdo = freopen(argv[optind+1], "w", stdout); if (fdo == NULL) error(FATAL, "Can't open output file %s", argv[optind+1]); } if(Mflag) setobjname(fp); includelist[NINCLUDE-1].always = 0; includelist[NINCLUDE-1].file = dp; setsource(fp, fd, NULL);}/* memmove is defined here because some vendors don't provide it at all and others do a terrible job (like calling malloc) */void *memmove(void *dp, const void *sp, size_t n){ unsigned char *cdp, *csp; if (n<=0) return 0; cdp = dp; csp = (unsigned char *)sp; if (cdp < csp) { do { *cdp++ = *csp++; } while (--n); } else { cdp += n; csp += n; do { *--cdp = *--csp; } while (--n); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -