Author: peter
Date: 2007-12-29 01:32:03 +0000 (Sat, 29 Dec 2007)
New Revision: 26516
Modified:
squeeze/trunk/data/gnu-tar.squeeze
squeeze/trunk/data/unzip.squeeze
squeeze/trunk/data/zip.squeeze
squeeze/trunk/docs/reference/libsqueeze/tmpl/archive.sgml
squeeze/trunk/docs/reference/libsqueeze/tmpl/libsqueeze-unused.sgml
squeeze/trunk/libsqueeze/archive.c
squeeze/trunk/libsqueeze/archive.h
squeeze/trunk/libsqueeze/parser.c
squeeze/trunk/libsqueeze/parser.h
squeeze/trunk/libsqueeze/scanf-parser.c
squeeze/trunk/libsqueeze/scanf-parser.h
squeeze/trunk/libsqueeze/support-reader.c
squeeze/trunk/libsqueeze/support-template.c
squeeze/trunk/libsqueeze/support-template.h
Log:
lsq_support_reader_parse_file also creates the scanf parser from the .squeeze
file
made squeeze compile again
Modified: squeeze/trunk/data/gnu-tar.squeeze
===================================================================
--- squeeze/trunk/data/gnu-tar.squeeze 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/data/gnu-tar.squeeze 2007-12-29 01:32:03 UTC (rev 26516)
@@ -57,7 +57,7 @@
X-Squeeze-Options=Password
# I wonder if this will be enough...
-X-Squeeze-Parse=%s %s %i %s %s %f
+X-Squeeze-Parse=%s %s %u %s %s %F
X-Squeeze-Separator=space
[Squeeze-Option-Password]
Modified: squeeze/trunk/data/unzip.squeeze
===================================================================
--- squeeze/trunk/data/unzip.squeeze 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/data/unzip.squeeze 2007-12-29 01:32:03 UTC (rev 26516)
@@ -18,7 +18,7 @@
X-Squeeze-Options=Password
# I wonder if this will be enough...
-X-Squeeze-Parse=%s %s %i %s %s %f
+X-Squeeze-Parse=%s %s %u %s %s %F
X-Squeeze-Separator=space
[Squeeze-Option-Password]
Modified: squeeze/trunk/data/zip.squeeze
===================================================================
--- squeeze/trunk/data/zip.squeeze 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/data/zip.squeeze 2007-12-29 01:32:03 UTC (rev 26516)
@@ -23,7 +23,7 @@
X-Squeeze-Options=Password
# I wonder if this will be enough...
-X-Squeeze-Parse=%s %s %i %s %s %f
+X-Squeeze-Parse=%s %s %u %s %s %F
X-Squeeze-Separator=space
[Squeeze-Option-Password]
Modified: squeeze/trunk/docs/reference/libsqueeze/tmpl/archive.sgml
===================================================================
--- squeeze/trunk/docs/reference/libsqueeze/tmpl/archive.sgml 2007-12-28
16:40:43 UTC (rev 26515)
+++ squeeze/trunk/docs/reference/libsqueeze/tmpl/archive.sgml 2007-12-29
01:32:03 UTC (rev 26516)
@@ -116,6 +116,16 @@
@Returns:
+<!-- ##### FUNCTION lsq_archive_add_file ##### -->
+<para>
+
+</para>
+
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
+
+
<!-- ##### FUNCTION lsq_archive_get_iter ##### -->
<para>
Modified: squeeze/trunk/docs/reference/libsqueeze/tmpl/libsqueeze-unused.sgml
===================================================================
--- squeeze/trunk/docs/reference/libsqueeze/tmpl/libsqueeze-unused.sgml
2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/docs/reference/libsqueeze/tmpl/libsqueeze-unused.sgml
2007-12-29 01:32:03 UTC (rev 26516)
@@ -120,13 +120,11 @@
@entry:
@next:
-<!-- ##### FUNCTION lsq_archive_add_file ##### -->
+<!-- ##### FUNCTION lsq_archive_command_get_type ##### -->
<para>
</para>
[EMAIL PROTECTED]:
[EMAIL PROTECTED]:
@Returns:
<!-- ##### FUNCTION lsq_archive_command_run ##### -->
Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/libsqueeze/archive.c 2007-12-29 01:32:03 UTC (rev 26516)
@@ -379,11 +379,3 @@
return FALSE;
}
-void
-lsq_archive_set_property_type(LSQArchive *archive, guint n, GType type)
-{
- if (n >= LSQ_ARCHIVE_PROP_USER)
- {
-
lsq_support_template_set_property_type(archive->priv->s_template, n, type);
- }
-}
Modified: squeeze/trunk/libsqueeze/archive.h
===================================================================
--- squeeze/trunk/libsqueeze/archive.h 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/libsqueeze/archive.h 2007-12-29 01:32:03 UTC (rev 26516)
@@ -103,11 +103,7 @@
gboolean lsq_archive_operate(LSQArchive *archive, LSQCommandType
type);
-void
-lsq_archive_set_property_type(LSQArchive *archive, guint n, GType type);
-
-
G_END_DECLS
#endif /* __ARCHIVE_H__ */
Modified: squeeze/trunk/libsqueeze/parser.c
===================================================================
--- squeeze/trunk/libsqueeze/parser.c 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/libsqueeze/parser.c 2007-12-29 01:32:03 UTC (rev 26516)
@@ -58,3 +58,38 @@
klass->parse(self, ctx);
}
+guint
+lsq_parser_n_properties(LSQParser *parser)
+{
+ return parser->n_properties;
+}
+
+GType
+lsq_parser_get_property_type(LSQParser *parser, guint nr)
+{
+ g_return_val_if_fail(nr < parser->n_properties, G_TYPE_NONE);
+ return parser->property_types[nr];
+}
+
+void
+lsq_parser_set_property_type(LSQParser *parser, guint nr, GType type)
+{
+ if(nr >= parser->n_properties)
+ {
+ GType *new_list = g_new(GType, nr+1);
+ guint i;
+ for(i=0; i < parser->n_properties; i++)
+ {
+ new_list[i] = parser->property_types[i];
+ }
+ while(i<nr)
+ {
+ new_list[i++] = G_TYPE_NONE;
+ }
+ g_free(parser->property_types);
+ parser->property_types = new_list;
+ parser->n_properties = nr+1;
+ }
+ parser->property_types[nr] = type;
+}
+
Modified: squeeze/trunk/libsqueeze/parser.h
===================================================================
--- squeeze/trunk/libsqueeze/parser.h 2007-12-28 16:40:43 UTC (rev 26515)
+++ squeeze/trunk/libsqueeze/parser.h 2007-12-29 01:32:03 UTC (rev 26516)
@@ -44,11 +44,16 @@
LSQParserClass))
+#if 0
typedef struct _LSQParser LSQParser;
+#endif
struct _LSQParser
{
GObject parent;
+
+ guint n_properties;
+ GType *property_types;
};
@@ -69,6 +74,10 @@
void lsq_parser_parse(LSQParser *, LSQParserContext *);
+guint lsq_parser_n_properties(LSQParser *);
+GType lsq_parser_get_property_type(LSQParser *, guint);
+void lsq_parser_set_property_type(LSQParser *, guint, GType);
+
G_END_DECLS
#endif /* __LIBSQUEEZE_PARSER_H__ */
Modified: squeeze/trunk/libsqueeze/scanf-parser.c
===================================================================
--- squeeze/trunk/libsqueeze/scanf-parser.c 2007-12-28 16:40:43 UTC (rev
26515)
+++ squeeze/trunk/libsqueeze/scanf-parser.c 2007-12-29 01:32:03 UTC (rev
26516)
@@ -72,11 +72,7 @@
{
LSQParser parent;
- guint num_props;
- gchar **prop_names;
- GType *prop_types;
parse_part *parser;
-
};
struct _LSQScanfParserClass
@@ -102,15 +98,14 @@
ctx = g_object_new(lsq_scanf_parser_context_get_type(), "archive",
archive);
- ctx->data_store = g_new0(union _data_store, parser->num_props);
- ctx->props_store = g_new0(gpointer, parser->num_props);
+ guint n_props = lsq_parser_n_properties(LSQ_PARSER(parser));
+ ctx->data_store = g_new0(union _data_store, n_props);
+ ctx->props_store = g_new0(gpointer, n_props);
- lsq_archive_set_properties(archive, parser->num_props, parser->prop_names,
parser->prop_types);
-
return LSQ_PARSER_CONTEXT(ctx);
}
-static void build_parser(LSQScanfParser *, const gchar *, const gchar *);
+static void build_parser(LSQScanfParser *, const gchar *);
static void lsq_scanf_parser_parse(LSQScanfParser *, LSQScanfParserContext *);
@@ -131,13 +126,13 @@
parser_class->parse =
(void(*)(LSQParser*,LSQParserContext*))lsq_scanf_parser_parse;
}
-LSQParser *lsq_scanf_parser_new(const gchar *names_string, const gchar
*parser_string)
+LSQParser *lsq_scanf_parser_new(const gchar *parser_string)
{
LSQScanfParser *parser;
parser = g_object_new(LSQ_TYPE_SCANF_PARSER, NULL);
- build_parser(parser, names_string, parser_string);
+ build_parser(parser, parser_string);
return LSQ_PARSER(parser);
}
@@ -653,7 +648,7 @@
return new_str;
}/*}}}*/
-static void build_parser(LSQScanfParser *parser, const gchar *names_string,
const gchar *parser_string)
+static void build_parser(LSQScanfParser *parser, const gchar *parser_string)
{
const gchar *ptr;
const gchar *cur;
@@ -670,11 +665,6 @@
guint index_flag;
guint index;
- gchar **names = g_strsplit(names_string, "|", -1);
- g_return_if_fail(names);
- guint num_props = g_strv_length(names);
- GType *prop_types = g_new0(GType, num_props);
-
parse_part *part = g_new0(parse_part, 1);
parse_part *parts = part;
guint part_count = 0;
@@ -704,7 +694,7 @@
if(ch == '%')
continue;
- part->delimiter = strdup_escaped(cur, ptr-cur-1);
+ part->delimiter = strdup_escaped(cur, ptr-cur-2);
/*{{{ check differend index %.$*/
if(g_ascii_isdigit(ch))
@@ -720,9 +710,6 @@
}
/*}}}*/
- //FIXME: should be done neat
- g_return_if_fail(index < num_props);
-
/*{{{ check skip flag %*.*/
if(ch == '*')
{
@@ -759,16 +746,15 @@
ch = *ptr++;
break;
}
- if(!ch)
- break;
+ if(!ch)
+ break;
/*}}}*/
switch(ch)
{
/*{{{ byte %b*/
case 'b':
- if(width_flag)
- return;
+ g_return_if_fail(!width_flag);
part->next = g_new0(parse_part, 1);
part = part->next;
if(skip_flag)
@@ -797,19 +783,19 @@
{
case SIZE_NORMAL:
part->function = parse_byte;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_SHORT:
part->function = parse_word;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_LONG:
part->function = parse_dword;
- prop_types[index] = G_TYPE_ULONG;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_ULONG);
break;
case SIZE_LONGLONG:
part->function = parse_qword;
- prop_types[index] = G_TYPE_UINT64;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT64);
break;
}
}
@@ -817,8 +803,7 @@
/*}}}*/
/*{{{ character %c*/
case 'c':
- if(size_flag || width_flag)
- return;
+ g_return_if_fail(!size_flag && !width_flag);
part->next = g_new0(parse_part, 1);
part = part->next;
if(skip_flag)
@@ -830,13 +815,13 @@
part_count++;
part->index = index;
part->function = parse_char;
- prop_types[index] = G_TYPE_CHAR;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_CHAR);
}
break;
/*}}}*/
/*{{{ decimal %d*/
case 'd':
- //case 'i':
+ case 'i':
part->next = g_new0(parse_part, 1);
part = part->next;
part->width = width_flag;
@@ -852,19 +837,19 @@
{
case SIZE_NORMAL:
part->function = parse_decimal;
- prop_types[index] = G_TYPE_INT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_INT);
break;
case SIZE_SHORT:
part->function = parse_decimal16;
- prop_types[index] = G_TYPE_INT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_INT);
break;
case SIZE_LONG:
part->function = parse_decimal32;
- prop_types[index] = G_TYPE_LONG;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_LONG);
break;
case SIZE_LONGLONG:
part->function = parse_decimal64;
- prop_types[index] = G_TYPE_INT64;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_INT64);
break;
}
}
@@ -872,8 +857,7 @@
/*}}}*/
/*{{{ floating point %d*/
case 'f':
- if(size_flag && size_flag != SIZE_LONGLONG)
- return;
+ g_return_if_fail(!size_flag || size_flag == SIZE_LONGLONG);
part->next = g_new0(parse_part, 1);
part = part->next;
part->width = width_flag;
@@ -889,11 +873,11 @@
{
case SIZE_NORMAL:
part->function = parse_floatingpoint;
- prop_types[index] = G_TYPE_FLOAT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_FLOAT);
break;
case SIZE_LONGLONG:
part->function = parse_double;
- prop_types[index] = G_TYPE_DOUBLE;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_DOUBLE);
break;
default:
break;
@@ -918,19 +902,19 @@
{
case SIZE_NORMAL:
part->function = parse_octal;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_SHORT:
part->function = parse_octal16;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_LONG:
part->function = parse_octal32;
- prop_types[index] = G_TYPE_ULONG;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_ULONG);
break;
case SIZE_LONGLONG:
part->function = parse_octal64;
- prop_types[index] = G_TYPE_UINT64;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT64);
break;
}
}
@@ -938,8 +922,7 @@
/*}}}*/
/*{{{ string %s*/
case 's':
- if(size_flag)
- return;
+ g_return_if_fail(!size_flag);
part->next = g_new0(parse_part, 1);
part = part->next;
part->width = width_flag;
@@ -952,7 +935,7 @@
part_count++;
part->index = index;
part->function = parse_string;
- prop_types[index] = G_TYPE_STRING;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_STRING);
}
break;
/*}}}*/
@@ -973,19 +956,19 @@
{
case SIZE_NORMAL:
part->function = parse_unsigned;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_SHORT:
part->function = parse_unsigned16;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_LONG:
part->function = parse_unsigned32;
- prop_types[index] = G_TYPE_ULONG;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_ULONG);
break;
case SIZE_LONGLONG:
part->function = parse_unsigned64;
- prop_types[index] = G_TYPE_UINT64;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT64);
break;
}
}
@@ -1009,19 +992,19 @@
{
case SIZE_NORMAL:
part->function = parse_hexadecimal;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_SHORT:
part->function = parse_hexadecimal16;
- prop_types[index] = G_TYPE_UINT;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT);
break;
case SIZE_LONG:
part->function = parse_hexadecimal32;
- prop_types[index] = G_TYPE_ULONG;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_ULONG);
break;
case SIZE_LONGLONG:
part->function = parse_hexadecimal64;
- prop_types[index] = G_TYPE_UINT64;
+ lsq_parser_set_property_type(LSQ_PARSER(parser), index,
G_TYPE_UINT64);
break;
}
}
@@ -1029,27 +1012,20 @@
/*}}}*/
/*{{{ filename %F*/
case 'F':
- if(skip_flag || size_flag || width_flag)
- return;
+ g_return_if_fail(!skip_flag && !size_flag && !width_flag);
part->next = g_new0(parse_part, 1);
part = part->next;
part->function = parse_filename;
break;
/*}}}*/
default:
- return;
+ g_return_if_reached();
}
cur = ptr;
}
}
- //FIXME: should be done neat
- g_return_if_fail(part_count == num_props);
-
parser->parser = parts;
- parser->num_props = num_props;
- parser->prop_names = names;
- parser->prop_types = prop_types;
}
static void lsq_scanf_parser_parse(LSQScanfParser *parser,
LSQScanfParserContext *ctx)
Modified: squeeze/trunk/libsqueeze/scanf-parser.h
===================================================================
--- squeeze/trunk/libsqueeze/scanf-parser.h 2007-12-28 16:40:43 UTC (rev
26515)
+++ squeeze/trunk/libsqueeze/scanf-parser.h 2007-12-29 01:32:03 UTC (rev
26516)
@@ -50,7 +50,7 @@
GType lsq_scanf_parser_get_type(void);
-LSQParser *lsq_scanf_parser_new(const gchar *, const gchar *);
+LSQParser *lsq_scanf_parser_new(const gchar *);
G_END_DECLS
Modified: squeeze/trunk/libsqueeze/support-reader.c
===================================================================
--- squeeze/trunk/libsqueeze/support-reader.c 2007-12-28 16:40:43 UTC (rev
26515)
+++ squeeze/trunk/libsqueeze/support-reader.c 2007-12-29 01:32:03 UTC (rev
26516)
@@ -29,6 +29,9 @@
#include "support-factory.h"
#include "archive-iter.h"
#include "archive.h"
+#include "parser-context.h"
+#include "parser.h"
+#include "scanf-parser.h"
#include "support-reader.h"
#include "internals.h"
@@ -137,6 +140,15 @@
gchar **mime_types = xfce_rc_read_list_entry(rc, "MimeType", ";");
+ xfce_rc_set_group(rc, "Squeeze-Refresh");
+ gchar **column_names = xfce_rc_read_list_entry(rc, "X-Squeeze-Headers", ";");
+ LSQParser *parser = NULL;
+ const gchar *parser_string = xfce_rc_read_entry(rc, "X-Squeeze-Parse", NULL);
+ if(parser_string)
+ {
+ parser = lsq_scanf_parser_new(parser_string);
+ }
+
gchar **_mime_types = mime_types;
for(i = 0; _mime_types[i]; ++i)
{
@@ -175,7 +187,11 @@
s_template->remove_cmd_queue = xfce_rc_read_list_entry(rc,
"X-Squeeze-Remove", ";");
s_template->extract_cmd_queue = xfce_rc_read_list_entry(rc,
"X-Squeeze-Extract", ";");
s_template->refresh_cmd_queue = xfce_rc_read_list_entry(rc,
"X-Squeeze-Refresh", ";");
-
+
+ s_template->n_properties = g_strv_length(column_names);
+ s_template->property_names = column_names;
+ s_template->parser = parser;
+
if (s_template->supported)
g_debug("%s supported\n", _mime_types[i]);
else
Modified: squeeze/trunk/libsqueeze/support-template.c
===================================================================
--- squeeze/trunk/libsqueeze/support-template.c 2007-12-28 16:40:43 UTC (rev
26515)
+++ squeeze/trunk/libsqueeze/support-template.c 2007-12-29 01:32:03 UTC (rev
26516)
@@ -26,8 +26,8 @@
GType
lsq_support_template_get_property_type(LSQSupportTemplate *templ, guint nr)
{
- g_return_val_if_fail(nr >= templ->n_properties, G_TYPE_NONE);
- return templ->property_types[nr];
+ g_return_val_if_fail(templ->parser, G_TYPE_NONE);
+ return lsq_parser_get_property_type(templ->parser);
}
const gchar *
@@ -40,12 +40,9 @@
guint
lsq_support_template_get_n_properties (LSQSupportTemplate *templ)
{
- g_return_val_if_fail(templ->n_properties >= 0, 0);
- return templ->n_properties;
+ guint n_props = lsq_parser_n_properties(templ->parser);
+ if(templ->n_properties > n_props)
+ n_props = templ->n_properties;
+ return n_props;
}
-
-void
-lsq_support_template_set_property_type(LSQSupportTemplate *templ, guint nr,
GType type)
-{
-}
Modified: squeeze/trunk/libsqueeze/support-template.h
===================================================================
--- squeeze/trunk/libsqueeze/support-template.h 2007-12-28 16:40:43 UTC (rev
26515)
+++ squeeze/trunk/libsqueeze/support-template.h 2007-12-29 01:32:03 UTC (rev
26516)
@@ -34,6 +34,10 @@
LSQ_COMMAND_TYPE_TEST
} LSQCommandType;
+#ifndef LSQParser
+typedef struct _LSQParser LSQParser;
+#endif
+
typedef struct _LSQSupportTemplate LSQSupportTemplate;
struct _LSQSupportTemplate
@@ -44,8 +48,8 @@
gboolean supported;
guint n_properties;
- GType *property_types;
gchar **property_names;
+ LSQParser *parser;
gchar **new_cmd_queue;
gchar **add_cmd_queue;
@@ -62,9 +66,6 @@
guint
lsq_support_template_get_n_properties (LSQSupportTemplate *s_template);
-void
-lsq_support_template_set_property_type(LSQSupportTemplate *s_template, guint
n, GType type);
-
#endif /* __SUPPORT_TEMPLATE_H__ */
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits