Static Stmt *proc_fwritebytes() { Expr *ex, *ex2, *vex, *fex; Type *type; if (!skipopenparen()) return NULL; fex = p_expr(tp_text); if (!skipcomma()) return NULL; vex = p_expr(NULL); if (!skipcomma()) return NULL; ex2 = p_expr(tp_integer); skipcloseparen(); type = vex->val.type; ex = makeexpr_bicall_4("fwrite", tp_integer, makeexpr_addr(vex), convert_size(type, ex2, "FWRITEBYTES"), makeexpr_long(1), filebasename(copyexpr(fex))); if (checkfilewrite) { ex = makeexpr_bicall_2(name_SETIO, tp_void, makeexpr_rel(EK_EQ, ex, makeexpr_long(1)), makeexpr_long(3)); } return wrapopencheck(makestmt_call(ex), fex); }
static int html_processor(const char *filename) { struct stat statbuf = {0}; htmlDocPtr htmldoc; htmlctx_t hctx = {0}; hctx.state = YS_FIRST_PASS; htmldoc = htmlSAXParseFile(filename, NULL, html_handler, &hctx); if (htmldoc != NULL) { xmlFreeDoc(htmldoc); } if (hctx.title[0] == 0) strncpy(hctx.title, filebasename(filename), sizeof hctx.title); printf("<?xml version=\"1.0\"?>\n"); printf("<!DOCTYPE YASEFILE SYSTEM \"yase.dtd\">\n"); printf("<YASEFILE title=\"%s\" type=\"HTML\" author=\"%s\" keywords=\"%s\">\n", hctx.title, hctx.author, hctx.keywords); printf("<YASEDOC title=\"%s\">\n", hctx.title); hctx.state = YS_IN_DOC; htmldoc = htmlSAXParseFile(filename, NULL, html_handler, &hctx); if (htmldoc != NULL) { xmlFreeDoc(htmldoc); } printf("</YASEDOC>\n"); printf("</YASEFILE>\n"); xmlCleanupParser(); return 0; }
const string FileLine::filebasenameNoExt() const { string name = filebasename(); string::size_type pos; if ((pos = name.find(".")) != string::npos) { name = name.substr(0,pos); } return name; }
/** * returns a string containing the dirname of name * If no dirname, returns "." */ string filedirname(const string& name) { const char* base = filebasename(name.c_str()); const unsigned int size = (const unsigned int)(base-name.c_str()); string dirname; if (size == 0) { dirname += '.'; } else if (size == 1) { dirname += name[0]; } else { for (unsigned int i = 0; i < size-1; i++) { dirname += name[i]; } } return dirname; }
int main(int argc, const char *argv[]) { const char *p; char *t; int i; int ret; char buf[128]; for(i = 1; i < argc; i++) { p = argv[i]; if (*p != '-') add_source(p); else { switch(p[1]) { case 'V': verbose = 1; break; /* What are we doing */ case 'c': mode = MODE_OBJ; break; case 'E': mode = MODE_CPP; break; case 'S': mode = MODE_ASM; break; case 'v': printf("fcc: front end to sdcc\n"); add_argument("sdcc"); add_argument("-v"); do_command(); exit(0); case 'D': add_macro(p); break; case 'l': add_library(p+2); break; case 'L': if (p[2] == 0) add_library_path(argv[++i]); else add_library_path(p+2); break; case 'I': if (p[2] == 0) add_include_path(argv[++i]); else add_include_path(p+2); break; case 'o': if (p[2] == 0) set_target(argv[++i]); else set_target(p + 2); break; case 'O': set_optimize(p + 2); break; case 'm': if (p[2] == 0) set_cpu(argv[++i]); else set_cpu(p + 2); break; case 'M': if (p[2] == 0) set_map(argv[++i]); else set_map(p + 2); break; case 't': if (p[2] == 0) set_platform(argv[++i]); else set_platform(p + 2); break; case 'g': debug = 1; break; default: if (strcmp(p, "-Werror") == 0) werror = 1; else if (strcmp(p, "-funsigned-char") == 0) unschar = 1; else if (strcmp(p, "--pedantic") == 0) pedantic = 1; else if (strcmp(p, "--nostdio") == 0) nostdio = 1; else { fprintf(stderr, "fcc: Unknown option '%s'.\n", p); exit(1); } } } } add_include_path(FCC_DIR "/include/"); add_library_path(FCC_DIR "/lib/"); snprintf(buf, sizeof(buf), "c%s", platform); add_library(buf); if (mode == MODE_OBJ) { while (srchead) { build_command(); ret = do_command(); if (ret) break; if (mode == MODE_OBJ && target) { char *orel = filebasename(rebuildname("", srchead->p, "rel")); if (rename(orel, target) == -1) { fprintf(stderr, "Unable to rename %s to %s.\n", orel, target); perror(srchead->p); exit(1); } } srchead = srchead->next; argp = 0; } } else { build_command(); ret = do_command(); } if (mode != MODE_LINK || ret) exit(ret); argp = 0; add_argument("makebin"); add_argument("-p"); add_argument("-s"); add_argument("65535"); add_argument(target); add_argument(t = rebuildname("", target, "bin")); ret = do_command(); if (ret) exit(ret); argp = 0; add_argument(FCC_DIR "/bin/binman"); snprintf(buf, sizeof(buf), "%x", progbase); add_argument(buf); add_argument(t); add_argument(rebuildname("", target, "map")); add_argument(target); ret = do_command(); exit(ret); }