void SCTPChunkStatisticsDialog::on_pushButton_clicked() { FILE* fp; pref_t *pref = prefs_find_preference(prefs_find_module("sctp"),"statistics_chunk_types"); if (!pref) { g_log(NULL, G_LOG_LEVEL_ERROR, "Can't find preference sctp/statistics_chunk_types"); return; } uat_t *uat = prefs_get_uat_value(pref); gchar* fname = uat_get_actual_filename(uat,TRUE); if (!fname) { return; } fp = ws_fopen(fname,"w"); if (!fp && errno == ENOENT) { gchar *pf_dir_path = NULL; if (create_persconffile_dir(&pf_dir_path) != 0) { g_free (pf_dir_path); return; } fp = ws_fopen(fname,"w"); } if (!fp) { return; } g_free (fname); fprintf(fp,"# This file is automatically generated, DO NOT MODIFY.\n"); char str[40]; struct chunkTypes tempChunk; for (int i = 0; i < chunks.size(); i++) { tempChunk = chunks.value(i); g_snprintf(str, sizeof str, "\"%d\",\"%s\",\"%s\"\n", tempChunk.id, tempChunk.name, tempChunk.hide==0?"Show":"Hide"); fputs(str, fp); void *rec = g_malloc0(uat->record_size); uat_add_record(uat, rec, TRUE); if (uat->free_cb) { uat->free_cb(rec); } g_free(rec); } fclose(fp); }
static void uat_plen_record_post_update_cb(void) { guint i, num_default; uat_plen_record_t rec; /* If there are no records, create default list */ if (num_plen_uat == 0) { num_default = sizeof(default_range)/sizeof(range_t); /* default values for packet lengths */ for (i = 0; i < num_default; i++) { rec.packet_range = &default_range[i]; uat_add_record(plen_uat, &rec, TRUE); } } }
/* * Create a new filter_expression and add it to the end of the list * of filter_expressions. */ filter_expression_t* filter_expression_new(const gchar *label, const gchar *expr, const gchar *comment, const gboolean enabled) { filter_expression_t expression; // UAT allocates its own memory and then deep-copies this structure in. memset(&expression, 0, sizeof(expression)); expression.label = (gchar *)label; expression.expression = (gchar *)expr; expression.comment = (gchar *)comment; expression.enabled = enabled; /* XXX - This is just returned to make GTK GUI work. */ return (filter_expression_t*)uat_add_record(display_filter_macro_uat, &expression, TRUE); }
void UatDialog::addRecord(bool copy_from_current) { if (!uat_) return; void *rec = g_malloc0(uat_->record_size); if (copy_from_current && uat_->copy_cb) { QTreeWidgetItem *item = ui->uatTreeWidget->currentItem(); if (!item) return; guint row = item->data(0, Qt::UserRole).toUInt(); uat_->copy_cb(rec, UAT_INDEX_PTR(uat_, row), uat_->record_size); } else { for (guint col = 0; col < uat_->ncols; col++) { uat_field_t *field = &uat_->fields[col]; switch (field->mode) { case PT_TXTMOD_ENUM: guint length; char *str; field->cb.tostr(rec, &str, &length, field->cbdata.tostr, field->fld_data); field->cb.set(rec, str, length, field->cbdata.set, field->fld_data); g_free(str); break; case PT_TXTMOD_NONE: break; default: field->cb.set(rec, "", 0, field->cbdata.set, field->fld_data); break; } } } uat_add_record(uat_, rec, TRUE); if (uat_->free_cb) { uat_->free_cb(rec); } g_free(rec); uat_->changed = TRUE; updateItems(); activateLastItem(); }