Can now open files in raw mode

This commit is contained in:
Pierre Pronchery 2011-11-30 06:05:22 +00:00
parent 5bb06f31a3
commit e541475f4f
3 changed files with 18 additions and 6 deletions

View File

@ -33,7 +33,10 @@ distclean: clean
$(RM) -- $(TARGETS) $(RM) -- $(TARGETS)
install: $(TARGETS) install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 -- gdeasm $(DESTDIR)$(BINDIR)/gdeasm
uninstall: uninstall:
$(RM) -- $(DESTDIR)$(BINDIR)/gdeasm
.PHONY: all clean distclean install uninstall .PHONY: all clean distclean install uninstall

View File

@ -23,7 +23,9 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. */ * SUCH DAMAGE. */
/* TODO: /* TODO:
* - add a preferences structure
* - complete the function list * - complete the function list
* - add a check box to open in raw mode
* - also display strings (calls...) */ * - also display strings (calls...) */
@ -41,6 +43,7 @@
/* types */ /* types */
typedef struct _GDeasm typedef struct _GDeasm
{ {
int raw;
char * arch; char * arch;
char * format; char * format;
@ -51,7 +54,7 @@ typedef struct _GDeasm
/* prototypes */ /* prototypes */
static GDeasm * _gdeasm_new(char const * arch, char const * format, static GDeasm * _gdeasm_new(int raw, char const * arch, char const * format,
char const * filename); char const * filename);
static void _gdeasm_delete(GDeasm * gdeasm); static void _gdeasm_delete(GDeasm * gdeasm);
@ -69,7 +72,7 @@ static int _usage(void);
/* functions */ /* functions */
/* gdeasm_new */ /* gdeasm_new */
static GDeasm * _gdeasm_new(char const * arch, char const * format, static GDeasm * _gdeasm_new(int raw, char const * arch, char const * format,
char const * filename) char const * filename)
{ {
GDeasm * gdeasm; GDeasm * gdeasm;
@ -89,6 +92,7 @@ static GDeasm * _gdeasm_new(char const * arch, char const * format,
if((gdeasm = malloc(sizeof(*gdeasm))) == NULL) if((gdeasm = malloc(sizeof(*gdeasm))) == NULL)
return NULL; return NULL;
gdeasm->raw = raw;
gdeasm->arch = (arch != NULL) ? strdup(arch) : NULL; gdeasm->arch = (arch != NULL) ? strdup(arch) : NULL;
gdeasm->format = (format != NULL) ? strdup(format) : NULL; gdeasm->format = (format != NULL) ? strdup(format) : NULL;
gdeasm->func_store = gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_UINT); gdeasm->func_store = gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_UINT);
@ -327,7 +331,7 @@ static void _gdeasm_on_open(gpointer data)
return; return;
gtk_tree_store_clear(gdeasm->func_store); gtk_tree_store_clear(gdeasm->func_store);
gtk_tree_store_clear(gdeasm->asm_store); gtk_tree_store_clear(gdeasm->asm_store);
_gdeasm_open(gdeasm, filename, 0); _gdeasm_open(gdeasm, filename, gdeasm->raw);
g_free(filename); g_free(filename);
} }
@ -335,7 +339,7 @@ static void _gdeasm_on_open(gpointer data)
/* usage */ /* usage */
static int _usage(void) static int _usage(void)
{ {
fputs("Usage: gdeasm [-a arch][-f format] filename\n", stderr); fputs("Usage: gdeasm [-D][-a arch][-f format] filename\n", stderr);
return 1; return 1;
} }
@ -347,13 +351,17 @@ int main(int argc, char * argv[])
{ {
int o; int o;
GDeasm * gdeasm; GDeasm * gdeasm;
int raw = 0;
char const * arch = NULL; char const * arch = NULL;
char const * format = NULL; char const * format = NULL;
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
while((o = getopt(argc, argv, "a:f:")) != -1) while((o = getopt(argc, argv, "Da:f:")) != -1)
switch(o) switch(o)
{ {
case 'D':
raw = 1;
break;
case 'a': case 'a':
arch = optarg; arch = optarg;
break; break;
@ -365,7 +373,7 @@ int main(int argc, char * argv[])
} }
if(optind != argc && optind + 1 != argc) if(optind != argc && optind + 1 != argc)
return _usage(); return _usage();
if((gdeasm = _gdeasm_new(arch, format, argv[optind])) == NULL) if((gdeasm = _gdeasm_new(raw, arch, format, argv[optind])) == NULL)
return 2; return 2;
gtk_main(); gtk_main();
_gdeasm_delete(gdeasm); _gdeasm_delete(gdeasm);

View File

@ -6,3 +6,4 @@ ldflags_force=`pkg-config --libs gtk+-2.0 asm`
[gdeasm] [gdeasm]
type=binary type=binary
sources=gdeasm.c sources=gdeasm.c
install=$(BINDIR)