Exemple #1
0
int flib_ipcbase_send_raw(flib_ipcbase *ipc, const void *data, size_t len) {
    if(log_badargs_if2(ipc==NULL, data==NULL && len>0)
            || log_w_if(!ipc->sock, "flib_ipcbase_send_raw: Not connected.")) {
        return -1;
    }
    if(flib_socket_send(ipc->sock, data, len) == len) {
        logSentMsg(data, len);
        return 0;
    } else {
        flib_log_w("Failed or incomplete IPC write: engine connection lost.");
        flib_socket_close(ipc->sock);
        ipc->sock = NULL;
        return -1;
    }
}
Exemple #2
0
int flib_ini_get_bool(flib_ini *ini, bool *outVar, const char *key) {
	char *tmpValue = NULL;
	int result = flib_ini_get_str(ini, &tmpValue, key);
	if(result==0) {
		bool trueval = strchr("1tTyY", tmpValue[0]);
		bool falseval = strchr("0fFnN", tmpValue[0]);
		if(!trueval && !falseval) {
			flib_log_w("ini setting %s/%s = \"%s\" is not a recognized truth value.", ini->currentSection, key, tmpValue);
			result = INI_ERROR_FORMAT;
		} else {
			*outVar = trueval;
		}
	}
	free(tmpValue);
	return result;
}
Exemple #3
0
int flib_ini_get_int(flib_ini *ini, int *outVar, const char *key) {
	char *tmpValue = NULL;
	int result = flib_ini_get_str(ini, &tmpValue, key);
	if(result==0) {
		errno = 0;
		long val = strtol(tmpValue, NULL, 10);
		if(errno!=0 || val<INT_MIN || val>INT_MAX) {
			flib_log_w("Cannot parse ini setting %s/%s = \"%s\" as integer.", ini->currentSection, key, tmpValue);
			result = INI_ERROR_FORMAT;
		} else {
			*outVar = val;
		}
	}
	free(tmpValue);
	return result;
}
Exemple #4
0
static void setField(char field[WEAPONS_COUNT+1], const char *line, int lineLen, bool no9) {
	if(lineLen>WEAPONS_COUNT) {
		lineLen = WEAPONS_COUNT;
	}

	char min = '0';
	char max = no9 ? '8' : '9';
	for(int i=0; i<lineLen; i++) {
		if(line[i] >= min && line[i] <= max) {
			field[i] = line[i];
		} else {
			flib_log_w("Invalid character in weapon config string \"%.*s\", position %i", lineLen, line, i);
			field[i] = '0';
		}
	}
	for(int i=lineLen; i<WEAPONS_COUNT; i++) {
		field[i] = '0';
	}
	field[WEAPONS_COUNT] = 0;
}
Exemple #5
0
int flib_ipcbase_recv_message(flib_ipcbase *ipc, void *data) {
    if(log_badargs_if2(ipc==NULL, data==NULL)) {
        return -1;
    }

    if(!isMessageReady(ipc)) {
        receiveToBuffer(ipc);
    }

    if(isMessageReady(ipc)) {
        int msgsize = ipc->readBuffer[0]+1;
        popFromReadBuffer(ipc, data, msgsize);
        logRecvMsg(data);
        return msgsize;
    } else if(!ipc->sock && ipc->readBufferSize>0) {
        flib_log_w("Last message from engine data stream is incomplete (received %u of %u bytes)", (unsigned)ipc->readBufferSize, (unsigned)(ipc->readBuffer[0])+1);
        ipc->readBufferSize = 0;
        return -1;
    } else {
        return -1;
    }
}