From 8f5d66c99a8ff8a517fba06a1b9f272c4ef2051b Mon Sep 17 00:00:00 2001 From: Grooooot Date: Wed, 19 Feb 2020 10:01:26 +0800 Subject: [PATCH] init the package --- procinfo-14-misc.patch | 24 +++ procinfo-17-lsdev.patch | 43 ++++++ procinfo-17-mandir.patch | 31 ++++ procinfo-17-uptime.patch | 33 ++++ procinfo-18-acct.patch | 45 ++++++ procinfo-18-cpu-steal.patch | 45 ++++++ procinfo-18-idle-overflow.patch | 20 +++ procinfo-18-intr.patch | 213 ++++++++++++++++++++++++++ procinfo-18-intrprint.patch | 18 +++ procinfo-18-man-comment.patch | 14 ++ procinfo-18-maxdev.patch | 28 ++++ procinfo-18-mharris-use-sysconf.patch | 23 +++ procinfo-18-ranges.patch | 40 +++++ procinfo-18-socklist.patch | 19 +++ procinfo-18-version.patch | 17 ++ procinfo-18.tar.gz | Bin 0 -> 24365 bytes procinfo.spec | 75 +++++++++ 17 files changed, 688 insertions(+) create mode 100644 procinfo-14-misc.patch create mode 100644 procinfo-17-lsdev.patch create mode 100644 procinfo-17-mandir.patch create mode 100644 procinfo-17-uptime.patch create mode 100644 procinfo-18-acct.patch create mode 100644 procinfo-18-cpu-steal.patch create mode 100644 procinfo-18-idle-overflow.patch create mode 100644 procinfo-18-intr.patch create mode 100644 procinfo-18-intrprint.patch create mode 100644 procinfo-18-man-comment.patch create mode 100644 procinfo-18-maxdev.patch create mode 100644 procinfo-18-mharris-use-sysconf.patch create mode 100644 procinfo-18-ranges.patch create mode 100644 procinfo-18-socklist.patch create mode 100644 procinfo-18-version.patch create mode 100644 procinfo-18.tar.gz create mode 100644 procinfo.spec diff --git a/procinfo-14-misc.patch b/procinfo-14-misc.patch new file mode 100644 index 0000000..7bdb033 --- /dev/null +++ b/procinfo-14-misc.patch @@ -0,0 +1,24 @@ +--- procinfo-14/Makefile.misc Sun May 24 10:49:04 1998 ++++ procinfo-14/Makefile Thu Sep 10 11:06:29 1998 +@@ -4,7 +4,7 @@ + + CC = gcc -Wall -Wstrict-prototypes + +-CFLAGS = -O2 ++CFLAGS = $(RPM_OPT_FLAGS) + LDFLAGS = -s + + # If you get lots of `undefined references', you probably need -lncurses +@@ -33,9 +33,9 @@ + + install: procinfo procinfo.8 lsdev.pl socklist.pl lsdev.8 + -mkdir -p $(prefix)/bin +- install procinfo $(prefix)/bin/procinfo +- install lsdev.pl $(prefix)/bin/lsdev +- install socklist.pl $(prefix)/bin/socklist ++ install -m 755 -o 0 -g 0 procinfo $(prefix)/bin/procinfo ++ install -m 755 -o 0 -g 0 lsdev.pl $(prefix)/bin/lsdev ++ install -m 755 -o 0 -g 0 socklist.pl $(prefix)/bin/socklist + -mkdir -p $(prefix)/man/man8 + install -m 644 procinfo.8 $(prefix)/man/man8/procinfo.8 + install -m 644 lsdev.8 $(prefix)/man/man8/lsdev.8 diff --git a/procinfo-17-lsdev.patch b/procinfo-17-lsdev.patch new file mode 100644 index 0000000..e7660b4 --- /dev/null +++ b/procinfo-17-lsdev.patch @@ -0,0 +1,43 @@ +--- procinfo-17/lsdev.pl.broken Thu Nov 16 13:38:17 2000 ++++ procinfo-17/lsdev.pl Thu Nov 16 13:48:42 2000 +@@ -16,6 +16,7 @@ + while () { + next if /^[ \t]*[A-Z]/; + chop; ++ s/^ +//g; + if (/PIC/) { + $n = (@line = split()); + } else { +@@ -32,6 +33,7 @@ + open (DMA, ") { + chop; ++ s/^ +//g; + @line = split(': '); + @tmp = split (/[ \(]/, $line[1]); + $name = $tmp[0]; +@@ -43,6 +45,7 @@ + open (IOPORTS, ") { + chop; ++ s/^ +//g; + @line = split(' : '); + @tmp = split (/[ \(]/, $line[1]); + $name = $tmp[0]; +@@ -51,12 +54,12 @@ + } + close (IOPORTS); + +-printf ("%-16s %4s%6s %s\n------------------------------------------------\n", +- "Device", "DMA", "IRQ", " I/O Ports"); ++printf "%-16s %4s%6s %s\n------------------------------------------------\n", ++ "Device", "DMA", "IRQ", " I/O Ports"; + + foreach $name (sort { uc($a) cmp uc($b) } keys %device) { +- printf ("%-16s %4s%6s %s\n", +- $name, $dma{$name}, $irq{$name}, $port{$name}); ++ printf "%-16s %4s%6s %s\n", ++ $name, $dma{$name}, $irq{$name}, $port{$name}; + } + + # The End #################################################################### diff --git a/procinfo-17-mandir.patch b/procinfo-17-mandir.patch new file mode 100644 index 0000000..d44c9ad --- /dev/null +++ b/procinfo-17-mandir.patch @@ -0,0 +1,31 @@ +--- procinfo-17/Makefile.mandir Sun Jun 18 16:19:08 2000 ++++ procinfo-17/Makefile Sun Jun 18 16:19:49 2000 +@@ -1,6 +1,7 @@ + ### Makefile for procinfo. + + prefix=/usr ++mandir=$(prefix)/man + + CC = gcc -Wall -Wstrict-prototypes + +@@ -33,13 +34,13 @@ + + install: procinfo procinfo.8 lsdev.pl socklist.pl lsdev.8 + -mkdir -p $(prefix)/bin +- install -m 755 -o 0 -g 0 procinfo $(prefix)/bin/procinfo +- install -m 755 -o 0 -g 0 lsdev.pl $(prefix)/bin/lsdev +- install -m 755 -o 0 -g 0 socklist.pl $(prefix)/bin/socklist +- -mkdir -p $(prefix)/man/man8 +- install -m 644 procinfo.8 $(prefix)/man/man8/procinfo.8 +- install -m 644 lsdev.8 $(prefix)/man/man8/lsdev.8 +- install -m 644 socklist.8 $(prefix)/man/man8/socklist.8 ++ install -m 755 procinfo $(prefix)/bin/procinfo ++ install -m 755 lsdev.pl $(prefix)/bin/lsdev ++ install -m 755 socklist.pl $(prefix)/bin/socklist ++ -mkdir -p $(mandir) ++ install -m 644 procinfo.8 $(mandir)/man8/procinfo.8 ++ install -m 644 lsdev.8 $(mandir)/man8/lsdev.8 ++ install -m 644 socklist.8 $(mandir)/man8/socklist.8 + + clean: + rm -f procinfo procinfo.0 *.o *~ out diff --git a/procinfo-17-uptime.patch b/procinfo-17-uptime.patch new file mode 100644 index 0000000..71923d7 --- /dev/null +++ b/procinfo-17-uptime.patch @@ -0,0 +1,33 @@ +--- procinfo-17/routines.c.uptime Thu Nov 16 14:21:02 2000 ++++ procinfo-17/routines.c Thu Nov 16 14:30:37 2000 +@@ -390,19 +390,19 @@ + unsigned int d, h, m, s; + static char buf[22]; + +- t = t * 100 / HZ; +- d = (int) (t / 8640000); +- t = t - (long) (d * 8640000); +- h = (int) (t / 360000); +- t = t - (long) (h * 360000); +- m = (int) (t / 6000); +- t = t - (long) (m * 6000); +- s = (int) (t / 100); +- t = t - (long) (s * 100); ++ t *= (100 / HZ); ++ d = (unsigned int) (t / 8640000); ++ t -= (unsigned long) (d * 8640000); ++ h = (unsigned int) (t / 360000); ++ t -= (unsigned long) (h * 360000); ++ m = (unsigned int) (t / 6000); ++ t -= (unsigned long) (m * 6000); ++ s = (unsigned int) (t / 100); ++ t -= (unsigned long) (s * 100); + if (d > 0) +- sprintf (buf, "%3ud %2u:%02u:%02u.%02u", d, h, m, s, (int) t); ++ sprintf (buf, "%3ud %2u:%02u:%02u.%02u", d, h, m, s, (unsigned int) t); + else +- sprintf (buf, " %2u:%02u:%02u.%02u", h, m, s, (int) t); ++ sprintf (buf, " %2u:%02u:%02u.%02u", h, m, s, (unsigned int) t); + return buf; + } + diff --git a/procinfo-18-acct.patch b/procinfo-18-acct.patch new file mode 100644 index 0000000..e1f5291 --- /dev/null +++ b/procinfo-18-acct.patch @@ -0,0 +1,45 @@ +diff -urN procinfo-18.save/procinfo.c procinfo-18/procinfo.c +--- procinfo-18.save/procinfo.c 2001-02-25 06:29:16.000000000 -0500 ++++ procinfo-18/procinfo.c 2003-07-29 22:10:07.000000000 -0400 +@@ -249,6 +249,9 @@ + new.cpu_nice = VAL; + new.cpu_sys = VAL; + new.cpu_idle = VAL; ++ new.cpu_iowait = VAL; ++ new.cpu_irq = VAL; ++ new.cpu_softirq = VAL; + /* + * according to bug #1959, sometimes the cpu_idle + * seems to go backwards(!) on SMP boxes. This may +@@ -373,7 +376,9 @@ + putchar ('\n'); + + printf ("system: %s %s", +- hms (bDIFF (cpu_sys)), perc (bDIFF (cpu_sys), elapsed, nr_cpus)); ++ hms (bDIFF (cpu_sys) + bDIFF (cpu_irq) + bDIFF (cpu_softirq)), ++ perc (bDIFF (cpu_sys) + bDIFF (cpu_irq) + bDIFF (cpu_softirq), ++ elapsed, nr_cpus)); + printf (" swap in :%9lu", bDIFF (swin)); + if (new.disk_r[2]) + printf (" disk 3: %8lur%8luw\n", bDIFF (disk_r[2]), +@@ -384,7 +389,8 @@ + putchar ('\n'); + + printf ("idle : %s %s", +- hms (bDIFF (cpu_idle)), perc (bDIFF (cpu_idle), elapsed, nr_cpus)); ++ hms (bDIFF (cpu_idle) + bDIFF (cpu_iowait)), ++ perc (bDIFF (cpu_idle) + bDIFF (cpu_iowait), elapsed, nr_cpus)); + printf (" swap out:%9lu", bDIFF (swout)); + if (new.disk_r[3]) + printf (" disk 4: %8lur%8luw\n", bDIFF (disk_r[3]), +diff -urN procinfo-18.save/procinfo.h procinfo-18/procinfo.h +--- procinfo-18.save/procinfo.h 2001-02-24 18:30:45.000000000 -0500 ++++ procinfo-18/procinfo.h 2003-07-29 22:10:09.000000000 -0400 +@@ -82,6 +82,7 @@ + long m_to, m_us, m_fr, m_sh, m_bu, m_ca; + long s_to, s_us, s_fr; + unsigned long cpu_user, cpu_nice, cpu_sys, cpu_idle; ++ unsigned long cpu_iowait, cpu_irq, cpu_softirq; + unsigned long disk[5]; + unsigned long disk_r[5]; + unsigned long disk_w[5]; diff --git a/procinfo-18-cpu-steal.patch b/procinfo-18-cpu-steal.patch new file mode 100644 index 0000000..4416224 --- /dev/null +++ b/procinfo-18-cpu-steal.patch @@ -0,0 +1,45 @@ +--- procinfo-18/procinfo.h.steal 2006-04-21 01:09:52.000000000 +0200 ++++ procinfo-18/procinfo.h 2006-04-21 01:10:36.000000000 +0200 +@@ -81,7 +81,7 @@ + unsigned long uptime; + long m_to, m_us, m_fr, m_sh, m_bu, m_ca; + long s_to, s_us, s_fr; +- unsigned long cpu_user, cpu_nice, cpu_sys, cpu_idle; ++ unsigned long cpu_user, cpu_nice, cpu_sys, cpu_idle, cpu_steal; + unsigned long cpu_iowait, cpu_irq, cpu_softirq; + unsigned long disk[5]; + unsigned long disk_r[5]; +--- procinfo-18/procinfo.8.steal 2006-04-21 01:22:58.000000000 +0200 ++++ procinfo-18/procinfo.8 2006-04-21 01:24:01.000000000 +0200 +@@ -61,6 +61,10 @@ + The amount of time spent doing nothing. + + .TP ++.BI steal: ++The amount of time spent the virtual CPU waiting for physical CPU. ++ ++.TP + .BI uptime: + The time that the system has been up. The above four should more or + less add up to this one. +--- procinfo-18/procinfo.c.steal 2006-04-21 01:10:58.000000000 +0200 ++++ procinfo-18/procinfo.c 2006-04-21 01:22:25.000000000 +0200 +@@ -252,6 +252,8 @@ + new.cpu_iowait = VAL; + new.cpu_irq = VAL; + new.cpu_softirq = VAL; ++ new.cpu_steal = VAL; ++ + /* + * according to bug #1959, sometimes the cpu_idle + * seems to go backwards(!) on SMP boxes. This may +@@ -400,6 +402,9 @@ + else + putchar ('\n'); + ++ printf ("steal : %s %s\n", ++ hms (bDIFF (cpu_steal)), perc (bDIFF (cpu_steal), elapsed, nr_cpus)); ++ + printf ("uptime: %s context :%9lu", hms (new.uptime), + bDIFF (ctxt)); + if (new.syscalls) /* If we have this, we can use the old interrupts spot. */ diff --git a/procinfo-18-idle-overflow.patch b/procinfo-18-idle-overflow.patch new file mode 100644 index 0000000..9242433 --- /dev/null +++ b/procinfo-18-idle-overflow.patch @@ -0,0 +1,20 @@ +--- procinfo-18/routines.c.orig 2011-02-11 03:32:17.000000000 +0530 ++++ procinfo-18/routines.c 2011-02-11 03:35:01.000000000 +0530 +@@ -392,13 +392,13 @@ + + t *= (100 / HZ); + d = (unsigned int) (t / 8640000); +- t -= (unsigned long) (d * 8640000); ++ t -= ((unsigned long) d * 8640000); + h = (unsigned int) (t / 360000); +- t -= (unsigned long) (h * 360000); ++ t -= ((unsigned long) h * 360000); + m = (unsigned int) (t / 6000); +- t -= (unsigned long) (m * 6000); ++ t -= ((unsigned long) m * 6000); + s = (unsigned int) (t / 100); +- t -= (unsigned long) (s * 100); ++ t -= ((unsigned long) s * 100); + if (d > 0) + sprintf (buf, "%3ud %2u:%02u:%02u.%02u", d, h, m, s, (unsigned int) t); + else diff --git a/procinfo-18-intr.patch b/procinfo-18-intr.patch new file mode 100644 index 0000000..23cbb4e --- /dev/null +++ b/procinfo-18-intr.patch @@ -0,0 +1,213 @@ +--- procinfo-18/routines.c.intr 2007-10-11 09:52:56.000000000 +0200 ++++ procinfo-18/routines.c 2007-10-10 16:38:41.000000000 +0200 +@@ -410,21 +410,24 @@ + char * + perc (unsigned long i, unsigned long t, int cpus) + { +- unsigned int v; ++ long double v; + static char buf[16]; + + if ((signed long) i == -1 || t == 0) + return "---.-%"; + +- v = (unsigned int) (i < 1000000 ? +- ((1000 * i + t / 2) / t) : +- ((i + t / 2000) / (t / 1000))); +- v /= cpus; ++ if (i < 1000000UL) ++ { ++ v = (1000.0 * i + t / 2.0) / t; ++ } ++ else ++ { ++ v = (i + t / 2000.0) / (t / 1000.0); ++ } ++ v = v / (cpus * 10.0); + +- /* if (v > 1000) +- return "+++.+%"; +- else */ +- sprintf (buf, "%3u.%u%%", v / 10, v % 10); ++ buf[0] = '\0'; ++ snprintf (buf, sizeof(buf), "%3.1Lf", v); + return buf; + } + +--- procinfo-18/procinfo.c.intr 2007-10-11 09:52:56.000000000 +0200 ++++ procinfo-18/procinfo.c 2007-10-10 16:40:01.000000000 +0200 +@@ -335,26 +335,6 @@ + + elapsed = new.uptime; + +-/* XXX Is this stuff still relevant/true? */ +- +-#ifdef __i386__ /* IRQ 0 is timer tick on i386's... */ +- if (nr_irqs) { +- if (fs && old.uptime) +- elapsed = DIFF (intr[0]); +- } else +-#endif +-#ifdef __sparc__ /* IRQ 10 is timer tick on sparc's... */ +- if (nr_irqs) { +- if (fs && old.uptime) +- elapsed = DIFF (intr[10]); +- } else +-#endif +- { +- /* This won't be exact... */ +- if (fs && old.uptime) +- elapsed = DIFF (uptime); +- } +- + printf ("user : %s %s", + hms (bDIFF (cpu_user)), perc (bDIFF (cpu_user), elapsed, nr_cpus)); + printf (" page in :%9lu", bDIFF (pgin)); +@@ -414,22 +394,31 @@ + + if (nr_irqs) { + char irq_label[nr_irqs][22]; ++ unsigned real_irq_nums[nr_irqs]; ++ unsigned real_nr_irqs = 0U; + + memset (irq_label, 0, nr_irqs * 22); + + if (interruptsfp) { +- int i; + + fseek (interruptsfp, 0L, SEEK_SET); + while (fgets (line, sizeof (line), interruptsfp)) { ++ char *endptr; + char *p; ++ int i; + + if (!strchr(line, ':')) /* skip " CPU0" */ + continue; + +- i = atol (strtok (line, ":")); /* Get the IRQ no. */ +- +- p = strtok (NULL, "\n"); ++ /* Get the IRQ no. */ ++ p = strtok(line, ":"); ++ endptr = NULL; ++ real_irq_nums[real_nr_irqs] = strtol(p, &endptr, 10); ++ if (endptr == p) /* Not a number */ ++ { ++ continue; ++ } ++ p = strtok (NULL, " "); + + /* + Left: p = " 31273 + serial" +@@ -438,38 +427,24 @@ + or whatever. + Anyway, let's first gobble up... + */ +- +- while (*p == ' ') /* ...spaces... */ +- p++; +- while (*p >= '0' && *p <= '9') /* ...digits... */ +- p++; +- while (*p == ' ' || *p == '+') /* ...and the rest. */ +- p++; ++ for (i = 0; i < nr_cpus; i++) ++ p = strtok(NULL, " "); + + /* Left: "serial" or "XT PIC serial" */ + + if (linux_version_code >= 0x20150) { +- /* +- I don't really like hardcoding version numbers, but +- since the label itself may contain spaces, I can't +- think of a fool-proof algorithm to detect a "XT PIC" +- style /proc/interrupts. +- */ +- char *q; +- +- if ((q = strstr (p, "PIC"))) { +- while (*q != ' ') /* eat up "PIC" or "PIC-foo" */ +- q++; +- while (*q == ' ') /* eat up spaces */ +- q++; +- p = q; +- } ++ p = strtok(NULL, " "); + } ++ if (p[strlen(p) - 1] == '\n') ++ p[strlen(p) - 1] = '\0'; ++ + + /* XXX Don't let NMI:, IPI: overwrite real values */ +- if (irq_label[i][0] == 0) +- strncpy (irq_label[i], p, 20); ++ if (irq_label[real_nr_irqs][0] == 0) { ++ strncpy (irq_label[real_nr_irqs], p, 20); ++ ++real_nr_irqs; + } ++ } + } + + +@@ -484,7 +459,7 @@ + while (fgets (line, sizeof (line), dmafp)) { + int foo = strcspn (&line[4], " \n"); + +- for (i = 0; i < nr_irqs; i++) { ++ for (i = 0; i < real_nr_irqs; i++) { + if (strncmp (&line[4], irq_label[i], foo) == 0) { + tmplen = snprintf (tmp, sizeof(tmp), " [%ld]", + atol (strtok (line, ":"))); +@@ -509,9 +484,9 @@ + char *label; + } squirqs[nr_irqs]; + +- for (i = 0; i < nr_irqs; i++) { ++ for (i = 0; i < real_nr_irqs; i++) { + if (new.intr[i] || irq_label[i][0]) { +- squirqs[howmany].nr = i; ++ squirqs[howmany].nr = real_irq_nums[i]; + squirqs[howmany].count = bDIFF(intr[i]); + squirqs[howmany].label = irq_label[i]; + howmany++; +@@ -523,11 +498,11 @@ + for (i = 0; i < rows; i++) { + /* The last row may be incomplete if howmany is odd, hence: */ + if (i == rows - 1 && howmany & 1) { +- printf ("irq%3d:%10lu %-21s\n", ++ printf ("irq%4d:%10lu %-21s\n", + squirqs[i].nr, squirqs[i].count, squirqs[i].label); + } else { +- printf ("irq%3d:%10lu %-21s " +- "irq%3d:%10lu %-21s\n", ++ printf ("irq%4d:%10lu %-21s " ++ "irq%4d:%10lu %-21s\n", + squirqs[i].nr, squirqs[i].count, squirqs[i].label, + squirqs[i+rows].nr, + squirqs[i+rows].count, +@@ -535,10 +510,10 @@ + } + } + } else { +- for (i = 0; i < nr_irqs / 2; i++) ++ for (i = 0; i < real_nr_irqs / 2; i++) + printf ("irq%3d:%10lu %-21s " + "irq%3d:%10lu %-21s\n", +- i, bDIFF (intr[i]), irq_label[i], ++ real_irq_nums[i], bDIFF (intr[i]), irq_label[i], + i + (nr_irqs / 2), + bDIFF (intr[i + (nr_irqs / 2)]), + irq_label[i + (nr_irqs / 2)]); +@@ -859,10 +834,10 @@ + for(i = 5; i < len; i++) + if(line[i] == ' ') + nr_irqs++; +- new.intr = my_xcalloc (nr_irqs, sizeof (unsigned int)); +- old.intr = my_xcalloc (nr_irqs, sizeof (unsigned int)); ++ new.intr = my_xcalloc (nr_irqs, sizeof (unsigned long)); ++ old.intr = my_xcalloc (nr_irqs, sizeof (unsigned long)); + memset (&base, 0, sizeof (struct info)); +- base.intr = my_xcalloc (nr_irqs, sizeof (unsigned int)); ++ base.intr = my_xcalloc (nr_irqs, sizeof (unsigned long)); + continue; + } + /* While we're at it, fill in booted. */ diff --git a/procinfo-18-intrprint.patch b/procinfo-18-intrprint.patch new file mode 100644 index 0000000..90b35e0 --- /dev/null +++ b/procinfo-18-intrprint.patch @@ -0,0 +1,18 @@ +diff -up procinfo-18/procinfo.c.intrprint procinfo-18/procinfo.c +--- procinfo-18/procinfo.c.intrprint 2010-10-12 13:37:18.000000000 +0200 ++++ procinfo-18/procinfo.c 2010-10-12 13:44:25.500001055 +0200 +@@ -498,11 +498,11 @@ first_page (long sl) + for (i = 0; i < rows; i++) { + /* The last row may be incomplete if howmany is odd, hence: */ + if (i == rows - 1 && howmany & 1) { +- printf ("irq%4d:%10lu %-21s\n", ++ printf ("irq%4d:%10lu %-20s\n", + squirqs[i].nr, squirqs[i].count, squirqs[i].label); + } else { +- printf ("irq%4d:%10lu %-21s " +- "irq%4d:%10lu %-21s\n", ++ printf ("irq%4d:%10lu %-20s " ++ "irq%4d:%10lu %-20s\n", + squirqs[i].nr, squirqs[i].count, squirqs[i].label, + squirqs[i+rows].nr, + squirqs[i+rows].count, diff --git a/procinfo-18-man-comment.patch b/procinfo-18-man-comment.patch new file mode 100644 index 0000000..f0b22e1 --- /dev/null +++ b/procinfo-18-man-comment.patch @@ -0,0 +1,14 @@ +diff -up procinfo-18/procinfo.8~ procinfo-18/procinfo.8 +--- procinfo-18/procinfo.8~ 2010-10-12 15:42:48.999001121 +0200 ++++ procinfo-18/procinfo.8 2010-10-12 15:42:49.007001089 +0200 +@@ -178,8 +178,8 @@ or + option). Modules with a use count larger than 0 are marked with an + asterisk. + +-." Deleted modules are marked with a `d', uninitialized +-." modules with a `u', and modules with a bad state flag with a `b'. ++.\" Deleted modules are marked with a `d', uninitialized ++.\" modules with a `u', and modules with a bad state flag with a `b'. + + .TP + .BI Character\ and\ Block\ Devices: diff --git a/procinfo-18-maxdev.patch b/procinfo-18-maxdev.patch new file mode 100644 index 0000000..5a2806a --- /dev/null +++ b/procinfo-18-maxdev.patch @@ -0,0 +1,28 @@ +--- procinfo-18/procinfo.h.maxdev 2004-12-16 18:02:26.000000000 +0100 ++++ procinfo-18/procinfo.h 2004-12-17 11:18:11.239523416 +0100 +@@ -69,10 +69,10 @@ + #define CDRV 0 + #define BDRV 1 + #ifndef MAX_CHRDEV +-#define MAX_CHRDEV 32 ++#define MAX_CHRDEV 512 + #endif + #ifndef MAX_BLKDEV +-#define MAX_BLKDEV 32 ++#define MAX_BLKDEV 512 + #endif + #define MAX_DEV MAX(MAX_CHRDEV, MAX_BLKDEV) + +--- procinfo-18/procinfo.c.maxdev 2004-12-17 11:19:52.421141472 +0100 ++++ procinfo-18/procinfo.c 2004-12-17 11:20:49.312492672 +0100 +@@ -613,7 +613,9 @@ + printf ("%s\nCharacter Devices: " + "Block Devices:\n", + fs ? ce : ""); +- while (fgets (line, sizeof (line), devicesfp)) { ++ while (fgets (line, sizeof (line), devicesfp) && ++ count[CDRV] < MAX_DEV && ++ count[BDRV] < MAX_DEV) { + switch (line[0]) { + case 'C': + which = CDRV; diff --git a/procinfo-18-mharris-use-sysconf.patch b/procinfo-18-mharris-use-sysconf.patch new file mode 100644 index 0000000..ac4e58c --- /dev/null +++ b/procinfo-18-mharris-use-sysconf.patch @@ -0,0 +1,23 @@ +--- procinfo-18/procinfo.c.mharris-use-sysconf 2004-01-16 15:40:37.000000000 -0500 ++++ procinfo-18/procinfo.c 2004-01-17 02:01:16.000000000 -0500 +@@ -837,19 +837,7 @@ + } + + /* Count number of CPUs */ +- cpuinfofp = myfopen (PROC_DIR "cpuinfo"); +- if (cpuinfofp) { +- while (fgets (line, sizeof (line), cpuinfofp)) +- if (!strncmp ("processor", line, 9)) /* intel */ +- nr_cpus++; +- else if (!strncmp ("ncpus ", line, 6)) /* sparc */ +- nr_cpus = atoi(line+19); +- else if (!strncmp ("cpus detected", line, 13)) /* alpha */ +- nr_cpus = atoi(line+27); +- fclose (cpuinfofp); +- } +- if (nr_cpus == 0) +- nr_cpus = 1; ++ nr_cpus = sysconf (_SC_NPROCESSORS_ONLN); + + /* Gets called from winsz(), but in case stdout is redirected: */ + version = make_version (versionfp); diff --git a/procinfo-18-ranges.patch b/procinfo-18-ranges.patch new file mode 100644 index 0000000..7bc1359 --- /dev/null +++ b/procinfo-18-ranges.patch @@ -0,0 +1,40 @@ +--- procinfo-18/procinfo.c.ranges 2005-10-12 12:07:20.000000000 +0200 ++++ procinfo-18/procinfo.c 2005-10-12 12:09:17.000000000 +0200 +@@ -231,8 +231,8 @@ + + fseek (loadavgfp, 0L, SEEK_SET); + fgets (line, sizeof (line), loadavgfp); +- strcpy (loadavg, line); +- loadavg[strlen (loadavg) - 1] = '\0'; ++ strncpy (loadavg, line, sizeof (loadavg)); ++ loadavg[sizeof (loadavg) - 1] = '\0'; + fgets (line, sizeof (line), loadavgfp); + + printf ("Bootup: %s Load average: %s\n\n", booted, loadavg); +@@ -481,7 +481,7 @@ + + for (i = 0; i < nr_irqs; i++) { + if (strncmp (&line[4], irq_label[i], foo) == 0) { +- tmplen = sprintf (tmp, " [%ld]", ++ tmplen = snprintf (tmp, sizeof(tmp), " [%ld]", + atol (strtok (line, ":"))); + + if (strlen (irq_label[i]) > (21 - tmplen)) { +@@ -686,7 +686,7 @@ + fs = strchr (line, '\t'); + fs = strtok (fs + 1, "\n"); + if (line[0] == 'n') { +- sprintf (tmp, "[%s]", fs); ++ snprintf (tmp, sizeof(tmp), "[%s]", fs); + printf ("%-20s", tmp); + } else + printf ("%-20s", fs); +@@ -1003,7 +1003,7 @@ + if (strlen (line) > 1) { + tmpsl = atof (line); + sl = (long) (tmpsl * 1000000.0); +- sprintf (line, "delay set to %f", tmpsl); ++ snprintf (line, sizeof(line), "delay set to %f", tmpsl); + message = line; + } + redrawn = 1; diff --git a/procinfo-18-socklist.patch b/procinfo-18-socklist.patch new file mode 100644 index 0000000..aaf7ff3 --- /dev/null +++ b/procinfo-18-socklist.patch @@ -0,0 +1,19 @@ +--- socklist.orig 2010-01-28 10:33:43.977683369 -0500 ++++ socklist.pl 2010-01-28 10:33:25.757680751 -0500 +@@ -87,12 +87,15 @@ + ($cmd) = ( $l=~/Name:\s*(\S+)/ ); + close(CMD); + } +- printf "%s %6d %10d %6d %6d %4d %s\n", ++ printf "%-4s%6d %10d %6d %6d %4d %s\n", + $_[0], $a ,$F[9], $F[7], $pid, $fd, $cmd; + } + close(FILE); + } + + scheck("tcp"); ++scheck("tcp6"); + scheck("udp"); ++scheck("udp6"); + scheck("raw"); ++scheck("raw6"); diff --git a/procinfo-18-version.patch b/procinfo-18-version.patch new file mode 100644 index 0000000..1a602cd --- /dev/null +++ b/procinfo-18-version.patch @@ -0,0 +1,17 @@ +diff -up procinfo-18/routines.c.version procinfo-18/routines.c +--- procinfo-18/routines.c.version 2010-10-12 13:37:18.000000000 +0200 ++++ procinfo-18/routines.c 2010-10-12 13:40:29.166001055 +0200 +@@ -273,6 +273,13 @@ make_version (FILE * versionfp) + ret = sscanf (line, "Linux version %s (%[^)]) (gcc %[^(] (%*[^)])) #%s %[^\n]", + ver, host, gcc, compno, date); + ++ if (ret != 5) { /* Red Hat has different format of gcc version... */ ++ ret = sscanf (line, "Linux version %s (%[^)]) (gcc %[^)]) (%*[^)]) ) #%s %[^\n]", ++ ver, host, gcc, compno, date); ++ if(ret == 5) ++ strcat(gcc, ")"); ++ } ++ + if (ret == 3) { /* At least we've got ver & host right... */ + strcpy (gcc, "[can't parse]"); + strcpy (compno, "???"); diff --git a/procinfo-18.tar.gz b/procinfo-18.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a6ce7dba42616a5cb86836001f4f011e7558a1e GIT binary patch literal 24365 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 literal 0 HcmV?d00001 diff --git a/procinfo.spec b/procinfo.spec new file mode 100644 index 0000000..efec18f --- /dev/null +++ b/procinfo.spec @@ -0,0 +1,75 @@ +Name: procinfo +Version: 18 +Release: 42 +Summary: A tool for displaying system information +License: GPL+ +Source: ftp://ftp.cistron.nl/pub/people/00-OLD/svm/procinfo-%{version}.tar.gz +Patch0: procinfo-14-misc.patch +Patch3: procinfo-17-mandir.patch +Patch5: procinfo-17-uptime.patch +Patch6: procinfo-17-lsdev.patch +Patch7: procinfo-18-acct.patch +Patch8: procinfo-18-mharris-use-sysconf.patch +Patch9: procinfo-18-maxdev.patch +Patch10: procinfo-18-ranges.patch +Patch11: procinfo-18-cpu-steal.patch +Patch12: procinfo-18-intr.patch +Patch13: procinfo-18-intrprint.patch +Patch14: procinfo-18-version.patch +Patch15: procinfo-18-man-comment.patch +Patch16: procinfo-18-socklist.patch +Patch17: procinfo-18-idle-overflow.patch + +BuildRequires: ncurses-devel gcc + +%package help +Summary: Documentation for procinfo + +%description +This package provides tools for displaying information about the system. +It is easy to install and use it. + +%description help +This package contains documentation for procinfo. + +%prep +%setup -q +%patch0 -p1 +%patch3 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p0 +%patch17 -p1 + +%build +make RPM_OPT_FLAGS="$RPM_OPT_FLAGS -I/usr/include/ncurses" LDFLAGS= LDLIBS=-lncurses + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_bindir} +mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man8 +make install prefix=$RPM_BUILD_ROOT/usr mandir=$RPM_BUILD_ROOT/%{_mandir} + +%files +%doc CHANGES README +%{_bindir}/procinfo +%{_bindir}/socklist +%{_bindir}/lsdev + +%files help +%{_mandir}/man8/lsdev.8* +%{_mandir}/man8/procinfo.8* +%{_mandir}/man8/socklist.8* + +%changelog +* Thu Feb 13 2020 openEuler Buildteam - 18-42 +- DESC:update the spec -- Gitee