示例#1
0
/**
 * Funcion que añade un nodo a la lista que ya esta creada
 * 
 * 
 * */
void add_node(struct publicacion **primero){
		
	struct publicacion *node = (struct publicacion *) malloc (sizeof (struct publicacion));
	char *tipo_contribucion;

	printf ("Conferencia o Articulo(c/a): ");
	tipo_contribucion = string_read();
	
	if ( strcmp (tipo_contribucion,"c") ){
		node->tipo_contribucion = 0;
	} else if ( strcmp (tipo_contribucion,"a") ){
		node->tipo_contribucion = 1;
	}
	
	free (tipo_contribucion);
	
	printf ("\nID: ");
	node->id = data_read();
	
	printf("\nTitulo de publicacion: ");
	node->titulo_publicacion = string_read();
	
	printf("\nNombre de la fuente: ");
	node->nombre_fuente = string_read();
	
	printf("\nAutores: ");
	node->autores = string_read();
	
	printf("\nAño de publicacion: ");
	node->ano_publicacion = data_read();
	
	printf("\nISBN/ISSN: ");
	node->isbn_issn = (long) data_read();
	
	if (node->tipo_contribucion == 0){
		printf ("\nLugar de la conferencia: ");
		node->lugar_conferencia = string_read();
	} else if (node->tipo_contribucion == 1){
		printf ("\nVolumen de la revista: ");
		node->vol_revista = data_read();
		printf ("\nNumero de la revista: ");
		node->num_revista = data_read();
	}
	
	node->next = *primero;
	*primero = node;
		
	printf ("\n");
	return;
		
}
示例#2
0
/**
 * Funcion que modifica una publicacion, pasando su id como argumento a la funcion
 * 
 * 
 * */
void update_publication (struct publicacion *primero, int id){
	
	struct publicacion *aux;
	aux = primero;
	char *titulo_publicacion;
	
	while (aux != NULL){
		
		if (aux->id == id){
			
			printf ("Titulo de la publicacion: ");
			titulo_publicacion = string_read();
			strcpy(aux->titulo_publicacion, titulo_publicacion);
			free (titulo_publicacion);
			
			return;
			
		} else {
			aux = aux->next;
		}
		
	}
	
	return;
	
}
示例#3
0
static void process_record_string(FILE *file, struct strings *strings)
{
	assert(file);
	assert(strings);

	strings_add(strings, string_read(file));
}
示例#4
0
文件: pbap.c 项目: Sork007/obexd
static ssize_t vobject_pull_read(void *object, void *buf, size_t count)
{
	struct pbap_object *obj = object;
	struct pbap_session *pbap = obj->session;
	int len, ret;

	DBG("buffer %p maxlistcount %d", obj->buffer,
						pbap->params->maxlistcount);

	if (!obj->buffer && !obj->aparams)
		return -EAGAIN;

	if (pbap->params->maxlistcount == 0)
		return -ENOSTR;

	len = string_read(obj->buffer, buf, count);
	if (len == 0 && !obj->lastpart) {
		/* in case when buffer is empty and we know that more
		 * data is still available in backend, requesting new
		 * data part via phonebook_pull_read and returning
		 * -EAGAIN to suspend request for now */
		ret = phonebook_pull_read(obj->request);
		if (ret)
			return -EPERM;

		return -EAGAIN;
	}

	return len;
}
示例#5
0
文件: pbap.c 项目: Sork007/obexd
static ssize_t vobject_vcard_read(void *object, void *buf, size_t count)
{
	struct pbap_object *obj = object;

	DBG("buffer %p", obj->buffer);

	if (!obj->buffer)
		return -EAGAIN;

	return string_read(obj->buffer, buf, count);
}
示例#6
0
static ssize_t capability_read(void *object, void *buf, size_t count)
{
	struct capability_object *obj = object;

	if (obj->buffer)
		return string_read(obj->buffer, buf, count);

	if (obj->pid >= 0)
		return -EAGAIN;

	return read(obj->output, buf, count);
}
示例#7
0
static ssize_t irmc_read(void *object, void *buf, size_t count)
{
	struct irmc_session *irmc = object;
	int len;

	DBG("buffer %p count %zu", irmc->buffer, count);
	if (!irmc->buffer)
                return -EAGAIN;

	len = string_read(irmc->buffer, buf, count);
	DBG("returning %d bytes", len);
	return len;
}
示例#8
0
文件: pbap.c 项目: Sork007/obexd
static ssize_t vobject_list_read(void *object, void *buf, size_t count)
{
	struct pbap_object *obj = object;
	struct pbap_session *pbap = obj->session;

	DBG("valid %d maxlistcount %d", pbap->cache.valid,
						pbap->params->maxlistcount);

	if (pbap->params->maxlistcount == 0)
		return -ENOSTR;

	return string_read(obj->buffer, buf, count);
}
示例#9
0
static ssize_t any_read(void *obj, void *buf, size_t count)
{
	struct mas_session *mas = obj;
	ssize_t len;

	DBG("");

	len = string_read(mas->buffer, buf, count);

	if (len == 0 && !mas->finished)
		return -EAGAIN;

	return len;
}
示例#10
0
static ssize_t capability_read(void *object, void *buf, size_t count,
								uint8_t *hi)
{
	struct capability_object *obj = object;

	*hi = OBEX_HDR_BODY;

	if (obj->buffer)
		return string_read(obj->buffer, buf, count);

	if (obj->pid >= 0)
		return -EAGAIN;

	return read(obj->output, buf, count);
}
示例#11
0
static ssize_t synce_read(void *object, void *buf, size_t count, uint8_t *hi)
{
	struct synce_context *context = object;
	DBusConnection *conn;
	char transport[36], transport_description[24];
	const char *session;
	DBusMessage *msg;
	DBusMessageIter iter, dict;
	gboolean authenticate;
	DBusPendingCall *call;

	if (context->buffer) {
		*hi = OBEX_HDR_BODY;
		return string_read(context->buffer, buf, count);
	}

	conn = obex_dbus_get_connection();
	if (conn == NULL)
		return -EPERM;

	msg = dbus_message_new_method_call(SYNCE_BUS_NAME, SYNCE_PATH,
				SYNCE_SERVER_INTERFACE, "Connect");
	if (!msg)
		return -EPERM;

	dbus_message_iter_init_append(msg, &iter);
	dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
		DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
		DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_STRING_AS_STRING
		DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

	append_dict_entry(&dict, "id", DBUS_TYPE_STRING, context->id);

	snprintf(transport, sizeof(transport), "%s.obexd",
					OPENOBEX_SERVICE);
	append_dict_entry(&dict, "transport", DBUS_TYPE_STRING, transport);

	snprintf(transport_description, sizeof(transport_description),
						"version %s", VERSION);
	append_dict_entry(&dict, "transport_description", DBUS_TYPE_STRING,
							transport_description);

	dbus_message_iter_close_container(&iter, &dict);

	authenticate = FALSE;
	session = "";
	dbus_message_append_args(msg, DBUS_TYPE_BOOLEAN, &authenticate,
			DBUS_TYPE_STRING, &session, DBUS_TYPE_INVALID);

	if (!dbus_connection_send_with_reply(conn, msg, &call, -1)) {
		error("D-Bus call to %s failed.", SYNCE_SERVER_INTERFACE);
		dbus_message_unref(msg);
		return -EPERM;
	}

	dbus_pending_call_set_notify(call, connect_cb, context, NULL);

	dbus_pending_call_unref(call);
	dbus_message_unref(msg);

	return -EAGAIN;
}
示例#12
0
static ssize_t folder_read(void *object, void *buf, size_t count)
{
	return string_read(object, buf, count);
}
示例#13
0
static ssize_t folder_read(void *object, void *buf, size_t count, uint8_t *hi)
{
	*hi = OBEX_HDR_BODY;
	return string_read(object, buf, count);
}