Beispiel #1
0
void p_telnet_device_refresh_readout(int client, struct s_console *console) {
	fd_set sockets;
	struct timeval timeout = {0, d_telnet_device_timeout};
	char character;
	if (v_telnet_device.clients[client].socket.initialized) {
		FD_ZERO(&sockets);
		FD_SET(v_telnet_device.clients[client].socket.socket, &sockets);
		if (select(v_telnet_device.clients[client].socket.socket+1, &sockets, NULL, NULL, &timeout) > 0)
			while (read(v_telnet_device.clients[client].socket.socket, &character, 1) > 0) {
				if (character == '\n') {
					if (f_string_strlen(v_telnet_device.clients[client].buffer) > 0) {
						if (f_string_strcmp(v_telnet_device.clients[client].buffer, d_magrathea_exit_command) != 0) {
#ifdef d_telnet_echoing
							fprintf(stdout, "[<<] %s\n", v_telnet_device.clients[client].buffer);
							fflush(stdout);
#endif
							p_console_execute(console, v_telnet_device.clients[client].buffer,
									v_telnet_device.clients[client].socket.socket);
							p_telnet_device_refresh_command(client);
						} else {
							p_telnet_device_destroy_client(client);
							break;
						}
					}
					memset(v_telnet_device.clients[client].buffer, 0, d_string_buffer_size);
					v_telnet_device.clients[client].data_pointer = 0;
					break;
				} else if (character == '\b') {
					if (v_telnet_device.clients[client].data_pointer > 0)
						v_telnet_device.clients[client].buffer[--(v_telnet_device.clients[client].data_pointer)] = '\0';
				} else if ((character != '\r') && (v_telnet_device.clients[client].data_pointer < (d_string_buffer_size-1)))
					v_telnet_device.clients[client].buffer[v_telnet_device.clients[client].data_pointer++] = character;
			}
	}
}
Beispiel #2
0
d_define_method(emitter, get)(struct s_object *self, const char *id) {
    d_using(emitter);
    struct s_signal *signal = NULL;
    d_foreach(&(emitter_attributes->signals), signal, struct s_signal)
        if (f_string_strcmp(signal->id, id) == 0)
            break;
    return (void *)signal;
}
Beispiel #3
0
void p_keys_int(struct s_list *list, const char *key, const char postfix, int *value) {
	struct s_keys_entry *entry;
	char buffer[d_string_buffer_size];
	snprintf(buffer, d_string_buffer_size, "%s_%c", key, postfix);
	d_foreach(list, entry, struct s_keys_entry)
		if (f_string_strcmp(entry->key, buffer) == 0) {
			*value = atoi(entry->value);
			break;
		}
}
Beispiel #4
0
int f_analyze_exclude(const char *file) {
	char buffer[PATH_MAX];
	FILE *stream;
	int result = d_true;
	if ((stream = fopen(d_analyzer_database, "r"))) {
		while (!feof(stream))
			if ((fgets(buffer, PATH_MAX, stream))) {
				f_string_trim(buffer);
				if (f_string_strcmp(buffer, file) == 0) {
					result = d_false;
					break;
				}
			}
		fclose(stream);
	}
	if (result)
		if ((stream = fopen(d_analyzer_database, "a"))) {
			fprintf(stream, "%s\n", file);
			fclose(stream);
		}
	return result;
}