* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-04 17:15 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-04 17:15 UTC (permalink / raw
To: gentoo-commits
commit: 7193aa1fa1a5dbf2f0c714ff0e88f04bea5e962f
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sat Feb 4 17:12:18 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sat Feb 4 17:12:18 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=7193aa1f
Fixed some memory leaks. Thanks to Vincent Huisman.
---
helpers.c | 23 +++++++++++++++++------
index.c | 8 +++++---
2 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/helpers.c b/helpers.c
index a56e65d..976cd3b 100644
--- a/helpers.c
+++ b/helpers.c
@@ -34,6 +34,9 @@ char **get_listing(char *cmd, char *delim) {
}
free(buf_backup);
// make sure the last one is always LAST_ENTRY
+ if(i == count) {
+ free(listing[count-1]);
+ }
listing[count-1] = LAST_ENTRY;
pclose(pipe);
return listing;
@@ -135,7 +138,6 @@ struct node *fold_updates(char **list) {
newnode->dir = FALSE;
newnode->link = &list[i];
} else {
- newnode->name = strdup(curtok);
newnode->dir = TRUE;
newnode->link = NULL;
}
@@ -194,6 +196,7 @@ void sanity_checks() {
strndup(config.merge_tool, strchrnul(config.merge_tool, ' ') - config.merge_tool),
strndup(config.edit_tool, strchrnul(config.edit_tool, ' ') - config.edit_tool)
};
+ gchar *program_in_path;
if (getuid() != 0) {
fprintf(stderr, "!!! Oops, you're not root!\n");
@@ -203,13 +206,19 @@ void sanity_checks() {
for (i=0;i<sizeof(tools)/sizeof(tools[0]);i++) {
// "" is okay for pager
if (strcmp(tools[i], "")) {
- if (!g_find_program_in_path((gchar *)tools[i])) {
+ if (!(program_in_path = g_find_program_in_path((gchar *)tools[i]))) {
fprintf(stderr, "!!! ERROR: couldn't find necesary tool: %s\n", tools[i]);
exit(EXIT_FAILURE);
+ } else {
+ g_free(program_in_path);
}
}
}
free(cmd);
+ free(tools[2]);
+ free(tools[3]);
+ free(tools[4]);
+ free(tools[5]);
mkdir (MD5SUM_INDEX_DIR, 0755);
if ((pipe = fopen(MD5SUM_INDEX, "a"))) {
@@ -352,9 +361,9 @@ void free_folded(struct node *root) {
for (i=0;i<root->ct_children;i++) {
free_folded(root->children[i]);
}
- if (root->dir) {
+ // if (root->dir) { // it seems name is assigned unconditionally since $sometime
free(root->name);
- }
+ // }
free(root->children);
free(root);
}
@@ -401,7 +410,9 @@ char **get_files_list(char *searchpath, char **index, int *max) {
char *myfile;
bool ignore;
- lstat(searchpath, &mystat);
+ if(-1 == lstat(searchpath, &mystat)) {
+ return index;
+ }
if (S_ISDIR(mystat.st_mode)) {
dirfd = opendir(searchpath);
if (dirfd) {
@@ -434,7 +445,7 @@ char **get_files_list(char *searchpath, char **index, int *max) {
} else {
// we don't want duplicates either
ignore = FALSE;
- for (j=0;j<(*max);j++) {
+ for (j=0;j<(*max) && index[j] != LAST_ENTRY;j++) {
lstat(index[j], &tmpstat);
if (tmpstat.st_dev == mystat.st_dev && \
tmpstat.st_ino == mystat.st_ino) {
diff --git a/index.c b/index.c
index 96bb227..5048da4 100644
--- a/index.c
+++ b/index.c
@@ -45,14 +45,16 @@ MENU *create_menu(char **protected) {
void remove_menu(MENU *mymenu) {
ITEM **item_list = menu_items(mymenu);
- int i;
+ int i, cnt;
unpost_menu(mymenu);
- for (i=0;i<item_count(mymenu);i++) {
+ // Docs say: first free menu, then free items and only then the item list, not in any other order
+ cnt = item_count(mymenu);
+ free_menu(mymenu);
+ for (i=0;i<cnt;i++) {
free((char *)item_name(item_list[i]));
free_item(item_list[i]);
}
free(item_list);
- free_menu(mymenu);
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-05 18:28 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-05 18:28 UTC (permalink / raw
To: gentoo-commits
commit: 273b48905e429d124ee79ea487f609a47df56e32
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sun Feb 5 18:24:07 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sun Feb 5 18:24:07 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=273b4890
Code refactor read_config
---
config.c | 56 +++++++++++++++++++++++++++++++-------------------------
1 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/config.c b/config.c
index 4637ed0..b59a949 100644
--- a/config.c
+++ b/config.c
@@ -1,9 +1,33 @@
#include "conf-update.h"
+bool get_boolean(GKeyFile *conffile, const char *key, bool default_value) {
+ GError *error = NULL;
+ bool value, invalid_value, key_not_found;
+
+ value = (bool) g_key_file_get_boolean(conffile, PROG_NAME, key, &error);
+ invalid_value = (bool) g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);
+ key_not_found = (bool) g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND);
+ g_clear_error(&error);
+ if (invalid_value || key_not_found) {
+ return default_value;
+ } else {
+ return value;
+ }
+}
+
+char *get_string(GKeyFile *conffile, const char *key, char *default_value) {
+ char * value;
+
+ if (!(value = g_key_file_get_string(conffile, PROG_NAME, key, NULL))) {
+ return default_value;
+ } else {
+ return value;
+ }
+}
+
void read_config() {
extern struct configuration config;
GKeyFile *conffile;
- GError *error = NULL;
// set reasonable defaults
config.check_actions = TRUE;
@@ -21,30 +45,12 @@ void read_config() {
fprintf(stderr, "!!! ERROR: Could not load config file %s\n", CONFIG_FILE);
exit(EXIT_FAILURE);
} else {
- config.automerge_trivial = g_key_file_get_boolean(conffile, PROG_NAME, "autoreplace_trivial", &error);
- if (g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE) || g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
- config.automerge_trivial = TRUE;
- g_clear_error(&error);
- }
- config.automerge_unmodified = g_key_file_get_boolean(conffile, PROG_NAME, "autoreplace_unmodified", &error);
- if (g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE) || g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
- config.automerge_unmodified = FALSE;
- g_clear_error(&error);
- }
- config.check_actions = g_key_file_get_boolean(conffile, PROG_NAME, "confirm_actions", &error);
- if (g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE) || g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
- config.check_actions = TRUE;
- g_clear_error(&error);
- }
- if (!(config.diff_tool = g_key_file_get_string(conffile, PROG_NAME, "diff_tool", NULL))) {
- config.diff_tool = strdup("diff -u");
- }
- if (!(config.pager = g_key_file_get_string(conffile, PROG_NAME, "pager", NULL))) {
- config.pager = strdup("");
- }
- if (!(config.merge_tool = g_key_file_get_string(conffile, PROG_NAME, "merge_tool", NULL))) {
- config.merge_tool = strdup("sdiff -s -o");
- }
+ config.automerge_trivial = get_boolean(conffile, "autoreplace_trivial", TRUE);
+ config.automerge_unmodified = get_boolean(conffile, "autoreplace_unmodified", FALSE);
+ config.check_actions = get_boolean(conffile, "confirm_actions", TRUE);
+ config.diff_tool = get_string(conffile, "diff_tool", strdup("diff -u"));
+ config.pager = get_string(conffile, "pager", strdup(""));
+ config.merge_tool = get_string(conffile, "merge_tool", strdup("sdiff -s -o"));
}
g_key_file_free(conffile);
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-05 18:38 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-05 18:38 UTC (permalink / raw
To: gentoo-commits
commit: 71740601bc64e0930ea3ff5b571eb7ff8c791f3b
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sun Feb 5 18:37:15 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sun Feb 5 18:37:15 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=71740601
Added Vincent to the list of contributors
---
AUTHORS | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index 21f92ea..4124f71 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,3 +4,4 @@ Simon Stelling <blubb@gentoo.org>
Christoph Mende <angelos@gentoo.org>
Jan Psota <jasiupsota@gmail.com>
José María Alonso <nimiux@gentoo.org>
+Vincent Huisman <site.gentoobugzilla@dataghost.com>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-05 18:50 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-05 18:50 UTC (permalink / raw
To: gentoo-commits
commit: 3a660867801a31659255a1a7a51ac4aa53ced1ce
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sun Feb 5 18:48:41 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sun Feb 5 18:48:41 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=3a660867
Keys alphabetically ordered
---
conf-update.c | 125 +++++++++++++++++++++++++++++----------------------------
1 files changed, 64 insertions(+), 61 deletions(-)
diff --git a/conf-update.c b/conf-update.c
index 5143500..009f566 100644
--- a/conf-update.c
+++ b/conf-update.c
@@ -192,28 +192,6 @@ int main(int argc, char **argv) {
menu_changed = FALSE;
while ((item_count(mymenu) > 1) && (c = wgetch(inner)) != 'q' && c != 'Q') {
switch(c) {
- // navigation 1up/down
- case KEY_DOWN:
- menu_driver(mymenu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(mymenu, REQ_UP_ITEM);
- break;
- //navigation 1 page up/down
- case KEY_PPAGE:
- menu_driver(mymenu, REQ_SCR_UPAGE);
- break;
- case KEY_NPAGE:
- menu_driver(mymenu, REQ_SCR_DPAGE);
- break;
- // navigation top/bottom
- case KEY_HOME:
- menu_driver(mymenu, REQ_FIRST_ITEM);
- break;
- case KEY_END:
- menu_driver(mymenu, REQ_LAST_ITEM);
- break;
-
// select single
case ' ':
if ((strrchr(item_name(current_item(mymenu)), '/'))) {
@@ -256,26 +234,28 @@ int main(int argc, char **argv) {
}
menu_driver(mymenu, REQ_FIRST_ITEM);
break;
- // deselect all
- case 'u':
- case 'U':
- menu_driver(mymenu, REQ_LAST_ITEM);
+ // delete update
+ case 'd':
+ case 'D':
+ firstrun = config.check_actions;
+ doit = TRUE;
for (i=0;i<item_count(mymenu);i++) {
- menu_driver(mymenu, REQ_UP_ITEM);
- set_item_value(current_item(mymenu), FALSE);
- }
- menu_driver(mymenu, REQ_FIRST_ITEM);
- break;
- // disp diff
- case '\n':
- case KEY_ENTER:
- if (item_userptr(current_item(mymenu))) {
- endwin();
- int ret = show_diff(*((char **)item_userptr(current_item(mymenu))));
- if (!ret) {
- fprintf(stderr, "show_diff failed with error code: %d\n", ret);
+ if (item_value(items_list[i]) == TRUE || (current_item(mymenu) == items_list[i] && item_userptr(items_list[i]))) {
+ if (firstrun) {
+ doit = get_confirmation(inner, "delete");
+ firstrun = false;
+ }
+ if (doit) {
+ myupdate = (char **)item_userptr(items_list[i]);
+ exit_error(!unlink(*(myupdate)), *(myupdate));
+ removed_updates_ct++;
+ removed_updates_report = (char**)realloc(removed_updates_report, removed_updates_ct * sizeof(char *));
+ removed_updates_report[removed_updates_ct-1] = get_real_filename(*myupdate);
+ free(*myupdate);
+ *myupdate = SKIP_ENTRY;
+ menu_changed = TRUE;
+ }
}
- reset_prog_mode();
}
break;
// edit update
@@ -290,6 +270,16 @@ int main(int argc, char **argv) {
reset_prog_mode();
}
break;
+ // down
+ case KEY_DOWN:
+ case 'j':
+ menu_driver(mymenu, REQ_DOWN_ITEM);
+ break;
+ // up
+ case KEY_UP:
+ case 'k':
+ menu_driver(mymenu, REQ_UP_ITEM);
+ break;
// merge interactively
case 'm':
case 'M':
@@ -300,7 +290,6 @@ int main(int argc, char **argv) {
menu_changed = TRUE;
}
break;
-
// merge/replace update
case 'r':
case 'R':
@@ -330,28 +319,42 @@ int main(int argc, char **argv) {
}
}
break;
- // delete update
- case 'd':
- case 'D':
- firstrun = config.check_actions;
- doit = TRUE;
+ // deselect all
+ case 'u':
+ case 'U':
+ menu_driver(mymenu, REQ_LAST_ITEM);
for (i=0;i<item_count(mymenu);i++) {
- if (item_value(items_list[i]) == TRUE || (current_item(mymenu) == items_list[i] && item_userptr(items_list[i]))) {
- if (firstrun) {
- doit = get_confirmation(inner, "delete");
- firstrun = false;
- }
- if (doit) {
- myupdate = (char **)item_userptr(items_list[i]);
- exit_error(!unlink(*(myupdate)), *(myupdate));
- removed_updates_ct++;
- removed_updates_report = (char**)realloc(removed_updates_report, removed_updates_ct * sizeof(char *));
- removed_updates_report[removed_updates_ct-1] = get_real_filename(*myupdate);
- free(*myupdate);
- *myupdate = SKIP_ENTRY;
- menu_changed = TRUE;
- }
+ menu_driver(mymenu, REQ_UP_ITEM);
+ set_item_value(current_item(mymenu), FALSE);
+ }
+ menu_driver(mymenu, REQ_FIRST_ITEM);
+ break;
+ // page up
+ case KEY_PPAGE:
+ menu_driver(mymenu, REQ_SCR_UPAGE);
+ break;
+ // page down
+ case KEY_NPAGE:
+ menu_driver(mymenu, REQ_SCR_DPAGE);
+ break;
+ // top
+ case KEY_HOME:
+ menu_driver(mymenu, REQ_FIRST_ITEM);
+ break;
+ // bottom
+ case KEY_END:
+ menu_driver(mymenu, REQ_LAST_ITEM);
+ break;
+ // show differences
+ case '\n':
+ case KEY_ENTER:
+ if (item_userptr(current_item(mymenu))) {
+ endwin();
+ int ret = show_diff(*((char **)item_userptr(current_item(mymenu))));
+ if (!ret) {
+ fprintf(stderr, "show_diff failed with error code: %d\n", ret);
}
+ reset_prog_mode();
}
break;
case KEY_RESIZE:
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-05 20:35 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-05 20:35 UTC (permalink / raw
To: gentoo-commits
commit: 93f2cbb689013019d2b8d288f8b47f7d9fbc95a4
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sun Feb 5 20:33:54 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sun Feb 5 20:33:54 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=93f2cbb6
Removed old flags
---
Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index 543f2b1..5ff7614 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-FLAGS = $$(pkg-config --cflags glib-2.0) -W -Wall -Wno-pointer-sign -g $(CFLAGS)
+FLAGS = $$(pkg-config --cflags glib-2.0) -W -Wall $(CFLAGS)
CC = gcc
all: conf-update
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-05 23:13 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-05 23:13 UTC (permalink / raw
To: gentoo-commits
commit: db4ed5c88d0c3faffcbf22d60c210d1efeb2e1a3
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Sun Feb 5 23:12:07 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sun Feb 5 23:12:07 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=db4ed5c8
Added description of the tool
---
README | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/README b/README
index 1f0a0d0..4d243d6 100644
--- a/README
+++ b/README
@@ -1,5 +1,13 @@
-Package: conf-update
-Authors: Simon Stelling <blubb@gentoo.org>
- Christoph Mende <angelos@gentoo.org>
- Jan Psota <jasiupsota@gmail.com>
- José María Alonso <nimiux@gentoo.org>
+conf-update
+
+http://conf-update.berlios.de/
+
+conf-update is a curses based tool for the Gentoo Linux portage system.
+
+conf-update is supposed to be run after merging a new package to see if
+there are updates to the configuration files.
+
+conf-update will check all directories in the CONFIG_PROTECT variable. All
+config files found in CONFIG_PROTECT_MASK will automatically be updated
+for you.
+
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2012-02-06 10:42 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2012-02-06 10:42 UTC (permalink / raw
To: gentoo-commits
commit: f66bad59d20e6a10b8cb1d0808f6c6004b8628fa
Author: José María Alonso <nimiux.gentoo.org>
AuthorDate: Mon Feb 6 10:40:45 2012 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Mon Feb 6 10:40:45 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/conf-update.git;a=commit;h=f66bad59
Added install phase
---
Makefile | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index 5ff7614..b8bbb7a 100644
--- a/Makefile
+++ b/Makefile
@@ -21,8 +21,16 @@ conf-update.h: core.h helpers.h index.h modified.h config.h
conf-update: core.o helpers.o conf-update.o index.o modified.o config.o
$(CC) $(LDFLAGS) -o conf-update config.o core.o helpers.o conf-update.o index.o modified.o $$(pkg-config --libs glib-2.0) -lncurses -lmenu -lcrypto
-.PHONY: clean
+install: conf-update
+ @install -d $(DESTDIR)/usr/sbin/
+ @install conf-update $(DESTDIR)/usr/sbin/
+ @install -d $(DESTDIR)/etc
+ @install -m 644 conf-update.conf $(DESTDIR)/etc
+ @install -d $(DESTDIR)/usr/share/man/man1
+ @install -m 644 conf-update.1 $(DESTDIR)/usr/share/man/man1
clean:
rm -f *.o
rm -f conf-update
+
+.PHONY: all clean
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [gentoo-commits] proj/conf-update:master commit in: /
@ 2015-08-29 11:33 José María Alonso
0 siblings, 0 replies; 8+ messages in thread
From: José María Alonso @ 2015-08-29 11:33 UTC (permalink / raw
To: gentoo-commits
commit: 11e8519caa4160f1a69b5efab0b366326cb32e6d
Author: Chema Alonso Josa <nimiux <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 29 11:33:45 2015 +0000
Commit: José María Alonso <nimiux <AT> gentoo <DOT> org>
CommitDate: Sat Aug 29 11:33:45 2015 +0000
URL: https://gitweb.gentoo.org/proj/conf-update.git/commit/?id=11e8519c
Fix bug #527326
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index b8bbb7a..b95238e 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ modified.o: conf-update.h modified.c
conf-update.h: core.h helpers.h index.h modified.h config.h
conf-update: core.o helpers.o conf-update.o index.o modified.o config.o
- $(CC) $(LDFLAGS) -o conf-update config.o core.o helpers.o conf-update.o index.o modified.o $$(pkg-config --libs glib-2.0) -lncurses -lmenu -lcrypto
+ $(CC) $(LDFLAGS) -o conf-update config.o core.o helpers.o conf-update.o index.o modified.o $(shell ${PKG_CONFIG} --libs glib-2.0 ncurses menu) -lcrypto
install: conf-update
@install -d $(DESTDIR)/usr/sbin/
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-08-29 11:33 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-05 23:13 [gentoo-commits] proj/conf-update:master commit in: / José María Alonso
-- strict thread matches above, loose matches on Subject: below --
2015-08-29 11:33 José María Alonso
2012-02-06 10:42 José María Alonso
2012-02-05 20:35 José María Alonso
2012-02-05 18:50 José María Alonso
2012-02-05 18:38 José María Alonso
2012-02-05 18:28 José María Alonso
2012-02-04 17:15 José María Alonso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox