[ekg2-commit] ekg2: drafts.c (HEAD) jogger.c (HEAD) messages.c (HEAD) [peres]

CVS commit cvs w toxygen.net
Nie, 6 Maj 2007, 11:31:29 CEST


Module name:	ekg2
Changes by:	peres	2007-05-06 11:31:27

Modified files:
	drafts.c jogger.c messages.c

Log message:
- iconv in drafts.c,
- more secure iconved tables handling (CC will issue a warning, if #define
  specifies less elements than we really declare).

Index: drafts.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/drafts.c,v
diff -d -u -r1.4 -r1.5
--- drafts.c	6 May 2007 09:16:33 -0000	1.4
+++ drafts.c	6 May 2007 09:31:26 -0000	1.5
@@ -31,9 +31,11 @@
 #include <ekg/windows.h>
 #include <ekg/xmalloc.h>
 
-	/* XXX, iconvize */
+#define JOGGER_KEYS_MAX 25
+#define JOGGER_VALUES_MAX 14
+
 	/* 10 char-long don't use ':', because they're already on limit (longer ones are discarded) */
-const char *jogger_header_keys[] = {
+const char *utf_jogger_header_keys[JOGGER_KEYS_MAX] = {
 	"tytul:",	"temat:",	"subject:",	"tytuł:",		NULL,
 	"tag:",									NULL,
 	"poziom:",	"level:",						NULL,
@@ -45,7 +47,7 @@
 	NULL
 };
 
-const char *jogger_header_values[] = {
+const char *utf_jogger_header_values[JOGGER_VALUES_MAX] = {
 	"off",		"no",		"nie",		"wylacz",	"wyłącz",
 	"on",		"yes",		"tak",		"wlacz",	"włącz",	NULL,
 
@@ -53,6 +55,44 @@
 	NULL
 };
 
+char *jogger_header_keys[JOGGER_KEYS_MAX];
+char *jogger_header_values[JOGGER_VALUES_MAX];
+
+void jogger_free_headers(int real_free) {
+	int i;
+
+	for (i = 0; i < JOGGER_KEYS_MAX; i++) {
+		if (real_free)
+			xfree(jogger_header_keys[i]);
+		jogger_header_keys[i] = NULL;
+	}
+	for (i = 0; i < JOGGER_VALUES_MAX; i++) {
+		if (real_free)
+			xfree(jogger_header_values[i]);
+		jogger_header_values[i] = NULL;
+	}
+}
+
+void jogger_localize_headers(void *p) {
+	int i;
+
+	jogger_free_headers(1);
+	for (i = 0; i < JOGGER_KEYS_MAX; i++) {
+		char *s = ekg_convert_string_p(utf_jogger_header_keys[i], p);
+
+		if (!s)
+			s = xstrdup(utf_jogger_header_keys[i]);
+		jogger_header_keys[i] = s;
+	}
+	for (i = 0; i < JOGGER_VALUES_MAX; i++) {
+		char *s = ekg_convert_string_p(utf_jogger_header_values[i], p);
+
+		if (!s)
+			s = xstrdup(utf_jogger_header_values[i]);
+		jogger_header_values[i] = s;
+	}
+}
+
 /**
  * jogger_openfile()
  *

Index: jogger.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/jogger.c,v
diff -d -u -r1.16 -r1.17
--- jogger.c	6 May 2007 09:16:33 -0000	1.16
+++ jogger.c	6 May 2007 09:31:26 -0000	1.17
@@ -21,6 +21,7 @@
 #include <ekg/plugins.h>
 #include <ekg/queries.h>
 #include <ekg/sessions.h>
+#include <ekg/stuff.h>
 #include <ekg/themes.h>
 #include <ekg/userlist.h>
 #include <ekg/xmalloc.h>
@@ -40,6 +41,8 @@
 COMMAND(jogger_subscribe);
 
 	/* drafts.c */
+void jogger_localize_headers();
+void jogger_free_headers(int real_free);
 COMMAND(jogger_prepare);
 COMMAND(jogger_publish);
 
@@ -196,8 +199,11 @@
 
 static QUERY(jogger_postconfig) {
 	list_t l;
+	void *p = ekg_convert_string_init("UTF-8", NULL, NULL);
 
-	jogger_localize_texts();
+	jogger_localize_texts(p);
+	jogger_localize_headers(p);
+	ekg_convert_string_destroy(p);
 
 	for (l = sessions; l; l = l->next) {
 		session_t *js = l->data;
@@ -292,6 +298,7 @@
 	plugin_unregister(&jogger_plugin);
 	
 	jogger_free_texts(1);
+	jogger_free_headers(1);
 
 	return 0;
 }

Index: messages.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/messages.c,v
diff -d -u -r1.14 -r1.15
--- messages.c	5 May 2007 21:13:36 -0000	1.14
+++ messages.c	6 May 2007 09:31:26 -0000	1.15
@@ -28,12 +28,12 @@
 #include <ekg/userlist.h>
 #include <ekg/xmalloc.h>
 
+#define JOGGER_TEXT_MAX 13
+
 	/* jogger.c */
 session_t *jogger_session_find_uid(session_t *s, const char *uid);
 
-/* Thanks to sparrow, we need to pack big&stinky iconv into this small plugin */
-
-const char *utf_jogger_text[] = {
+const char *utf_jogger_text[JOGGER_TEXT_MAX] = {
 	"Do Twojego joggera został dodany komentarz",		/* [0] url (#eid[ / Texti*])\n----------------\n */
 	"Pojawil sie nowy komentarz do wpisu",			/* [1] as above */
 
@@ -53,8 +53,6 @@
 	"Do śledzonego joggera został dodany nowy wpis:",	/* [12] url (#eid[ / Texti*]) */
 };
 
-#define JOGGER_TEXT_MAX 13
-
 char *jogger_text[JOGGER_TEXT_MAX];
 
 void jogger_free_texts(int real_free) {
@@ -67,9 +65,8 @@
 	}
 }
 
-void jogger_localize_texts() {
+void jogger_localize_texts(void *p) {
 	int i;
-	void *p = ekg_convert_string_init("UTF-8", NULL, NULL);
 
 	jogger_free_texts(1);
 	for (i = 0; i < JOGGER_TEXT_MAX; i++) {
@@ -79,7 +76,6 @@
 			s = xstrdup(utf_jogger_text[i]);
 		jogger_text[i] = s;
 	}
-	ekg_convert_string_destroy(p);
 }
 
 QUERY(jogger_msghandler) {


Więcej informacji o liście dyskusyjnej ekg2-commit