Example #1
0
bool state_read(const char *statedir, int *keyholder_id, char **keyholder_name, enum state *status, char **message) {
	char *status_str, *keyholder_id_str;

	if (keyholder_id) {
		keyholder_id_str = file_read(statedir, "keyholder-id");
		*keyholder_id = safe_atoi(keyholder_id_str);
	}

	if (keyholder_name) {
		*keyholder_name = file_read(statedir, "keyholder-name");
	}

	if (status) {
		status_str = file_read(statedir, "status");
		*status = str2state(status_str);
	}

	if (message) {
		*message = file_read(statedir, "message");
	}

	if ((keyholder_id && !keyholder_id_str) || (keyholder_name && !*keyholder_name) || (status && !status_str) || (message && !*message)) {
		if (keyholder_id)
			free(keyholder_id_str);
		if (keyholder_name)
			free(*keyholder_name);
		if (status)
			free(status_str);
		if (message)
			free(*message);

		return false;
	}

	free(keyholder_id_str);
	free(status_str);

	return true;
}
Example #2
0
// extract smartrns.data from DNS entry
smartrns_data_t smartrnsvec2smartrnsdata(vector<keyval_t> smartrnsvec)
{
    smartrns_data_t data;
    smartrns_data_entry_t entry;
    smartrns_data_entry_phone_t phone;   // only used if entry.type = phone
    smartrns_data_entry_email_t email;   // only used if entry.type = email
    smartrns_data_entry_icq_t icq;       // only used if entry.type = icq
    smartrns_data_entry_jabber_t jabber; // only used if entry.type = jabber
    uint32_t i;

    for(i=0;i<smartrnsvec.size();i++){
        if("smartrns.data.version" == smartrnsvec[i].key){
            data.version = smartrnsvec[i].val;
        }else if("smartrns.data.comment" == smartrnsvec[i].key){
            data.comment = smartrnsvec[i].val;
        }else if("smartrns.data.name" == smartrnsvec[i].key){
            data.name = smartrnsvec[i].val;
        }else if("smartrns.data.entry.name" == smartrnsvec[i].key){
            entry.name = smartrnsvec[i].val;
        }else if("smartrns.data.entry.comment" == smartrnsvec[i].key){
            entry.comment = smartrnsvec[i].val;
        }else if("smartrns.data.entry.type" == smartrnsvec[i].key){
            entry.type = str2entrytype(smartrnsvec[i].val);
        }else if("smartrns.data.entry.state" == smartrnsvec[i].key){
            entry.state = str2state(smartrnsvec[i].val);
        }else if("smartrns.data.entry.country" == smartrnsvec[i].key){
            phone.country = smartrnsvec[i].val;
        }else if("smartrns.data.entry.prefix" == smartrnsvec[i].key){
            phone.prefix = smartrnsvec[i].val;
        }else if("smartrns.data.entry.number" == smartrnsvec[i].key){
            phone.number = smartrnsvec[i].val;
        }else if("smartrns.data.entry.suffix" == smartrnsvec[i].key){
            phone.suffix = smartrnsvec[i].val;
        }else if("smartrns.data.entry.usage" == smartrnsvec[i].key){
            phone.usage = str2usagetype(smartrnsvec[i].val);
        }else if("smartrns.data.entry.subtype" == smartrnsvec[i].key){
            phone.subtype = str2subtype(smartrnsvec[i].val);
        }else if("smartrns.data.entry.email" == smartrnsvec[i].key){
            email.email = smartrnsvec[i].val;
        }else if("smartrns.data.entry.icq" == smartrnsvec[i].key){
            icq.icq = atoll(smartrnsvec[i].val.c_str());
        }else if("smartrns.data.entry.jabber" == smartrnsvec[i].key){
            jabber.jabber = smartrnsvec[i].val;
        }else if("smartrns.data.entry.push" == smartrnsvec[i].key){
            if("1" == smartrnsvec[i].val){
                if(PHONE_NR == entry.type){
                    entry.entry = (void*) new smartrns_data_entry_phone_t;
                    *((smartrns_data_entry_phone_t*) entry.entry) = phone;
                }else if(EMAIL == entry.type){
                    entry.entry = (void*) new smartrns_data_entry_email_t;
                    *((smartrns_data_entry_email_t*) entry.entry) = email;
                }else if(ICQ == entry.type){
                    entry.entry = (void*) new smartrns_data_entry_icq_t;
                    *((smartrns_data_entry_icq_t*) entry.entry) = icq;
                }else if(JABBER == entry.type){
                    entry.entry = (void*) new smartrns_data_entry_jabber_t;
                    *((smartrns_data_entry_jabber_t*) entry.entry) = jabber;
                }
                data.entries.push_back(entry);
            }

        }

    }

    return data;
}