public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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);
 





             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