[Xfce4-commits] r26206 - squeeze/trunk/libsqueeze

Peter de Ridder peter at xfce.org
Sun Oct 28 15:22:45 CET 2007


Author: peter
Date: 2007-10-28 14:22:44 +0000 (Sun, 28 Oct 2007)
New Revision: 26206

Modified:
   squeeze/trunk/libsqueeze/parser-context.c
   squeeze/trunk/libsqueeze/parser-context.h
   squeeze/trunk/libsqueeze/parser.h
   squeeze/trunk/libsqueeze/scanf-parser.c
Log:
added parse functions


Modified: squeeze/trunk/libsqueeze/parser-context.c
===================================================================
--- squeeze/trunk/libsqueeze/parser-context.c	2007-10-28 09:45:09 UTC (rev 26205)
+++ squeeze/trunk/libsqueeze/parser-context.c	2007-10-28 14:22:44 UTC (rev 26206)
@@ -38,6 +38,8 @@
 lsq_parser_context_init(LSQParserContext *self)
 {
 	self->archive = NULL;
+  self->channel = NULL;
+  self->last_stat = G_IO_STATUS_AGAIN;
 }
 
 static void
@@ -87,10 +89,28 @@
 	return ctx;
 }
 
+void
+lsq_parser_context_set_channel(LSQParserContext *ctx, GIOChannel *channel)
+{
+  ctx->channel = channel;
+  ctx->last_stat = G_IO_STATUS_AGAIN;
+}
+
 gboolean
 lsq_parser_context_get_line(LSQParserContext *ctx, gchar **line, gsize *length)
 {
 	GIOStatus stat;
 
-	/*stat = g_io_channel_read_line;*/
+	stat = g_io_channel_read_line(ctx->channel, line, length, NULL, NULL);
+
+  ctx->last_stat = stat;
+
+  return stat == G_IO_STATUS_NORMAL;
 }
+
+gboolean
+lsq_parser_context_is_good(LSQParserContext *ctx)
+{
+  return ctx->last_stat == G_IO_STATUS_NORMAL || ctx->last_stat == G_IO_STATUS_AGAIN;
+}
+

Modified: squeeze/trunk/libsqueeze/parser-context.h
===================================================================
--- squeeze/trunk/libsqueeze/parser-context.h	2007-10-28 09:45:09 UTC (rev 26205)
+++ squeeze/trunk/libsqueeze/parser-context.h	2007-10-28 14:22:44 UTC (rev 26206)
@@ -45,6 +45,9 @@
 	GObject parent;
 
 	LSQArchive *archive;
+
+  GIOChannel *channel;
+  GIOStatus last_stat;
 };
 
 typedef struct _LSQParserContextClass LSQParserContextClass;

Modified: squeeze/trunk/libsqueeze/parser.h
===================================================================
--- squeeze/trunk/libsqueeze/parser.h	2007-10-28 09:45:09 UTC (rev 26205)
+++ squeeze/trunk/libsqueeze/parser.h	2007-10-28 14:22:44 UTC (rev 26206)
@@ -38,7 +38,12 @@
 		G_TYPE_CHECK_CLASS_TYPE ((class),  \
 			LSQ_TYPE_PARSER))
 
+#define LSQ_PARSER_GET_CLASS(obj) (    \
+		G_TYPE_INSTANCE_GET_CLASS ((obj),  \
+			LSQ_TYPE_PARSER,                 \
+      LSQParserClass))
 
+
 typedef struct _LSQParser LSQParser;
 
 struct _LSQParser

Modified: squeeze/trunk/libsqueeze/scanf-parser.c
===================================================================
--- squeeze/trunk/libsqueeze/scanf-parser.c	2007-10-28 09:45:09 UTC (rev 26205)
+++ squeeze/trunk/libsqueeze/scanf-parser.c	2007-10-28 14:22:44 UTC (rev 26206)
@@ -23,12 +23,15 @@
 #include <thunar-vfs/thunar-vfs.h>
 #include "libsqueeze.h"
 #include "archive-iter.h"
+#include "parser-context.h"
+#include "parser.h"
 #include "scanf-parser.h"
 #include "archive.h"
 
 typedef struct _parse_part parse_part;
+typedef struct _LSQScanfParserContext LSQScanfParserContext;
 
-typedef guint (*LSQParseFunc)(gchar*, guint, parse_part*);
+typedef guint (*LSQParseFunc)(gchar*, guint, parse_part*, LSQScanfParserContext*);
 
 struct _parse_part
 {
@@ -36,11 +39,28 @@
 	LSQParseFunc function;
 	guint index;
 	guint width;
-	//gtype
 };
 
+struct _LSQScanfParserContext
+{
+  gchar *filename;
+  LSQParserContext parser;
+  union {
+    gchar   c;
+    gint    i;
+    guint   u;
+    glong   l;
+    gulong  ul;
+    gint64  ll;
+    guint64 ull;
+    gfloat  f;
+    gdouble d;
+  } *data_store;
+  gpointer *props_store;
+};
+
 /*{{{ skip functions*/
-guint skip_byte(gchar *str, guint lng, parse_part *part)
+guint skip_byte(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	if(lng < 1)
 		return 0;
@@ -48,7 +68,7 @@
 	return 1;
 }
 
-guint skip_word(gchar *str, guint lng, parse_part *part)
+guint skip_word(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	if(lng < 2)
 		return 0;
@@ -56,7 +76,7 @@
 	return 2;
 }
 
-guint skip_dword(gchar *str, guint lng, parse_part *part)
+guint skip_dword(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	if(lng < 4)
 		return 0;
@@ -64,7 +84,7 @@
 	return 4;
 }
 
-guint skip_qword(gchar *str, guint lng, parse_part *part)
+guint skip_qword(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	if(lng < 8)
 		return 0;
@@ -72,7 +92,7 @@
 	return 8;
 }
 
-guint skip_char(gchar *str, guint lng, parse_part *part)
+guint skip_char(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	const gchar *ptr;
 
@@ -89,7 +109,7 @@
 	return ptr - str;
 }
 
-guint skip_decimal(gchar *str, guint lng, parse_part *part)
+guint skip_decimal(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 #ifdef DO_EXSTENSIVE_CHECKING
@@ -117,7 +137,7 @@
 	return ptr - str;
 }
 
-guint skip_floatingpoint(gchar *str, guint lng, parse_part *part)
+guint skip_floatingpoint(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 #ifdef DO_EXSTENSIVE_CHECKING
@@ -145,7 +165,7 @@
 	return ptr - str;
 }
 
-guint skip_octal(gchar *str, guint lng, parse_part *part)
+guint skip_octal(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 #ifdef DO_EXSTENSIVE_CHECKING
@@ -173,7 +193,7 @@
 	return ptr - str;
 }
 
-guint skip_string(gchar *str, guint lng, parse_part *part)
+guint skip_string(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 
@@ -190,7 +210,7 @@
 	return ptr - str;
 }
 
-guint skip_unsigned(gchar *str, guint lng, parse_part *part)
+guint skip_unsigned(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 #ifdef DO_EXSTENSIVE_CHECKING
@@ -216,7 +236,7 @@
 	return ptr - str;
 }
 
-guint skip_hexadecimal(gchar *str, guint lng, parse_part *part)
+guint skip_hexadecimal(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
 	gchar *ptr;
 #ifdef DO_EXSTENSIVE_CHECKING
@@ -244,15 +264,178 @@
 /*}}}*/
 
 /*{{{ parse functions*/
-guint parse_byte(gchar *str, guint lng, parse_part *part)
+#define DEF_PARSE_BIN(func, bytes, type, ptype, pname)  \
+guint parse_##func(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx) { \
+  type  val;    \
+  ptype *pval;  \
+	if(lng < bytes) return 0; \
+  val = *((type*)str);  \
+	pval = &ctx->data_store[part->index].pname; \
+  *pval = val;  \
+  ctx->props_store[part->index] = pval; \
+	return bytes; \
+}
+
+#define DEF_PARSE_NUM(func, base, type, ptype, pname) \
+guint parse_##func(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx) {  \
+	gchar *ptr;   \
+	gchar *ptr2;  \
+  type  val;    \
+  ptype *pval;  \
+	if(!lng) return 0;  \
+	pval = &ctx->data_store[part->index].pname; \
+  ctx->props_store[part->index] = pval; \
+	if(!part->delimiter[0]) { \
+		val = g_ascii_strtoll(str, &ptr, base); \
+    *pval = val;  \
+		return ptr - str; \
+	} \
+	for(ptr = str; g_ascii_isspace(*ptr); ptr++);   \
+	ptr = g_strstr_len(ptr, lng, part->delimiter);  \
+  val = g_ascii_strtoll(str, &ptr2, base);  \
+  *pval = val;  \
+	if(ptr > ptr2) return 0;  \
+	return ptr - str; \
+}
+
+#define DEF_PARSE_FLOAT(func, type, pname)  \
+guint parse_##func(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx) {  \
+	gchar *ptr;   \
+	gchar *ptr2;  \
+  type  val;    \
+  type  *pval;  \
+	if(!lng) return 0;  \
+	pval = &ctx->data_store[part->index].pname; \
+  ctx->props_store[part->index] = pval; \
+	if(!part->delimiter[0]) { \
+		val = g_ascii_strtod(str, &ptr);  \
+    *pval = val;  \
+		return ptr - str; \
+	} \
+	for(ptr = str; g_ascii_isspace(*ptr); ptr++);   \
+	ptr = g_strstr_len(ptr, lng, part->delimiter);  \
+  val = g_ascii_strtod(str, &ptr2); \
+  *pval = val;  \
+	if(ptr > ptr2) return 0;  \
+	return ptr - str; \
+}
+
+#define DEF_PARSE_UNS(func, base, type, ptype, pname) \
+guint parse_##func(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx) {  \
+	gchar *ptr;   \
+	gchar *ptr2;  \
+  type  val;    \
+  ptype *pval;  \
+	if(!lng) return 0;  \
+	pval = &ctx->data_store[part->index].pname; \
+  ctx->props_store[part->index] = pval; \
+	if(!part->delimiter[0]) { \
+		val = g_ascii_strtoull(str, &ptr, base); \
+    *pval = val;  \
+		return ptr - str; \
+	} \
+	for(ptr = str; g_ascii_isspace(*ptr); ptr++);   \
+	ptr = g_strstr_len(ptr, lng, part->delimiter);  \
+  val = g_ascii_strtoull(str, &ptr2, base);  \
+  *pval = val;  \
+	if(ptr > ptr2) return 0;  \
+	return ptr - str; \
+}
+
+DEF_PARSE_BIN(byte, 1, gchar, guint, u)
+DEF_PARSE_BIN(word, 2, gushort, guint, u)
+DEF_PARSE_BIN(dword, 4, gulong, gulong, ul)
+DEF_PARSE_BIN(qword, 8, guint64, guint64, ull)
+
+guint parse_char(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
 {
-	if(lng < 1)
+	const gchar *ptr;
+  gchar val;
+  gchar *pval;
+
+	if(!lng)
 		return 0;
+
+	pval = &ctx->data_store[part->index].c;
+  ctx->props_store[part->index] = pval;
+
+	if(!part->delimiter[0])
+  {
+    val = *str;
+    *pval = val;
+		return 1;
+  }
+
+	//for(ptr = str; g_ascii_isspace(*ptr); ptr++);
+
+	ptr = g_strstr_len(str, lng, part->delimiter);
+
+  //FIXME?
+  val = *(ptr-1);
+  *pval = val;
 	
-	/*part->*/
+	return ptr - str;
+}
 
-	return 1;
+DEF_PARSE_NUM(decimal, 10, gint, gint, i)
+DEF_PARSE_NUM(decimal16, 10, gshort, gint, i)
+DEF_PARSE_NUM(decimal32, 10, glong, glong, l)
+DEF_PARSE_NUM(decimal64, 10, gint64, gint64, ll)
+
+DEF_PARSE_FLOAT(floatingpoint, gfloat, f)
+DEF_PARSE_FLOAT(double, gdouble, d)
+
+DEF_PARSE_UNS(octal, 010, guint, guint, u)
+DEF_PARSE_UNS(octal16, 010, gushort, guint, u)
+DEF_PARSE_UNS(octal32, 010, gulong, gulong, ul)
+DEF_PARSE_UNS(octal64, 010, guint64, guint64, ull)
+
+guint parse_string(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
+{
+	gchar *ptr;
+	gchar *cur;
+
+	if(!lng)
+		return 0;
+
+	if(!part->delimiter[0])
+		return 0;
+
+	for(cur = str; g_ascii_isspace(*cur); cur++);
+
+	ptr = g_strstr_len(cur, lng, part->delimiter);
+
+  ctx->props_store[part->index] = g_strndup(cur, ptr-cur);
+
+	return ptr - str;
 }
+
+DEF_PARSE_UNS(unsigned, 10, guint, guint, u)
+DEF_PARSE_UNS(unsigned16, 10, gushort, guint, u)
+DEF_PARSE_UNS(unsigned32, 10, gulong, gulong, ul)
+DEF_PARSE_UNS(unsigned64, 10, guint64, guint64, ull)
+
+DEF_PARSE_UNS(hexadecimal, 0x10, guint, guint, u)
+DEF_PARSE_UNS(hexadecimal16, 0x10, gushort, guint, u)
+DEF_PARSE_UNS(hexadecimal32, 0x10, gulong, gulong, ul)
+DEF_PARSE_UNS(hexadecimal64, 0x10, guint64, guint64, ull)
+
+guint parse_filename(gchar *str, guint lng, parse_part *part, LSQScanfParserContext *ctx)
+{
+	gchar *ptr;
+
+	if(!lng)
+		return 0;
+
+	if(!part->delimiter[0])
+		return 0;
+
+	ptr = g_strstr_len(str, lng, part->delimiter);
+
+  ctx->filename = g_strndup(str, ptr-str);
+
+	return ptr - str;
+}
 /*}}}*/
 
 gchar* strdup_escaped(const gchar *str, guint lng)/*{{{*/
@@ -387,11 +570,11 @@
 	return new_str;
 }/*}}}*/
 
-build_parser(LSQArchive *archive, const gchar *parse_string)
+void build_parser(LSQArchive *archive, const gchar *parser_string)
 {
 	const gchar *ptr;
 	const gchar *cur;
-	const gchar *pos;
+	gchar *pos;
 	gchar ch;
 	enum {
 		SIZE_NORMAL = FALSE,
@@ -408,7 +591,7 @@
 	GSList *parts = g_slist_prepend(NULL, part);
 	guint part_count = 0;
 
-	cur = ptr = parse_string;
+	cur = ptr = parser_string;
 
 	while((ch = *ptr++))
 	{
@@ -417,7 +600,8 @@
 			part->delimiter = strdup_escaped(cur, ptr-cur);
 			part = g_new0(parse_part, 1);
 			parts = g_slist_prepend(parts, part);
-			cur = ptr++;
+			cur = ++ptr;
+      continue;
 		}
 		if(ch == '%')
 		{
@@ -426,7 +610,8 @@
 			width_flag = 0;
 			index = part_count;
 
-			ch = *ptr++;
+			if(!(ch = *ptr++))
+        break;
 
 			if(ch == '%')
 				continue;
@@ -436,12 +621,13 @@
 			/*{{{ check differend index %.$*/
 			if(g_ascii_isdigit(ch))
 			{
-				index_flag = strtoul(ptr-1, &pos, 10);
+				index_flag = g_ascii_strtoull(ptr-1, &pos, 10);
 				if(*pos == '$')
 				{
 					ptr = pos+1;
 					index = index_flag-1;
-					ch = *ptr;
+          if(!(ch = *ptr++))
+            break;
 				}
 			}
 			/*}}}*/
@@ -450,7 +636,8 @@
 			if(ch == '*')
 			{
 				skip_flag = TRUE;
-				ch = *ptr++;
+        if(!(ch = *ptr++))
+          break;
 			}
 			/*}}}*/
 
@@ -459,7 +646,8 @@
 			if(g_ascii_isdigit(ch))
 			{
 				width_flag = strtoul(ptr-1, &ptr, 10);
-				ch = *ptr;
+        if(!(ch = *ptr++))
+          break;
 			}
 			/*}}}*/
 
@@ -480,6 +668,8 @@
 					ch = *ptr++;
 				break;
 			}
+      if(!ch)
+        break;
 			/*}}}*/
 
 			switch(ch)
@@ -518,23 +708,20 @@
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_SHORT:
-                                /* TODO: write parse_word func */
-								/* part->function = parse_word; */
+								part->function = parse_word;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_LONG:
-                                /* TODO: write parse_dword func */
-								/* part->function = parse_dword; */
+								part->function = parse_dword;
 								lsq_archive_set_property_type(archive, index, G_TYPE_ULONG);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_qword func */
-								/* part->function = parse_qword; */
+								part->function = parse_qword;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT64);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ character %c*/
@@ -550,11 +737,10 @@
 					{
 						part_count++;
 						part->index = index;
-                        /* TODO: write parse_char func */
-						/* part->function = parse_char; */
+						part->function = parse_char;
 						lsq_archive_set_property_type(archive, index, G_TYPE_CHAR);
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ decimal %d*/
@@ -573,28 +759,24 @@
 						switch(size_flag)
 						{
 							case SIZE_NORMAL:
-                                /* TODO: write parse_decimal func */
-								/* part->function = parse_decimal; */
+								part->function = parse_decimal;
 								lsq_archive_set_property_type(archive, index, G_TYPE_INT);
 							break;
 							case SIZE_SHORT:
-                                /* TODO: write parse_decimal16 func */
-								/* part->function = parse_decimal16; */
+								part->function = parse_decimal16;
 								lsq_archive_set_property_type(archive, index, G_TYPE_INT);
 							break;
 							case SIZE_LONG:
-                                /* TODO: write parse_decimal32 func */
-								/* part->function = parse_decimal32; */
+								part->function = parse_decimal32;
 								lsq_archive_set_property_type(archive, index, G_TYPE_LONG);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_decimal64 func */
-								/* part->function = parse_decimal64; */
+								part->function = parse_decimal64;
 								lsq_archive_set_property_type(archive, index, G_TYPE_INT64);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ floating point %d*/
@@ -614,18 +796,16 @@
 						switch(size_flag)
 						{
 							case SIZE_NORMAL:
-                                /* TODO: write parse_floatingpoint func */
-								/* part->function = parse_floatingpoint; */
+								part->function = parse_floatingpoint;
 								lsq_archive_set_property_type(archive, index, G_TYPE_FLOAT);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_double func */
-								/* part->function = parse_double; */
+								part->function = parse_double;
 								lsq_archive_set_property_type(archive, index, G_TYPE_DOUBLE);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ octal %o*/
@@ -643,28 +823,24 @@
 						switch(size_flag)
 						{
 							case SIZE_NORMAL:
-                                /* TODO: write parse_octal func */
-								/* part->function = parse_octal; */
+								part->function = parse_octal;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_SHORT:
-                                /* TODO: write parse_octal16 func */
-								/* part->function = parse_octal16; */
+								part->function = parse_octal16;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_LONG:
-                                /* TODO: write parse_octal32 func */
-								/* part->function = parse_octal32; */
+								part->function = parse_octal32;
 								lsq_archive_set_property_type(archive, index, G_TYPE_ULONG);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_octal64 func */
-								/* part->function = parse_octal64; */
+								part->function = parse_octal64;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT64);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ string %s*/
@@ -681,11 +857,10 @@
 					{
 						part_count++;
 						part->index = index;
-                        /* TODO: write parse_string func */
-						/* part->function = parse_string; */
+						part->function = parse_string;
 						lsq_archive_set_property_type(archive, index, G_TYPE_STRING);
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ unsigned decimal %u*/
@@ -703,28 +878,24 @@
 						switch(size_flag)
 						{
 							case SIZE_NORMAL:
-                                /* TODO: write parse_unsigned func */
-								/* part->function = parse_unsigned; */
+								part->function = parse_unsigned;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_SHORT:
-                                /* TODO: write parse_unsigned16 func */
-								/* part->function = parse_unsigned16; */
+								part->function = parse_unsigned16;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_LONG:
-                                /* TODO: write parse_unsigned32 func */
-								/* part->function = parse_unsigned32; */
+								part->function = parse_unsigned32;
 								lsq_archive_set_property_type(archive, index, G_TYPE_ULONG);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_unsigned64 func */
-								/* part->function = parse_unsigned64; */
+								part->function = parse_unsigned64;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT64);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ hexadecimal %x %X*/
@@ -743,28 +914,24 @@
 						switch(size_flag)
 						{
 							case SIZE_NORMAL:
-                                /* TODO: write parse_hexadecimal func */
-								/* part->function = parse_hexadecimal; */
+								part->function = parse_hexadecimal;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_SHORT:
-                                /* TODO: write parse_hexadecimal16 func */
-								/* part->function = parse_hexadecimal16; */
+								part->function = parse_hexadecimal16;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT);
 							break;
 							case SIZE_LONG:
-                                /* TODO: write parse_hexadecimal32 func */
-								/* part->function = parse_hexadecimal32; */
+								part->function = parse_hexadecimal32;
 								lsq_archive_set_property_type(archive, index, G_TYPE_ULONG);
 							break;
 							case SIZE_LONGLONG:
-                                /* TODO: write parse_hexadecimal64 func */
-								/* part->function = parse_hexadecimal64; */
+								part->function = parse_hexadecimal64;
 								lsq_archive_set_property_type(archive, index, G_TYPE_UINT64);
 							break;
 						}
 					}
-					g_slist_prepend(parts, part);
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				/*{{{ filename %F*/
@@ -772,9 +939,8 @@
 					if(skip_flag || size_flag || width_flag)
 						return;
 					part = g_new0(parse_part, 1);
-                    /* TODO: write parse_filename func */
-					/*part->function = parse_filename; */
-					g_slist_prepend(parts, part);
+					part->function = parse_filename;
+					parts = g_slist_prepend(parts, part);
 				break;
 				/*}}}*/
 				default:



More information about the Xfce4-commits mailing list