// The contents of this file are subject to the Mozilla Public License // Version 1.0 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // http://www.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations // under the License. // // The Original Code is the Berkeley Open Infrastructure for Network Computing. // // The Initial Developer of the Original Code is the SETI@home project. // Portions created by the SETI@home project are Copyright (C) 2002 // University of California at Berkeley. All Rights Reserved. // // Contributor(s): // #include #include #include "parse.h" #include "hostinfo.h" #include "error_numbers.h" // Parse the host information, usually from the client state XML file // int HOST_INFO::parse(FILE* in) { char buf[256]; if(in==NULL) { fprintf(stderr, "error: HOST_INFO.parse: unexpected NULL pointer in\n"); return ERR_NULL; } memset(this, 0, sizeof(HOST_INFO)); while (fgets(buf, 256, in)) { if (match_tag(buf, "")) return 0; else if (parse_int(buf, "", timezone)) continue; else if (parse_str(buf, "", domain_name)) continue; else if (parse_str(buf, "", ip_addr)) continue; else if (parse_int(buf, "", p_ncpus)) continue; else if (parse_str(buf, "", p_vendor)) continue; else if (parse_str(buf, "", p_model)) continue; else if (parse_double(buf, "", p_fpops)) continue; else if (parse_double(buf, "", p_iops)) continue; else if (parse_double(buf, "", p_membw)) continue; else if (parse_double(buf, "", p_calculated)) continue; else if (parse_str(buf, "", os_name)) continue; else if (parse_str(buf, "", os_version)) continue; else if (parse_double(buf, "", m_nbytes)) continue; else if (parse_double(buf, "", m_cache)) continue; else if (parse_double(buf, "", m_swap)) continue; else if (parse_double(buf, "", d_total)) continue; else if (parse_double(buf, "", d_free)) continue; else fprintf(stderr, "HOST_INFO::parse(): unrecognized: %s\n", buf); } return 0; } // Write the host information, usually to the client state XML file // int HOST_INFO::write(FILE* out) { if(out==NULL) { fprintf(stderr, "error: HOST_INFO.write: unexpected NULL pointer out\n"); return ERR_NULL; } fprintf(out, "\n" " %d\n" " %s\n" " %s\n" " %d\n" " %s\n" " %s\n" " %f\n" " %f\n" " %f\n" " %f\n" " %s\n" " %s\n" " %f\n" " %f\n" " %f\n" " %f\n" " %f\n" "\n", timezone, domain_name, ip_addr, p_ncpus, p_vendor, p_model, p_fpops, p_iops, p_membw, p_calculated, os_name, os_version, m_nbytes, m_cache, m_swap, d_total, d_free ); return 0; }