From: "Mike Frysinger (vapier)" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c
Date: Sun, 4 Nov 2012 07:48:42 +0000 (UTC) [thread overview]
Message-ID: <20121104074842.D9369215F3@flycatcher.gentoo.org> (raw)
vapier 12/11/04 07:48:42
Modified: scanelf.c
Log:
scanelf: convert -s parsing to arrays and allow multiple -s options
Revision Changes Path
1.248 pax-utils/scanelf.c
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.248&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.248&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?r1=1.247&r2=1.248
Index: scanelf.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v
retrieving revision 1.247
retrieving revision 1.248
diff -u -r1.247 -r1.248
--- scanelf.c 4 Nov 2012 07:26:24 -0000 1.247
+++ scanelf.c 4 Nov 2012 07:48:42 -0000 1.248
@@ -1,13 +1,13 @@
/*
* Copyright 2003-2012 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.247 2012/11/04 07:26:24 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.248 2012/11/04 07:48:42 vapier Exp $
*
* Copyright 2003-2012 Ned Ludd - <solar@gentoo.org>
* Copyright 2004-2012 Mike Frysinger - <vapier@gentoo.org>
*/
-static const char rcsid[] = "$Id: scanelf.c,v 1.247 2012/11/04 07:26:24 vapier Exp $";
+static const char rcsid[] = "$Id: scanelf.c,v 1.248 2012/11/04 07:48:42 vapier Exp $";
const char argv0[] = "scanelf";
#include "paxinc.h"
@@ -46,6 +46,7 @@
static char be_wewy_wewy_quiet = 0;
static char be_semi_verbose = 0;
static char *find_sym = NULL;
+static array_t _find_sym_arr = array_init_decl, *find_sym_arr = &_find_sym_arr;
static char *find_lib = NULL;
static array_t _find_lib_arr = array_init_decl, *find_lib_arr = &_find_lib_arr;
static char *find_section = NULL;
@@ -1173,27 +1174,14 @@
scanelf_match_symname(elfobj *elf, char *found_sym, char **ret, size_t *ret_len, const char *symname,
unsigned int stt, unsigned int stb, unsigned int shn, unsigned long size)
{
- char *this_sym, *next_sym, saved = saved;
+ const char *this_sym;
+ size_t n;
- /* allow the user to specify a comma delimited list of symbols to search for */
- next_sym = NULL;
- do {
+ array_for_each(find_sym_arr, n, this_sym) {
bool inc_notype, inc_object, inc_func, inc_file,
inc_local, inc_global, inc_weak,
inc_def, inc_undef, inc_abs, inc_common;
- if (next_sym) {
- next_sym[-1] = saved;
- this_sym = next_sym;
- } else
- this_sym = find_sym;
- if ((next_sym = strchr(this_sym, ','))) {
- /* make parsing easier by killing the comma temporarily */
- saved = *next_sym;
- *next_sym = '\0';
- next_sym += 1;
- }
-
/* symbol selection! */
inc_notype = inc_object = inc_func = inc_file = \
inc_local = inc_global = inc_weak = \
@@ -1298,14 +1286,12 @@
goto matched;
}
- } while (next_sym);
+ }
return;
matched:
*found_sym = 1;
- if (next_sym)
- next_sym[-1] = saved;
}
static const char *scanelf_file_sym(elfobj *elf, char *found_sym)
@@ -2132,8 +2118,12 @@
xarraypush_str(find_section_arr, optarg);
break;
case 's': {
- if (find_sym) warn("You prob don't want to specify -s twice");
- find_sym = optarg;
+ /* historically, this was comma delimited */
+ char *this_sym = strtok(optarg, ",");
+ while (this_sym) {
+ xarraypush_str(find_sym_arr, this_sym);
+ this_sym = strtok(NULL, ",");
+ }
break;
}
case 'N':
@@ -2231,6 +2221,8 @@
if (show_textrels && be_verbose)
has_objdump = bin_in_path("objdump");
/* flatten arrays for display */
+ if (array_cnt(find_sym_arr))
+ find_sym = array_flatten_str(find_sym_arr);
if (array_cnt(find_lib_arr))
find_lib = array_flatten_str(find_lib_arr);
if (array_cnt(find_section_arr))
@@ -2324,8 +2316,10 @@
/* clean up */
xarrayfree(ldpaths);
+ xarrayfree(find_sym_arr);
xarrayfree(find_lib_arr);
xarrayfree(find_section_arr);
+ free(find_sym);
free(find_lib);
free(find_section);
next reply other threads:[~2012-11-04 7:48 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-04 7:48 Mike Frysinger (vapier) [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-02-28 22:59 [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c Mike Frysinger (vapier)
2015-02-24 6:58 Mike Frysinger (vapier)
2015-02-22 2:27 Mike Frysinger (vapier)
2015-02-22 1:38 Mike Frysinger (vapier)
2015-02-22 0:10 Mike Frysinger (vapier)
2015-02-21 19:30 Mike Frysinger (vapier)
2014-11-20 1:25 Mike Frysinger (vapier)
2014-11-05 2:02 Mike Frysinger (vapier)
2014-10-19 7:31 Mike Frysinger (vapier)
2014-03-21 5:33 Mike Frysinger (vapier)
2014-03-21 5:27 Mike Frysinger (vapier)
2014-03-20 8:08 Mike Frysinger (vapier)
2014-03-20 8:06 Mike Frysinger (vapier)
2014-01-11 0:28 Mike Frysinger (vapier)
2013-08-14 21:09 Mike Frysinger (vapier)
2013-04-16 16:22 Mike Frysinger (vapier)
2013-04-10 22:27 Mike Frysinger (vapier)
2013-04-08 6:38 Mike Frysinger (vapier)
2013-04-02 21:15 Mike Frysinger (vapier)
2012-11-30 23:25 Mike Frysinger (vapier)
2012-11-10 9:43 Mike Frysinger (vapier)
2012-11-04 8:25 Mike Frysinger (vapier)
2012-11-04 8:23 Mike Frysinger (vapier)
2012-11-04 6:55 Mike Frysinger (vapier)
2012-08-04 6:08 Mike Frysinger (vapier)
2012-04-29 6:21 Mike Frysinger (vapier)
2012-04-29 5:41 Mike Frysinger (vapier)
2012-01-25 1:58 Mike Frysinger (vapier)
2012-01-23 23:48 Mike Frysinger (vapier)
2012-01-23 22:28 Mike Frysinger (vapier)
2011-12-21 22:17 Mike Frysinger (vapier)
2011-12-21 22:00 Mike Frysinger (vapier)
2011-12-21 17:34 Mike Frysinger (vapier)
2011-12-13 5:12 Mike Frysinger (vapier)
2011-10-13 4:49 Mike Frysinger (vapier)
2011-09-27 22:20 Mike Frysinger (vapier)
2011-09-27 19:56 Mike Frysinger (vapier)
2011-09-27 19:29 Mike Frysinger (vapier)
2011-09-27 19:21 Mike Frysinger (vapier)
2011-09-27 19:20 Mike Frysinger (vapier)
2011-09-27 17:28 Mike Frysinger (vapier)
2011-08-08 1:56 Mike Frysinger (vapier)
2011-07-30 17:08 Ned Ludd (solar)
2010-12-06 20:43 Mike Frysinger (vapier)
2010-01-15 11:56 Mike Frysinger (vapier)
2009-12-20 20:25 Mike Frysinger (vapier)
2009-12-01 10:18 Mike Frysinger (vapier)
2009-03-15 9:13 Mike Frysinger (vapier)
2009-03-15 9:01 Mike Frysinger (vapier)
2009-03-15 8:53 Mike Frysinger (vapier)
2008-12-30 13:38 Mike Frysinger (vapier)
2008-12-30 12:38 Mike Frysinger (vapier)
2008-12-10 20:06 Fabian Groffen (grobian)
2008-12-10 20:05 Fabian Groffen (grobian)
2008-11-17 18:09 Diego Petteno (flameeyes)
2008-11-17 18:03 Diego Petteno (flameeyes)
2008-10-22 17:03 Diego Petteno (flameeyes)
2008-10-22 15:20 Diego Petteno (flameeyes)
2008-09-29 6:05 Mike Frysinger (vapier)
2008-09-29 6:03 Mike Frysinger (vapier)
2008-09-29 6:01 Mike Frysinger (vapier)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121104074842.D9369215F3@flycatcher.gentoo.org \
--to=vapier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox