// 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 "client_state.h" #include "error_numbers.h" #include "file_names.h" #include "filesys.h" #include "util.h" #include "account.h" int CLIENT_STATE::parse_account_files() { DIRREF dir; char name[256]; PROJECT* project; FILE* f; dir = dir_open("."); while (dir_scan(name, dir, sizeof(name)) == 0) { if (is_account_file(name)) { f = fopen(name, "r"); if (!f) continue; project = new PROJECT; project->parse_account(f); projects.push_back(project); fclose(f); } } dir_close(dir); return 0; } int CLIENT_STATE::add_project(char* master_url, char* authenticator) { char path[256], buf[256]; PROJECT* project; FILE* f; int retval; // check if this project is already running // if (lookup_project(master_url)) { sprintf(buf, "Already attached to %s", master_url); show_message(0, buf, MSG_ERROR); return ERR_ALREADY_ATTACHED; } // create project state // project = new PROJECT; strcpy(project->master_url, master_url); strcpy(project->authenticator, authenticator); strip_whitespace(project->authenticator); project->tentative = true; retval = project->write_account_file(); if (retval) return retval; get_account_filename(master_url, path); f = fopen(path, "r"); if (!f) return ERR_FOPEN; retval = project->parse_account(f); fclose(f); if (retval) return retval; // remove any old files // retval = remove_project_dir(*project); retval = make_project_dir(*project); if (retval) return retval; projects.push_back(project); return 0; }