bool stbase::isequivalent (const stbase& t) const { assert (getstype () == sti_notpresent); if (t.getstype () == sti_notpresent) return true; // vfalco we shouldn't be logging at this low a level //writelog (lsdebug, stbase) << "notequiv " << getfulltext() << " not sti_notpresent"; return false; }
std::string stbase::getfulltext() const { std::string ret; if (getstype () != sti_notpresent) { if (fname->hasname ()) { ret = fname->fieldname; ret += " = "; } ret += gettext (); } return ret; }
bool stbase::operator!= (const stbase& t) const { return (getstype () != t.getstype ()) || !isequivalent (t); }
bool stbase::operator== (const stbase& t) const { return (getstype () == t.getstype ()) && isequivalent (t); }
int main(int argc, char *argv[]) { const char *ifile = NULL; const char *ofile = NULL; int oflags = 0; smbios_hdl_t *shp; smbios_struct_t s; int err, fd, c; char *p; if ((p = strrchr(argv[0], '/')) == NULL) g_pname = argv[0]; else g_pname = p + 1; while (optind < argc) { while ((c = getopt(argc, argv, "Bei:Ost:w:xZ")) != EOF) { switch (c) { case 'B': oflags |= SMB_O_NOCKSUM | SMB_O_NOVERS; break; case 'e': opt_e++; break; case 'i': opt_i = getu16("struct ID", optarg); break; case 'O': opt_O++; break; case 's': opt_s++; break; case 't': if (isdigit(optarg[0])) opt_t = getu16("struct type", optarg); else opt_t = getstype("struct type", optarg); break; case 'w': ofile = optarg; break; case 'x': opt_x++; break; case 'Z': oflags |= SMB_O_ZIDS; /* undocumented */ break; default: return (usage(stderr)); } } if (optind < argc) { if (ifile != NULL) { (void) fprintf(stderr, "%s: illegal " "argument -- %s\n", g_pname, argv[optind]); return (SMBIOS_USAGE); } ifile = argv[optind++]; } } if ((shp = smbios_open(ifile, SMB_VERSION, oflags, &err)) == NULL) { (void) fprintf(stderr, "%s: failed to load SMBIOS: %s\n", g_pname, smbios_errmsg(err)); return (SMBIOS_ERROR); } if (ofile != NULL) { if ((fd = open(ofile, O_WRONLY|O_CREAT|O_TRUNC, 0666)) == -1) { (void) fprintf(stderr, "%s: failed to open %s: %s\n", g_pname, ofile, strerror(errno)); err = SMBIOS_ERROR; } else if (smbios_write(shp, fd) != 0) { (void) fprintf(stderr, "%s: failed to write %s: %s\n", g_pname, ofile, smbios_errmsg(smbios_errno(shp))); err = SMBIOS_ERROR; } smbios_close(shp); return (err); } if (opt_e) { print_smbios(shp, stdout); smbios_close(shp); return (SMBIOS_SUCCESS); } if (opt_O && (opt_i != -1 || opt_t != -1)) opt_O++; /* -i or -t imply displaying obsolete records */ if (opt_i != -1) err = smbios_lookup_id(shp, opt_i, &s); else err = smbios_iter(shp, print_struct, stdout); if (err != 0) { (void) fprintf(stderr, "%s: failed to access SMBIOS: %s\n", g_pname, smbios_errmsg(smbios_errno(shp))); smbios_close(shp); return (SMBIOS_ERROR); } if (opt_i != -1) (void) print_struct(shp, &s, stdout); smbios_close(shp); return (SMBIOS_SUCCESS); }