/* * Emit the C-routine for the given definition */ void emit(definition * def) { if (def->def_kind == DEF_PROGRAM || def->def_kind == DEF_CONST) { return; } print_header(def); switch (def->def_kind) { case DEF_UNION: emit_union(def); break; case DEF_ENUM: emit_enum(def); break; case DEF_STRUCT: emit_struct(def); break; case DEF_TYPEDEF: emit_typedef(def); break; default: break; } print_trailer(); }
static void auth_html(char *host, int port, const char *user_name) { if (!user_name) user_name = ""; if (!host || !strlen(host)) host = "localhost"; printf("Content-type: text/html\r\n\r\n"); printf("<HTML><HEAD><TITLE>Cache Manager Interface</TITLE></HEAD>\n"); printf("<BODY><H1>Cache Manager Interface</H1>\n"); printf("<P>This is a WWW interface to the instrumentation interface\n"); printf("for the Squid object cache.</P>\n"); printf("<HR>\n"); printf("<FORM METHOD=\"GET\" ACTION=\"%s\">\n", script_name); printf("<TABLE BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"1\">\n"); printf("<TR><TH ALIGN=\"left\">Cache Host:</TH><TD><INPUT NAME=\"host\" "); printf("SIZE=30 VALUE=\"%s\"></TD></TR>\n", host); printf("<TR><TH ALIGN=\"left\">Cache Port:</TH><TD><INPUT NAME=\"port\" "); printf("SIZE=30 VALUE=\"%d\"></TD></TR>\n", port); printf("<TR><TH ALIGN=\"left\">Manager name:</TH><TD><INPUT NAME=\"user_name\" "); printf("SIZE=30 VALUE=\"%s\"></TD></TR>\n", user_name); printf("<TR><TH ALIGN=\"left\">Password:</TH><TD><INPUT TYPE=\"password\" NAME=\"passwd\" "); printf("SIZE=30 VALUE=\"\"></TD></TR>\n"); printf("</TABLE><BR CLEAR=\"all\">\n"); printf("<INPUT TYPE=\"submit\" VALUE=\"Continue...\">\n"); printf("</FORM>\n"); print_trailer(); }
/* * Emit the C-routine for the given definition */ void emit(definition *def) { if (def->def_kind == DEF_PROGRAM || def->def_kind == DEF_CONST) { return; } print_header(def); switch (def->def_kind) { case DEF_UNION: fprintf(stderr, "*** Error: Union not supported\n"); exit(1); emit_union(def); break; case DEF_ENUM: emit_enum(def); break; case DEF_STRUCT: emit_struct(def); break; case DEF_TYPEDEF: emit_typedef(def); break; default: printf("emit default\n"); break; } print_trailer(); }
static void auth_html(const char *host, int port, const char *user_name) { if (!user_name) user_name = ""; if (!host || !strlen(host)) host = "localhost"; printf("Content-Type: text/html\r\n\r\n"); printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); printf("<HTML><HEAD><TITLE>Cache Manager Interface</TITLE>\n"); printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE></HEAD>\n"); printf("<BODY><H1>Cache Manager Interface</H1>\n"); printf("<P>This is a WWW interface to the instrumentation interface\n"); printf("for the Squid object cache.</P>\n"); printf("<HR noshade size=\"1px\">\n"); printf("<FORM METHOD=\"POST\" ACTION=\"%s\">\n", script_name); printf("<TABLE BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"1\">\n"); printf("<TR><TH ALIGN=\"left\">Cache Host:</TH><TD><INPUT NAME=\"host\" "); printf("size=\"30\" VALUE=\"%s\"></TD></TR>\n", host); printf("<TR><TH ALIGN=\"left\">Cache Port:</TH><TD><INPUT NAME=\"port\" "); printf("size=\"30\" VALUE=\"%d\"></TD></TR>\n", port); printf("<TR><TH ALIGN=\"left\">Manager name:</TH><TD><INPUT NAME=\"user_name\" "); printf("size=\"30\" VALUE=\"%s\"></TD></TR>\n", user_name); printf("<TR><TH ALIGN=\"left\">Password:</TH><TD><INPUT TYPE=\"password\" NAME=\"passwd\" "); printf("size=\"30\" VALUE=\"\"></TD></TR>\n"); printf("</TABLE><BR CLEAR=\"all\">\n"); printf("<INPUT TYPE=\"submit\" VALUE=\"Continue...\">\n"); printf("</FORM>\n"); print_trailer(); }
static void error_html(const char *msg) { printf("Content-type: text/html\r\n\r\n"); printf("<HTML><HEAD><TITLE>Cache Manager Error</TITLE></HEAD>\n"); printf("<BODY><H1>Cache Manager Error</H1>\n"); printf("<P>\n%s</P>\n", msg); print_trailer(); }
static void error_html(const char *msg) { printf("Content-Type: text/html\r\n\r\n"); printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); printf("<HTML><HEAD><TITLE>Cache Manager Error</TITLE>\n"); printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE></HEAD>\n"); printf("<BODY><H1>Cache Manager Error</H1>\n"); printf("<P>\n%s</P>\n", html_quote(msg)); print_trailer(); }
static void print_cout(declaration * dec) { if (cflag) { space(); f_print(fout, "bool_t\n"); f_print(fout, "xdr_%s(XDR *xdrs, %s *objp)\n", dec->name, dec->name); f_print(fout, "{\n"); print_ifstat(1, dec->prefix, dec->type, dec->rel, dec->array_max, "objp", dec->name); print_trailer(); } }
static void dump_attributes(FILE *out, unsigned char *attributes) { int i; struct print_state state[1]; state->out = out; state->line = 1; state->chars = 0; print_header(state); for(i = 0; i < NUM_KEYSYMS; i++) { print_entry(state, i, attributes[i]); } print_trailer(state); }
static void emit_program(definition *def) { decl_list *dl; version_list *vlist; proc_list *plist; for (vlist = def->def.pr.versions; vlist != NULL; vlist = vlist->next) for (plist = vlist->procs; plist != NULL; plist = plist->next) { if (!newstyle || plist->arg_num < 2) continue;/* old style, or single argument */ print_prog_header(plist); for (dl = plist->args.decls; dl != NULL; dl = dl->next) print_stat(1, &dl->decl); print_trailer(); } }
/* * Emit the C-routine for the given definition */ void emit(definition *def) { if (def->def_kind == DEF_CONST) { return; } if (def->def_kind == DEF_PROGRAM) { emit_program(def); return; } if (def->def_kind == DEF_TYPEDEF) { /* * now we need to handle declarations like * struct typedef foo foo; * since we dont want this to be expanded into 2 calls to xdr_foo */ if (strcmp(def->def.ty.old_type, def->def_name) == 0) return; } print_header(def); switch (def->def_kind) { case DEF_UNION: emit_union(def); break; case DEF_ENUM: emit_enum(def); break; case DEF_STRUCT: emit_struct(def); break; case DEF_TYPEDEF: emit_typedef(def); break; /* DEF_CONST and DEF_PROGRAM have already been handled */ default: break; } print_trailer(); }
static int check_bytes_and_report(struct kmem_cache *s, struct page *page, u8 *object, char *what, u8 *start, unsigned int value, unsigned int bytes) { u8 *fault; u8 *end; fault = check_bytes(start, value, bytes); if (!fault) return 1; end = start + bytes; while (end > fault && end[-1] == value) end--; slab_bug(s, "%s overwritten", what); printk(KERN_ERR "INFO: 0x%p-0x%p. First byte 0x%x instead of 0x%x\n", fault, end - 1, fault[0], value); print_trailer(s, page, object); restore_bytes(s, what, value, fault, end); return 0; }
static int read_reply(int s, cachemgr_request * req) { char buf[4 * 1024]; FILE *fp = fdopen(s, "r"); /* interpretation states */ enum { isStatusLine, isHeaders, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError } istate = isStatusLine; int parse_menu = 0; const char *action = req->action; const char *statusStr = NULL; int status = -1; if (0 == strlen(req->action)) parse_menu = 1; else if (0 == strcasecmp(req->action, "menu")) parse_menu = 1; if (fp == NULL) { perror("fdopen"); return 1; } if (parse_menu) action = "menu"; /* read reply interpreting one line at a time depending on state */ while (istate < isEof) { if (!fgets(buf, sizeof(buf), fp)) istate = istate == isForward ? isForwardEof : isEof; switch (istate) { case isStatusLine: /* get HTTP status */ /* uncomment the following if you want to debug headers */ /* fputs("\r\n\r\n", stdout); */ status = parse_status_line(buf, &statusStr); istate = status == 200 ? isHeaders : isForward; /* if cache asks for authentication, we have to reset our info */ if (status == 401 || status == 407) { reset_auth(req); status = 403; /* Forbiden, see comments in case isForward: */ } /* this is a way to pass HTTP status to the Web server */ if (statusStr) printf("Status: %d %s", status, statusStr); /* statusStr has '\n' */ break; case isHeaders: /* forward header field */ if (!strcmp(buf, "\r\n")) { /* end of headers */ fputs("Content-Type: text/html\r\n", stdout); /* add our type */ istate = isBodyStart; } if (strncasecmp(buf, "Content-Type:", 13)) /* filter out their type */ fputs(buf, stdout); break; case isBodyStart: printf("<HTML><HEAD><TITLE>CacheMgr@%s: %s</TITLE></HEAD><BODY>\n", req->hostname, action); if (parse_menu) { printf("<H2><a href=\"%s\">Cache Manager</a> menu for %s:</H2>", menu_url(req, "authenticate"), req->hostname); printf("<UL>\n"); } else { printf("<P><A HREF=\"%s\">%s</A>\n<HR>\n", menu_url(req, "menu"), "Cache Manager menu"); printf("<PRE>\n"); } istate = isBody; /* yes, fall through, we do not want to loose the first line */ case isBody: /* interpret [and reformat] cache response */ if (parse_menu) fputs(munge_menu_line(buf, req), stdout); else fputs(munge_other_line(buf, req), stdout); break; case isForward: /* forward: no modifications allowed */ /* * Note: we currently do not know any way to get browser.reply to * 401 to .cgi because web server filters out all auth info. Thus we * disable authentication headers for now. */ if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19)); /* skip */ else fputs(buf, stdout); break; case isEof: /* print trailers */ if (parse_menu) printf("</UL>\n"); else printf("</table></PRE>\n"); print_trailer(); istate = isSuccess; break; case isForwardEof: /* indicate that we finished processing an "error" sequence */ istate = isError; break; default: printf("%s: internal bug: invalid state reached: %d", script_name, istate); istate = isError; } } close(s); return 0; }
static void object_err(struct kmem_cache *s, struct page *page, u8 *object, char *reason) { slab_bug(s, "%s", reason); print_trailer(s, page, object); }
static int read_reply(int s, cachemgr_request * req) { char buf[4 * 1024]; #ifdef _SQUID_MSWIN_ int reply; char *tmpfile = tempnam(NULL, "tmp0000"); FILE *fp = fopen(tmpfile, "w+"); #else FILE *fp = fdopen(s, "r"); #endif /* interpretation states */ enum { isStatusLine, isHeaders, isActions, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError } istate = isStatusLine; int parse_menu = 0; const char *action = req->action; const char *statusStr = NULL; int status = -1; if (0 == strlen(req->action)) parse_menu = 1; else if (0 == strcasecmp(req->action, "menu")) parse_menu = 1; if (fp == NULL) { #ifdef _SQUID_MSWIN_ perror(tmpfile); xfree(tmpfile); closesocket(s); #else perror("fdopen"); close(s); #endif return 1; } #ifdef _SQUID_MSWIN_ while ((reply = recv(s, buf, sizeof(buf), 0)) > 0) fwrite(buf, 1, reply, fp); rewind(fp); #endif if (parse_menu) action = "menu"; /* read reply interpreting one line at a time depending on state */ while (istate < isEof) { if (!fgets(buf, sizeof(buf), fp)) istate = istate == isForward ? isForwardEof : isEof; switch (istate) { case isStatusLine: /* get HTTP status */ /* uncomment the following if you want to debug headers */ /* fputs("\r\n\r\n", stdout); */ status = parse_status_line(buf, &statusStr); istate = status == 200 ? isHeaders : isForward; /* if cache asks for authentication, we have to reset our info */ if (status == 401 || status == 407) { reset_auth(req); status = 403; /* Forbiden, see comments in case isForward: */ } /* this is a way to pass HTTP status to the Web server */ if (statusStr) printf("Status: %d %s", status, statusStr); /* statusStr has '\n' */ break; case isHeaders: /* forward header field */ if (!strcmp(buf, "\r\n")) { /* end of headers */ fputs("Content-Type: text/html\r\n", stdout); /* add our type */ istate = isBodyStart; } if (strncasecmp(buf, "Content-Type:", 13)) /* filter out their type */ fputs(buf, stdout); break; case isBodyStart: printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); printf("<HTML><HEAD><TITLE>CacheMgr@%s: %s</TITLE>\n", req->hostname, action); printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}TABLE{background-color:#333333;border:0pt;padding:0pt}TH,TD{background-color:#ffffff;white-space:nowrap}--></STYLE>\n"); printf("</HEAD><BODY>\n"); if (parse_menu) { printf("<H2><a href=\"%s\">Cache Manager</a> menu for %s:</H2>", menu_url(req, "authenticate"), req->hostname); } else { printf("<P><A HREF=\"%s\">%s</A>\n", menu_url(req, "menu"), "Cache Manager menu"); } istate = isActions; /* yes, fall through, we do not want to loose the first line */ case isActions: if (strncmp(buf, "action:", 7) == 0) { fputs(" ", stdout); fputs(munge_action_line(buf + 7, req), stdout); break; } if (parse_menu) { printf("<UL>\n"); } else { printf("<HR noshade size=\"1px\">\n"); printf("<PRE>\n"); } istate = isBody; /* yes, fall through, we do not want to loose the first line */ case isBody: /* interpret [and reformat] cache response */ if (parse_menu) fputs(munge_menu_line(buf, req), stdout); else fputs(munge_other_line(buf, req), stdout); break; case isForward: /* forward: no modifications allowed */ /* * Note: we currently do not know any way to get browser.reply to * 401 to .cgi because web server filters out all auth info. Thus we * disable authentication headers for now. */ if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19)); /* skip */ else fputs(buf, stdout); break; case isEof: /* print trailers */ if (parse_menu) printf("</UL>\n"); else printf("</table></PRE>\n"); print_trailer(); istate = isSuccess; break; case isForwardEof: /* indicate that we finished processing an "error" sequence */ istate = isError; break; default: printf("%s: internal bug: invalid state reached: %d", script_name, istate); istate = isError; } } #ifdef _SQUID_MSWIN_ fclose(fp); remove(tmpfile); xfree(tmpfile); closesocket(s); #else close(s); #endif return 0; }
static void auth_html(const char *host, int port, const char *user_name) { FILE *fp; int need_host = 1; if (!user_name) user_name = ""; if (!host || !strlen(host)) host = ""; printf("Content-Type: text/html\r\n\r\n"); printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); printf("<HTML><HEAD><TITLE>Cache Manager Interface</TITLE>\n"); printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE></HEAD>\n"); printf("<BODY><H1>Cache Manager Interface</H1>\n"); printf("<P>This is a WWW interface to the instrumentation interface\n"); printf("for the Squid object cache.</P>\n"); printf("<HR noshade size=\"1px\">\n"); printf("<FORM METHOD=\"POST\" ACTION=\"%s\">\n", script_name); printf("<TABLE BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"1\">\n"); fp = fopen("cachemgr.conf", "r"); if (fp == NULL) fp = fopen(DEFAULT_CACHEMGR_CONFIG, "r"); if (fp != NULL) { int servers = 0; char config_line[BUFSIZ]; while (fgets(config_line, BUFSIZ, fp)) { char *server, *comment; strtok(config_line, "\r\n"); if (config_line[0] == '#') continue; if (config_line[0] == '\0') continue; if ((server = strtok(config_line, " \t")) == NULL) continue; if (strchr(server, '*') || strchr(server, '[') || strchr(server, '?')) { need_host = -1; continue; } comment = strtok(NULL, ""); if (comment) while (*comment == ' ' || *comment == '\t') comment++; if (!comment || !*comment) comment = server; if (!servers) { printf("<TR><TH ALIGN=\"left\">Cache Server:</TH><TD><SELECT NAME=\"server\">\n"); } printf("<OPTION VALUE=\"%s\"%s>%s</OPTION>\n", server, (servers || *host) ? "" : " SELECTED", comment); servers++; } if (servers) { if (need_host == 1 && !*host) need_host = 0; if (need_host) printf("<OPTION VALUE=\"\"%s>Other</OPTION>\n", (*host) ? " SELECTED" : ""); printf("</SELECT></TR>\n"); } fclose(fp); } if (need_host) { if (need_host == 1 && !*host) host = "localhost"; printf("<TR><TH ALIGN=\"left\">Cache Host:</TH><TD><INPUT NAME=\"host\" "); printf("size=\"30\" VALUE=\"%s\"></TD></TR>\n", host); printf("<TR><TH ALIGN=\"left\">Cache Port:</TH><TD><INPUT NAME=\"port\" "); printf("size=\"30\" VALUE=\"%d\"></TD></TR>\n", port); } printf("<TR><TH ALIGN=\"left\">Manager name:</TH><TD><INPUT NAME=\"user_name\" "); printf("size=\"30\" VALUE=\"%s\"></TD></TR>\n", user_name); printf("<TR><TH ALIGN=\"left\">Password:</TH><TD><INPUT TYPE=\"password\" NAME=\"passwd\" "); printf("size=\"30\" VALUE=\"\"></TD></TR>\n"); printf("</TABLE><BR CLEAR=\"all\">\n"); printf("<INPUT TYPE=\"submit\" VALUE=\"Continue...\">\n"); printf("</FORM>\n"); print_trailer(); }
int main(int argc, char **argv) { int ifd; int lflag = 0; struct stat sbuf; u_int16_t opt_vendor, opt_product, opt_revision; struct uboot_dfu_trailer _hdr, _mirror, *hdr = &_hdr; opt_vendor = opt_product = opt_revision = 0; cmdname = *argv; while (--argc > 0 && **++argv == '-') { while (*++*argv) { switch (**argv) { case 'l': lflag = 1; break; case 'v': if (--argc <= 0) usage (); opt_vendor = strtoul(*++argv, NULL, 16); goto NXTARG; case 'p': if (--argc <= 0) usage (); opt_product = strtoul(*++argv, NULL, 16); goto NXTARG; case 'r': if (--argc <= 0) usage (); opt_revision = strtoul(*++argv, NULL, 16); goto NXTARG; case 'd': if (--argc <= 0) usage (); datafile = *++argv; goto NXTARG; case 'h': usage(); break; default: usage(); } } NXTARG: ; } if (argc != 1) usage(); imagefile = *argv; if (lflag) ifd = open(imagefile, O_RDONLY|O_BINARY); else ifd = open(imagefile, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0666); if (ifd < 0) { fprintf (stderr, "%s: Can't open %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } if (lflag) { unsigned char *ptr; /* list header information of existing image */ if (fstat(ifd, &sbuf) < 0) { fprintf (stderr, "%s: Can't stat %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } if ((unsigned)sbuf.st_size < sizeof(struct uboot_dfu_trailer)) { fprintf (stderr, "%s: Bad size: \"%s\" is no valid image\n", cmdname, imagefile); exit (EXIT_FAILURE); } ptr = (unsigned char *)mmap(0, sbuf.st_size, PROT_READ, MAP_SHARED, ifd, 0); if ((caddr_t)ptr == (caddr_t)-1) { fprintf (stderr, "%s: Can't read %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } dfu_trailer_mirror(hdr, ptr+sbuf.st_size); if (hdr->magic != UBOOT_DFU_TRAILER_MAGIC) { fprintf (stderr, "%s: Bad Magic Number: \"%s\" is no valid image\n", cmdname, imagefile); exit (EXIT_FAILURE); } /* for multi-file images we need the data part, too */ print_trailer(hdr); (void) munmap((void *)ptr, sbuf.st_size); (void) close (ifd); exit (EXIT_SUCCESS); } /* if we're not listing: */ copy_file (ifd, datafile, 0); memset (hdr, 0, sizeof(struct uboot_dfu_trailer)); /* Build new header */ hdr->version = UBOOT_DFU_TRAILER_V1; hdr->magic = UBOOT_DFU_TRAILER_MAGIC; hdr->length = sizeof(struct uboot_dfu_trailer); hdr->vendor = opt_vendor; hdr->product = opt_product; hdr->revision = opt_revision; print_trailer(hdr); dfu_trailer_mirror(&_mirror, (unsigned char *)hdr+sizeof(*hdr)); if (write(ifd, &_mirror, sizeof(struct uboot_dfu_trailer)) != sizeof(struct uboot_dfu_trailer)) { fprintf (stderr, "%s: Write error on %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } /* We're a bit of paranoid */ #if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) (void) fdatasync (ifd); #else (void) fsync (ifd); #endif if (fstat(ifd, &sbuf) < 0) { fprintf (stderr, "%s: Can't stat %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } /* We're a bit of paranoid */ #if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) (void) fdatasync (ifd); #else (void) fsync (ifd); #endif if (close(ifd)) { fprintf (stderr, "%s: Write error on %s: %s\n", cmdname, imagefile, strerror(errno)); exit (EXIT_FAILURE); } exit (EXIT_SUCCESS); }