/** * 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; }
/** * 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; }
static void process_record_string(FILE *file, struct strings *strings) { assert(file); assert(strings); strings_add(strings, string_read(file)); }
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; }
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); }
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); }
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; }
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); }
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; }
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); }
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; }
static ssize_t folder_read(void *object, void *buf, size_t count) { return string_read(object, buf, count); }
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); }