projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
330c013
)
libs/lmo: skip all entries with identical key and value when generating lmo archives
author
Jo-Philipp Wich
<jow@openwrt.org>
Sun, 2 Jan 2011 18:16:54 +0000
(18:16 +0000)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Sun, 2 Jan 2011 18:16:54 +0000
(18:16 +0000)
libs/lmo/src/lmo_po2lmo.c
patch
|
blob
|
history
diff --git
a/libs/lmo/src/lmo_po2lmo.c
b/libs/lmo/src/lmo_po2lmo.c
index
afe894e
..
380f18d
100644
(file)
--- a/
libs/lmo/src/lmo_po2lmo.c
+++ b/
libs/lmo/src/lmo_po2lmo.c
@@
-1,7
+1,7
@@
/*
* lmo - Lua Machine Objects - PO to LMO conversion tool
*
/*
* lmo - Lua Machine Objects - PO to LMO conversion tool
*
- * Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
+ * Copyright (C) 2009
-2011
Jo-Philipp Wich <xm@subsignal.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-59,7
+59,6
@@
static int extract_string(const char *src, char *dest, int len)
{
off++;
esc = 1;
{
off++;
esc = 1;
-
}
else if( src[pos] != '"' )
{
}
else if( src[pos] != '"' )
{
@@
-85,6
+84,7
@@
int main(int argc, char *argv[])
int state = 0;
int offset = 0;
int length = 0;
int state = 0;
int offset = 0;
int length = 0;
+ uint32_t key_id, val_id;
FILE *in;
FILE *out;
FILE *in;
FILE *out;
@@
-155,25
+155,31
@@
int main(int argc, char *argv[])
{
if( strlen(key) > 0 && strlen(val) > 0 )
{
{
if( strlen(key) > 0 && strlen(val) > 0 )
{
- if( (entry = (lmo_entry_t *) malloc(sizeof(lmo_entry_t))) != NULL )
- {
- memset(entry, 0, sizeof(entry));
- length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
-
- entry->key_id = htonl(sfh_hash(key, strlen(key)));
- entry->val_id = htonl(sfh_hash(val, strlen(val)));
- entry->offset = htonl(offset);
- entry->length = htonl(strlen(val));
+ key_id = sfh_hash(key, strlen(key));
+ val_id = sfh_hash(val, strlen(val));
- print(val, length, 1, out);
- offset += length;
-
- entry->next = head;
- head = entry;
- }
- else
+ if( key_id != val_id )
{
{
- die("Out of memory");
+ if( (entry = (lmo_entry_t *) malloc(sizeof(lmo_entry_t))) != NULL )
+ {
+ memset(entry, 0, sizeof(entry));
+ length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
+
+ entry->key_id = htonl(key_id);
+ entry->val_id = htonl(val_id);
+ entry->offset = htonl(offset);
+ entry->length = htonl(strlen(val));
+
+ print(val, length, 1, out);
+ offset += length;
+
+ entry->next = head;
+ head = entry;
+ }
+ else
+ {
+ die("Out of memory");
+ }
}
}
}
}