[gq-commit] gq/src configfile.c,1.40,1.41 configfile.h,1.28,1.29 state.c,1.4,1.5
Status: Beta
Brought to you by:
sur5r
|
From: <sta...@us...> - 2003-10-12 05:30:46
|
Update of /cvsroot/gqclient/gq/src
In directory sc8-pr-cvs1:/tmp/cvs-serv5162
Modified Files:
configfile.c configfile.h state.c
Log Message:
* Made XML writing attribute aware
Index: configfile.c
===================================================================
RCS file: /cvsroot/gqclient/gq/src/configfile.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -C2 -d -r1.40 -r1.41
*** configfile.c 11 Oct 2003 22:38:51 -0000 1.40
--- configfile.c 12 Oct 2003 05:30:41 -0000 1.41
***************
*** 263,300 ****
}
! void config_write_bool(struct writeconfig *wc, int value, const char *entity)
{
! char outstr[128];
! assert(strlen(entity) < 40);
! snprintf(outstr, sizeof(outstr),
! "<%s>%s</%s>\n", entity, value ? "True" : "False", entity);
! config_write(wc, outstr);
}
! void config_write_int(struct writeconfig *wc, int value, const char *entity)
{
! char outstr[128];
! assert(strlen(entity) < 40);
! snprintf(outstr, sizeof(outstr),
! "<%s>%d</%s>\n", entity, value, entity);
! config_write(wc, outstr);
}
! void config_write_string(struct writeconfig *wc, const char *value, const char *entity)
{
! GString *outstr;
gunichar c;
! outstr = g_string_sized_new(1024);
! g_string_sprintf(outstr, "<%s>", entity);
! for(c = g_utf8_get_char(value); c; value = g_utf8_next_char(value), c = g_utf8_get_char(value)) {
switch(c) {
case '<':
--- 263,348 ----
}
+ static void append_single_attr(const char *key, const char *val,
+ GString *str)
+ {
+ g_string_sprintfa(str, " %s='%s'", key, val);
+ }
! static void start_tag(GString *str, const char *entity, GHashTable *attr)
{
! g_string_sprintfa(str, "<%s", entity);
! if (attr) {
! g_hash_table_foreach(attr, (GHFunc) append_single_attr, str);
! }
! g_string_sprintfa(str, ">");
! }
! static void end_tag(GString *str, const char *entity)
! {
! g_string_sprintfa(str, "</%s>\n", entity);
! }
+ void config_write_start_tag(struct writeconfig *wc,
+ const char *entity, GHashTable *attr)
+ {
+ GString *outstr = g_string_sized_new(128);
+
+ start_tag(outstr, entity, attr);
+ g_string_append(outstr, "\n");
+
+ config_write(wc, outstr->str);
+ g_string_free(outstr, TRUE);
}
+ void config_write_end_tag(struct writeconfig *wc, const char *entity)
+ {
+ GString *outstr = g_string_sized_new(128);
! end_tag(outstr, entity);
!
! config_write(wc, outstr->str);
! g_string_free(outstr, TRUE);
! }
!
!
! void config_write_bool(struct writeconfig *wc, int value, const char *entity,
! GHashTable *attr)
{
! GString *outstr = g_string_sized_new(128);
! start_tag(outstr, entity, attr);
! g_string_sprintfa(outstr, "%s", value ? "True" : "False");
! end_tag(outstr, entity);
+ config_write(wc, outstr->str);
+ g_string_free(outstr, TRUE);
}
! void config_write_int(struct writeconfig *wc, int value, const char *entity,
! GHashTable *attr)
{
! GString *outstr = g_string_sized_new(128);
!
! start_tag(outstr, entity, attr);
! g_string_sprintfa(outstr, "%d", value);
! end_tag(outstr, entity);
!
! config_write(wc, outstr->str);
! g_string_free(outstr, TRUE);
! }
!
!
! void config_write_string(struct writeconfig *wc,
! const char *value,
! const char *entity, GHashTable *attr)
! {
! GString *outstr = g_string_sized_new(1024);
gunichar c;
! start_tag(outstr, entity, attr);
! for(c = g_utf8_get_char(value); c ;
! value = g_utf8_next_char(value), c = g_utf8_get_char(value)) {
switch(c) {
case '<':
***************
*** 318,324 ****
}
! g_string_append(outstr, "</");
! g_string_append(outstr, entity);
! g_string_append(outstr, ">\n");
config_write(wc, outstr->str);
--- 366,370 ----
}
! end_tag(outstr, entity);
config_write(wc, outstr->str);
***************
*** 328,335 ****
void config_write_string_ne(struct writeconfig *wc,
! const char *value, const char *entity)
{
! if(value && strlen(value))
! config_write_string(wc, value, entity);
}
--- 374,383 ----
void config_write_string_ne(struct writeconfig *wc,
! const char *value,
! const char *entity, GHashTable *attr)
{
! if(value && strlen(value)) {
! config_write_string(wc, value, entity, attr);
! }
}
***************
*** 341,346 ****
wc->indent++;
! config_write_string(wc, key, "dt-attribute");
! config_write_int(wc, *value, "dt-default");
wc->indent--;
--- 389,394 ----
wc->indent++;
! config_write_string(wc, key, "dt-attribute", NULL);
! config_write_int(wc, *value, "dt-default", NULL);
wc->indent--;
***************
*** 411,440 ****
if (cfg->config_version > 0) {
! config_write_int(wc, cfg->config_version, "config-version");
! config_write_int(wc, cfg->config_version, "asked-config-version");
! config_write_int(wc, cfg->config_version, "last-asked");
}
! config_write_bool(wc, cfg->confirm_mod, "confirm-mod");
! config_write_string(wc, detokenize(token_searchargument, cfg->search_argument),
! "search-argument");
! config_write_bool(wc, cfg->showdn, "show-dn");
! config_write_bool(wc, cfg->showoc, "show-oc");
! config_write_bool(wc, cfg->show_rdn_only, "show-rdn-only");
! config_write_bool(wc, cfg->sort_search, "sort-search-mode");
! config_write_bool(wc, cfg->sort_browse, "sort-browse-mode");
config_write_bool(wc, cfg->restore_window_sizes,
! "restore-window-sizes");
config_write_bool(wc, cfg->restore_window_positions,
! "restore-window-positions");
config_write_bool(wc, cfg->restore_search_history,
! "restore-search-history");
config_write_bool(wc, cfg->restore_tabs,
! "restore-tabs");
! config_write_string(wc, detokenize(token_ldifformat, cfg->ldifformat), "ldif-format");
if(strlen(cfg->schemaserver))
! config_write_string(wc, cfg->schemaserver, "schema-server");
config_write(wc, "\n");
--- 459,491 ----
if (cfg->config_version > 0) {
! config_write_int(wc, cfg->config_version, "config-version", NULL);
! config_write_int(wc, cfg->config_version, "asked-config-version",
! NULL);
! config_write_int(wc, cfg->config_version, "last-asked", NULL);
}
! config_write_bool(wc, cfg->confirm_mod, "confirm-mod", NULL);
! config_write_string(wc, detokenize(token_searchargument,
! cfg->search_argument),
! "search-argument", NULL);
! config_write_bool(wc, cfg->showdn, "show-dn", NULL);
! config_write_bool(wc, cfg->showoc, "show-oc", NULL);
! config_write_bool(wc, cfg->show_rdn_only, "show-rdn-only", NULL);
! config_write_bool(wc, cfg->sort_search, "sort-search-mode", NULL);
! config_write_bool(wc, cfg->sort_browse, "sort-browse-mode", NULL);
config_write_bool(wc, cfg->restore_window_sizes,
! "restore-window-sizes", NULL);
config_write_bool(wc, cfg->restore_window_positions,
! "restore-window-positions", NULL);
config_write_bool(wc, cfg->restore_search_history,
! "restore-search-history", NULL);
config_write_bool(wc, cfg->restore_tabs,
! "restore-tabs", NULL);
! config_write_string(wc, detokenize(token_ldifformat, cfg->ldifformat),
! "ldif-format", NULL);
if(strlen(cfg->schemaserver))
! config_write_string(wc, cfg->schemaserver, "schema-server", NULL);
config_write(wc, "\n");
***************
*** 448,465 ****
wc->indent++;
! config_write_string(wc, server->name, "name");
! config_write_string(wc, server->ldaphost, "ldaphost");
! config_write_int(wc, server->ldapport, "ldapport");
! config_write_string_ne(wc, server->basedn, "basedn");
! config_write_string_ne(wc, server->binddn, "binddn");
if (cfg->config_version == 0) {
! config_write_string_ne(wc, server->bindpw, "bindpw");
} else {
GString *pw = g_string_sized_new(32);
b64_encode(pw, server->bindpw, strlen(server->bindpw));
! config_write_string_ne(wc, pw->str, "bindpw");
! config_write_string_ne(wc, "Base64", "pw-encoding");
g_string_free(pw, TRUE);
--- 499,516 ----
wc->indent++;
! config_write_string(wc, server->name, "name", NULL);
! config_write_string(wc, server->ldaphost, "ldaphost", NULL);
! config_write_int(wc, server->ldapport, "ldapport", NULL);
! config_write_string_ne(wc, server->basedn, "basedn", NULL);
! config_write_string_ne(wc, server->binddn, "binddn", NULL);
if (cfg->config_version == 0) {
! config_write_string_ne(wc, server->bindpw, "bindpw", NULL);
} else {
GString *pw = g_string_sized_new(32);
b64_encode(pw, server->bindpw, strlen(server->bindpw));
! config_write_string_ne(wc, pw->str, "bindpw", NULL);
! config_write_string_ne(wc, "Base64", "pw-encoding", NULL);
g_string_free(pw, TRUE);
***************
*** 467,486 ****
if(server->bindtype != DEFAULT_BINDTYPE)
! config_write_string_ne(wc, detokenize(token_bindtype, server->bindtype), "bindtype");
! config_write_string_ne(wc, server->searchattr, "search-attribute");
if(server->maxentries != DEFAULT_MAXENTRIES)
! config_write_int(wc, server->maxentries, "maxentries");
if(server->cacheconn != DEFAULT_CACHECONN)
! config_write_bool(wc, server->cacheconn, "cache-connection");
if(server->enabletls != DEFAULT_ENABLETLS)
! config_write_bool(wc, server->enabletls, "enable-tls");
if(server->local_cache_timeout != DEFAULT_LOCAL_CACHE_TIMEOUT)
! config_write_int(wc, server->local_cache_timeout, "local-cache-timeout");
if(server->ask_pw != DEFAULT_ASK_PW)
! config_write_bool(wc, server->ask_pw, "ask-pw");
if(server->hide_internal != DEFAULT_HIDE_INTERNAL)
! config_write_bool(wc, server->hide_internal, "hide-internal");
if(server->show_ref != DEFAULT_SHOW_REF)
! config_write_bool(wc, server->show_ref, "show-ref");
wc->indent--;
--- 518,541 ----
if(server->bindtype != DEFAULT_BINDTYPE)
! config_write_string_ne(wc, detokenize(token_bindtype, server->bindtype), "bindtype", NULL);
! config_write_string_ne(wc, server->searchattr,
! "search-attribute", NULL);
if(server->maxentries != DEFAULT_MAXENTRIES)
! config_write_int(wc, server->maxentries, "maxentries", NULL);
if(server->cacheconn != DEFAULT_CACHECONN)
! config_write_bool(wc, server->cacheconn,
! "cache-connection", NULL);
if(server->enabletls != DEFAULT_ENABLETLS)
! config_write_bool(wc, server->enabletls, "enable-tls", NULL);
if(server->local_cache_timeout != DEFAULT_LOCAL_CACHE_TIMEOUT)
! config_write_int(wc, server->local_cache_timeout,
! "local-cache-timeout", NULL);
if(server->ask_pw != DEFAULT_ASK_PW)
! config_write_bool(wc, server->ask_pw, "ask-pw", NULL);
if(server->hide_internal != DEFAULT_HIDE_INTERNAL)
! config_write_bool(wc, server->hide_internal,
! "hide-internal", NULL);
if(server->show_ref != DEFAULT_SHOW_REF)
! config_write_bool(wc, server->show_ref, "show-ref", NULL);
wc->indent--;
***************
*** 495,502 ****
wc->indent++;
! config_write_string(wc, template->name, "name");
oclist = template->objectclasses;
while(oclist) {
! config_write_string(wc, (char *) oclist->data, "objectclass");
oclist = g_list_next(oclist);
}
--- 550,558 ----
wc->indent++;
! config_write_string(wc, template->name, "name", NULL);
oclist = template->objectclasses;
while(oclist) {
! config_write_string(wc, (char *) oclist->data,
! "objectclass", NULL);
oclist = g_list_next(oclist);
}
***************
*** 515,524 ****
wc->indent++;
! config_write_string(wc, filter->name, "name");
! config_write_string(wc, filter->ldapfilter, "ldapfilter");
if(filter->servername[0])
! config_write_string(wc, filter->servername, "servername");
if(filter->basedn[0])
! config_write_string(wc, filter->basedn, "basedn");
wc->indent--;
--- 571,580 ----
wc->indent++;
! config_write_string(wc, filter->name, "name", NULL);
! config_write_string(wc, filter->ldapfilter, "ldapfilter", NULL);
if(filter->servername[0])
! config_write_string(wc, filter->servername, "servername", NULL);
if(filter->basedn[0])
! config_write_string(wc, filter->basedn, "basedn", NULL);
wc->indent--;
Index: configfile.h
===================================================================
RCS file: /cvsroot/gqclient/gq/src/configfile.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** configfile.h 11 Oct 2003 21:47:51 -0000 1.28
--- configfile.h 12 Oct 2003 05:30:41 -0000 1.29
***************
*** 129,141 ****
void free_writeconfig(struct writeconfig *wc);
void config_write(struct writeconfig *wc, const char *string);
void config_write_bool(struct writeconfig *wc,
! int value, const char *entity);
void config_write_int(struct writeconfig *wc,
! int value, const char *entity);
void config_write_string(struct writeconfig *wc,
! const char *value, const char *entity);
void config_write_string_ne(struct writeconfig *wc,
! const char *value, const char *entity);
--- 129,147 ----
void free_writeconfig(struct writeconfig *wc);
+ void config_write_start_tag(struct writeconfig *wc,
+ const char *entity, GHashTable *attr);
+ void config_write_end_tag(struct writeconfig *wc, const char *entity);
+
void config_write(struct writeconfig *wc, const char *string);
void config_write_bool(struct writeconfig *wc,
! int value, const char *entity, GHashTable *attr);
void config_write_int(struct writeconfig *wc,
! int value, const char *entity, GHashTable *attr);
void config_write_string(struct writeconfig *wc,
! const char *value,
! const char *entity, GHashTable *attr);
void config_write_string_ne(struct writeconfig *wc,
! const char *value,
! const char *entity, GHashTable *attr);
Index: state.c
===================================================================
RCS file: /cvsroot/gqclient/gq/src/state.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** state.c 11 Oct 2003 22:34:18 -0000 1.4
--- state.c 12 Oct 2003 05:30:41 -0000 1.5
***************
*** 491,521 ****
struct writeconfig *wc)
{
- int len = strlen(value_name) + 80;
- char *msg = g_malloc(len);
GList *l;
! snprintf(msg, len, "<state-value name='%s' type='%s'>\n", value_name,
! detokenize(token_value_type_names, v->type));
! config_write(wc, msg);
!
! wc->indent++;
switch (v->type) {
case SV_int:
! snprintf(msg, len, "%d\n", *(v->val.int_val));
! config_write(wc, msg);
break;
case SV_char:
! if (v->val.char_val) {
! config_write(wc, v->val.char_val);
! config_write(wc, "\n");
! }
break;
case SV_list:
wc->indent++;
for ( l = v->val.list_val ; l ; l = g_list_next(l)) {
! config_write_string(wc, l->data, "list-item");
}
wc->indent--;
break;
default:
--- 491,519 ----
struct writeconfig *wc)
{
GList *l;
+ GHashTable *attr = g_hash_table_new(g_str_hash, g_str_equal);
! g_hash_table_insert(attr, "name", (void *) value_name);
! g_hash_table_insert(attr, "type",
! (void *) detokenize(token_value_type_names, v->type));
switch (v->type) {
case SV_int:
! config_write_int(wc, *(v->val.int_val), "state-value", attr);
break;
case SV_char:
! config_write_string(wc, v->val.char_val, "state-value", attr);
break;
case SV_list:
+ config_write_start_tag(wc, "state-value", attr);
wc->indent++;
+
for ( l = v->val.list_val ; l ; l = g_list_next(l)) {
! config_write_string(wc, l->data, "list-item", NULL);
}
+
wc->indent--;
+ config_write_end_tag(wc, "state-value");
+
break;
default:
***************
*** 523,530 ****
}
! g_free(msg);
!
! wc->indent--;
! config_write(wc, "</state-value>\n");
}
--- 521,525 ----
}
! g_hash_table_destroy(attr);
}
***************
*** 533,543 ****
struct writeconfig *wc)
{
! int len = strlen(state_name) + 80;
! char *msg = g_malloc(len);
! snprintf(msg, len, "<entity name='%s'>\n", state_name);
! config_write(wc, msg);
! g_free(msg);
! wc->indent++;
g_hash_table_foreach(e->values,
(GHFunc) save_single_value,
--- 528,539 ----
struct writeconfig *wc)
{
! GHashTable *attr = g_hash_table_new(g_str_hash, g_str_equal);
!
! g_hash_table_insert(attr, "name", (void *) state_name);
! config_write_start_tag(wc, "entity", attr);
!
! g_hash_table_destroy(attr);
+ wc->indent++;
g_hash_table_foreach(e->values,
(GHFunc) save_single_value,
***************
*** 547,553 ****
(GHFunc) save_single_entity,
wc);
-
wc->indent--;
! config_write(wc, "</entity>\n");
}
--- 543,549 ----
(GHFunc) save_single_entity,
wc);
wc->indent--;
!
! config_write_end_tag(wc, "entity");
}
***************
*** 605,609 ****
#endif
! config_write(wc, "<gq-state>\n");
wc->indent++;
--- 601,605 ----
#endif
! config_write_start_tag(wc, "gq-state", NULL);
wc->indent++;
***************
*** 613,617 ****
wc->indent--;
! config_write(wc, "</gq-state>\n");
free_writeconfig(wc);
--- 609,613 ----
wc->indent--;
! config_write_end_tag(wc, "gq-state");
free_writeconfig(wc);
|