[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Antiright-devel] antiright gtkshell/main.c libantiright/argument...
From: |
Jeffrey Bedard |
Subject: |
[Antiright-devel] antiright gtkshell/main.c libantiright/argument... |
Date: |
Sat, 15 Dec 2007 02:55:36 +0000 |
CVSROOT: /sources/antiright
Module name: antiright
Changes by: Jeffrey Bedard <jefbed> 07/12/15 02:55:36
Modified files:
gtkshell : main.c
libantiright : arguments.c arguments.h
Log message:
Free option argument storage.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/main.c?cvsroot=antiright&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/antiright/libantiright/arguments.c?cvsroot=antiright&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/antiright/libantiright/arguments.h?cvsroot=antiright&r1=1.1&r2=1.2
Patches:
Index: gtkshell/main.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/main.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- gtkshell/main.c 13 Dec 2007 17:20:24 -0000 1.32
+++ gtkshell/main.c 15 Dec 2007 02:55:35 -0000 1.33
@@ -64,32 +64,23 @@
{
gsh=make_window_for_args((const gint)argset->argc,
(const gchar **)argset->argv);
- //$(argset, delete);
+ $(argset, delete_options);
argset=ARNEW(ar, ARArguments);
$(argset, add, argv[0]);
}
else /* Add more arguments. */
{
-#ifdef DEBUG
- ARBUG("add arguments");
-#endif /* DEBUG */
$(argset, add, argv[counter]);
}
}
- make_window_for_args((const gint)argset->argc,
+ gsh=make_window_for_args((const gint)argset->argc,
(const gchar **)argset->argv);
- /*$(argset, delete);
+ $(argset, delete_options);
if(gsh->command_dictionary)
- $(gsh->command_dictionary, delete); */
-
- /*
- The following cause segmentation faults, so the hash
- table cannot be freed.
- g_hash_table_destroy((gsh->command_dictionary->__hash));
- g_assert(gsh->command_dictionary->__hash);
- g_free(gsh->command_dictionary); */
-
+ $(gsh->command_dictionary, delete);
gtk_main(); /* application main loop */
+ $(gsh, delete);
+ $(argset, delete);
return 0;
}
Index: libantiright/arguments.c
===================================================================
RCS file: /sources/antiright/antiright/libantiright/arguments.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libantiright/arguments.c 6 Sep 2007 14:38:09 -0000 1.2
+++ libantiright/arguments.c 15 Dec 2007 02:55:36 -0000 1.3
@@ -23,10 +23,30 @@
#include "library.h"
static void
+ar_ARArguments_delete_options(struct ARArguments * args)
+{
+ guint counter=args->argc;
+
+ for(; counter>0; counter--)
+ {
+ gchar * arg=args->argv[counter-1];
+ if(arg[0]=='-')
+ {
+ g_free(arg);
+ args->argv[counter-1]=NULL;
+ }
+ }
+}
+
+static void
ar_ARArguments_delete_contents(struct ARArguments * args)
{
for(; args->argc>0; args->argc--)
- g_free(args->argv[args->argc-1]);
+ {
+ gchar * arg = args->argv[args->argc-1];
+ if(arg)
+ g_free(arg);
+ }
g_free(args->argv);
}
@@ -64,6 +84,7 @@
args->add=&ar_ARArguments_add;
args->add_as_first=&ar_ARArguments_add_as_first;
args->delete=&ar_delete_ARArguments;
+ args->delete_options=&ar_ARArguments_delete_options;
}
struct ARArguments *
Index: libantiright/arguments.h
===================================================================
RCS file: /sources/antiright/antiright/libantiright/arguments.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libantiright/arguments.h 10 May 2007 00:08:28 -0000 1.1
+++ libantiright/arguments.h 15 Dec 2007 02:55:36 -0000 1.2
@@ -33,6 +33,7 @@
void (*add)(struct ARArguments *, const gchar *);
void (*add_as_first)(struct ARArguments *, const gchar *);
void (*delete)(struct ARArguments *);
+ void (*delete_options)(struct ARArguments *);
};
struct ARArguments *
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Antiright-devel] antiright gtkshell/main.c libantiright/argument...,
Jeffrey Bedard <=