summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.15.1-pidof_killall.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.15.1-pidof_killall.patch')
-rw-r--r--package/busybox/busybox-1.15.1-pidof_killall.patch250
1 files changed, 0 insertions, 250 deletions
diff --git a/package/busybox/busybox-1.15.1-pidof_killall.patch b/package/busybox/busybox-1.15.1-pidof_killall.patch
deleted file mode 100644
index 43c0c8063..000000000
--- a/package/busybox/busybox-1.15.1-pidof_killall.patch
+++ /dev/null
@@ -1,250 +0,0 @@
-diff -urpN busybox-1.15.1/libbb/procps.c busybox-1.15.1-pidof_killall/libbb/procps.c
---- busybox-1.15.1/libbb/procps.c 2009-09-12 17:55:58.000000000 +0200
-+++ busybox-1.15.1-pidof_killall/libbb/procps.c 2009-09-22 23:03:59.000000000 +0200
-@@ -134,8 +134,8 @@ static unsigned long fast_strtoul_16(cha
- return n;
- }
- /* TOPMEM uses fast_strtoul_10, so... */
--#undef ENABLE_FEATURE_FAST_TOP
--#define ENABLE_FEATURE_FAST_TOP 1
-+# undef ENABLE_FEATURE_FAST_TOP
-+# define ENABLE_FEATURE_FAST_TOP 1
- #endif
-
- #if ENABLE_FEATURE_FAST_TOP
-@@ -198,14 +198,16 @@ procps_status_t* FAST_FUNC procps_scan(p
- if (errno)
- continue;
-
-- /* After this point we have to break, not continue
-- * ("continue" would mean that current /proc/NNN
-- * is not a valid process info) */
-+ /* After this point we can:
-+ * "break": stop parsing, return the data
-+ * "continue": try next /proc/XXX
-+ */
-
- memset(&sp->vsz, 0, sizeof(*sp) - offsetof(procps_status_t, vsz));
-
- sp->pid = pid;
-- if (!(flags & ~PSSCAN_PID)) break;
-+ if (!(flags & ~PSSCAN_PID))
-+ break; /* we needed only pid, we got it */
-
- #if ENABLE_SELINUX
- if (flags & PSSCAN_CONTEXT) {
-@@ -218,7 +220,7 @@ procps_status_t* FAST_FUNC procps_scan(p
-
- if (flags & PSSCAN_UIDGID) {
- if (stat(filename, &sb))
-- break;
-+ continue; /* process probably exited */
- /* Effective UID/GID, not real */
- sp->uid = sb.st_uid;
- sp->gid = sb.st_gid;
-@@ -234,10 +236,10 @@ procps_status_t* FAST_FUNC procps_scan(p
- strcpy(filename_tail, "stat");
- n = read_to_buf(filename, buf);
- if (n < 0)
-- break;
-+ continue; /* process probably exited */
- cp = strrchr(buf, ')'); /* split into "PID (cmd" and "<rest>" */
- /*if (!cp || cp[1] != ' ')
-- break;*/
-+ continue;*/
- cp[0] = '\0';
- if (sizeof(sp->comm) < 16)
- BUG_comm_size();
-@@ -257,12 +259,12 @@ procps_status_t* FAST_FUNC procps_scan(p
- "%lu " /* start_time */
- "%lu " /* vsize */
- "%lu " /* rss */
--#if ENABLE_FEATURE_TOP_SMP_PROCESS
-+# if ENABLE_FEATURE_TOP_SMP_PROCESS
- "%*s %*s %*s %*s %*s %*s " /*rss_rlim, start_code, end_code, start_stack, kstk_esp, kstk_eip */
- "%*s %*s %*s %*s " /*signal, blocked, sigignore, sigcatch */
- "%*s %*s %*s %*s " /*wchan, nswap, cnswap, exit_signal */
- "%d" /*cpu last seen on*/
--#endif
-+# endif
- ,
- sp->state, &sp->ppid,
- &sp->pgid, &sp->sid, &tty,
-@@ -271,17 +273,17 @@ procps_status_t* FAST_FUNC procps_scan(p
- &sp->start_time,
- &vsz,
- &rss
--#if ENABLE_FEATURE_TOP_SMP_PROCESS
-+# if ENABLE_FEATURE_TOP_SMP_PROCESS
- , &sp->last_seen_on_cpu
--#endif
-+# endif
- );
-
- if (n < 11)
-- break;
--#if ENABLE_FEATURE_TOP_SMP_PROCESS
-+ continue; /* bogus data, get next /proc/XXX */
-+# if ENABLE_FEATURE_TOP_SMP_PROCESS
- if (n < 11+15)
- sp->last_seen_on_cpu = 0;
--#endif
-+# endif
-
- /* vsz is in bytes and we want kb */
- sp->vsz = vsz >> 10;
-@@ -311,14 +313,14 @@ procps_status_t* FAST_FUNC procps_scan(p
- sp->vsz = fast_strtoul_10(&cp) >> 10;
- /* vsz is in bytes but rss is in *PAGES*! Can you believe that? */
- sp->rss = fast_strtoul_10(&cp) << sp->shift_pages_to_kb;
--#if ENABLE_FEATURE_TOP_SMP_PROCESS
-+# if ENABLE_FEATURE_TOP_SMP_PROCESS
- /* (6): rss_rlim, start_code, end_code, start_stack, kstk_esp, kstk_eip */
- /* (4): signal, blocked, sigignore, sigcatch */
- /* (4): wchan, nswap, cnswap, exit_signal */
- cp = skip_fields(cp, 14);
- //FIXME: is it safe to assume this field exists?
- sp->last_seen_on_cpu = fast_strtoul_10(&cp);
--#endif
-+# endif
- #endif /* end of !ENABLE_FEATURE_TOP_SMP_PROCESS */
-
- #if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS
-@@ -343,48 +345,48 @@ procps_status_t* FAST_FUNC procps_scan(p
-
- strcpy(filename_tail, "smaps");
- file = fopen_for_read(filename);
-- if (!file)
-- break;
-- while (fgets(buf, sizeof(buf), file)) {
-- unsigned long sz;
-- char *tp;
-- char w;
-+ if (file) {
-+ while (fgets(buf, sizeof(buf), file)) {
-+ unsigned long sz;
-+ char *tp;
-+ char w;
- #define SCAN(str, name) \
- if (strncmp(buf, str, sizeof(str)-1) == 0) { \
- tp = skip_whitespace(buf + sizeof(str)-1); \
- sp->name += fast_strtoul_10(&tp); \
- continue; \
- }
-- SCAN("Shared_Clean:" , shared_clean );
-- SCAN("Shared_Dirty:" , shared_dirty );
-- SCAN("Private_Clean:", private_clean);
-- SCAN("Private_Dirty:", private_dirty);
-+ SCAN("Shared_Clean:" , shared_clean );
-+ SCAN("Shared_Dirty:" , shared_dirty );
-+ SCAN("Private_Clean:", private_clean);
-+ SCAN("Private_Dirty:", private_dirty);
- #undef SCAN
-- // f7d29000-f7d39000 rw-s ADR M:m OFS FILE
-- tp = strchr(buf, '-');
-- if (tp) {
-- *tp = ' ';
-- tp = buf;
-- sz = fast_strtoul_16(&tp); /* start */
-- sz = (fast_strtoul_16(&tp) - sz) >> 10; /* end - start */
-- // tp -> "rw-s" string
-- w = tp[1];
-- // skipping "rw-s ADR M:m OFS "
-- tp = skip_whitespace(skip_fields(tp, 4));
-- // filter out /dev/something (something != zero)
-- if (strncmp(tp, "/dev/", 5) != 0 || strcmp(tp, "/dev/zero\n") == 0) {
-- if (w == 'w') {
-- sp->mapped_rw += sz;
-- } else if (w == '-') {
-- sp->mapped_ro += sz;
-+ // f7d29000-f7d39000 rw-s ADR M:m OFS FILE
-+ tp = strchr(buf, '-');
-+ if (tp) {
-+ *tp = ' ';
-+ tp = buf;
-+ sz = fast_strtoul_16(&tp); /* start */
-+ sz = (fast_strtoul_16(&tp) - sz) >> 10; /* end - start */
-+ // tp -> "rw-s" string
-+ w = tp[1];
-+ // skipping "rw-s ADR M:m OFS "
-+ tp = skip_whitespace(skip_fields(tp, 4));
-+ // filter out /dev/something (something != zero)
-+ if (strncmp(tp, "/dev/", 5) != 0 || strcmp(tp, "/dev/zero\n") == 0) {
-+ if (w == 'w') {
-+ sp->mapped_rw += sz;
-+ } else if (w == '-') {
-+ sp->mapped_ro += sz;
-+ }
- }
-- }
- //else printf("DROPPING %s (%s)\n", buf, tp);
-- if (strcmp(tp, "[stack]\n") == 0)
-- sp->stack += sz;
-+ if (strcmp(tp, "[stack]\n") == 0)
-+ sp->stack += sz;
-+ }
- }
-+ fclose(file);
- }
-- fclose(file);
- }
- #endif /* TOPMEM */
- #if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS
-@@ -393,23 +395,34 @@ procps_status_t* FAST_FUNC procps_scan(p
-
- strcpy(filename_tail, "status");
- file = fopen_for_read(filename);
-- if (!file)
-- break;
-- while (fgets(buf, sizeof(buf), file)) {
-- char *tp;
-+ if (file) {
-+ while (fgets(buf, sizeof(buf), file)) {
-+ char *tp;
- #define SCAN_TWO(str, name, statement) \
- if (strncmp(buf, str, sizeof(str)-1) == 0) { \
- tp = skip_whitespace(buf + sizeof(str)-1); \
- sscanf(tp, "%u", &sp->name); \
- statement; \
- }
-- SCAN_TWO("Uid:", ruid, continue);
-- SCAN_TWO("Gid:", rgid, break);
-+ SCAN_TWO("Uid:", ruid, continue);
-+ SCAN_TWO("Gid:", rgid, break);
- #undef SCAN_TWO
-+ }
-+ fclose(file);
- }
-- fclose(file);
- }
- #endif /* PS_ADDITIONAL_COLUMNS */
-+ if (flags & PSSCAN_EXE) {
-+ strcpy(filename_tail, "exe");
-+ free(sp->exe);
-+ sp->exe = xmalloc_readlink(filename);
-+ }
-+ /* Note: if /proc/PID/cmdline is empty,
-+ * code below "breaks". Therefore it must be
-+ * the last code to parse /proc/PID/xxx data
-+ * (we used to have /proc/PID/exe parsing after it
-+ * and were getting stale sp->exe).
-+ */
- #if 0 /* PSSCAN_CMD is not used */
- if (flags & (PSSCAN_CMD|PSSCAN_ARGV0)) {
- free(sp->argv0);
-@@ -452,13 +465,9 @@ procps_status_t* FAST_FUNC procps_scan(p
- }
- }
- #endif
-- if (flags & PSSCAN_EXE) {
-- strcpy(filename_tail, "exe");
-- free(sp->exe);
-- sp->exe = xmalloc_readlink(filename);
-- }
- break;
-- }
-+ } /* for (;;) */
-+
- return sp;
- }
-