[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Pre-approval for t-p-u upload (was Re: Freeze exception for procinfo)



Adeodato Simó ha scritto:
> Sorry, this diff is more than I'm willing to take.

I prepared an upload for tpu to fix #502219 and #379592,
I'd like to upload in t-p-u, for your approval.

Attached the debdiff.


Giuseppe Iuculano
diff -u procinfo-18/debian/patches/00list procinfo-18/debian/patches/00list
--- procinfo-18/debian/patches/00list
+++ procinfo-18/debian/patches/00list
@@ -7,0 +8,2 @@
+09_procinfo_fix_high_interrupt.dpatch
+10_fix_garbles_numbers_on_amd64.dpatch
diff -u procinfo-18/debian/changelog procinfo-18/debian/changelog
--- procinfo-18/debian/changelog
+++ procinfo-18/debian/changelog
@@ -1,3 +1,12 @@
+procinfo (18-2+lenny1) testing-proposed-updates; urgency=low
+
+  * Fix a segfault caused by interrupts counting. (Closes: #502219)
+  * Set me as maintainer. 
+  * Fix garbles numbers on amd64 (Closes: #379592)
+  * debian/rules: Do not ignore make clean error
+
+ -- Giuseppe Iuculano <giuseppe@iuculano.it>  Tue, 14 Oct 2008 23:12:03 +0200
+
 procinfo (18-2) unstable; urgency=low
 
   * New maintainer (closes: #384633).
diff -u procinfo-18/debian/control procinfo-18/debian/control
--- procinfo-18/debian/control
+++ procinfo-18/debian/control
@@ -1,7 +1,7 @@
 Source: procinfo
 Section: utils
 Priority: optional
-Maintainer: Antonio José Calderón <neo@neocalderon.net>
+Maintainer: Giuseppe Iuculano <giuseppe@iuculano.it>
 Build-Depends: libncurses5-dev, debhelper (>= 5), dpatch
 Standards-Version: 3.7.2
 
diff -u procinfo-18/debian/rules procinfo-18/debian/rules
--- procinfo-18/debian/rules
+++ procinfo-18/debian/rules
@@ -29,7 +29,7 @@
 	dh_testdir
 	dh_testroot
 	rm -f build-stamp
-	$(MAKE) -i clean
+	[ ! -f Makefile ] || $(MAKE) clean
 	dh_clean
 
 install: build
only in patch2:
unchanged:
--- procinfo-18.orig/debian/patches/09_procinfo_fix_high_interrupt.dpatch
+++ procinfo-18/debian/patches/09_procinfo_fix_high_interrupt.dpatch
@@ -0,0 +1,158 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 09_procinfo_fix_high_interrupt.dpatch by Giuseppe Iuculano <giuseppe@iuculano.it>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix segfault caused by interrupts counting
+
+@DPATCH@
+diff -urNad procinfo-18~/procinfo.c procinfo-18/procinfo.c
+--- procinfo-18~/procinfo.c	2008-10-14 22:16:17.844235046 +0200
++++ procinfo-18/procinfo.c	2008-10-14 22:27:57.158390839 +0200
+@@ -499,22 +499,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"
+@@ -523,38 +532,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;
+ 	    }
++		}
+ 	}
+ 
+ 
+@@ -569,7 +564,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 = sprintf (tmp, " [%ld]",
+ 					  atol (strtok (line, ":")));
+@@ -594,9 +589,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++;
+@@ -608,11 +603,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,
+@@ -620,10 +615,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)]);
+@@ -944,10 +939,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. */
only in patch2:
unchanged:
--- procinfo-18.orig/debian/patches/10_fix_garbles_numbers_on_amd64.dpatch
+++ procinfo-18/debian/patches/10_fix_garbles_numbers_on_amd64.dpatch
@@ -0,0 +1,30 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 10_fix_garbles_numbers_on_amd64.dpatch by Giuseppe Iuculano <giuseppe@iuculano.it>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix garbles numbers on AMD64.
+
+@DPATCH@
+diff -urNad procinfo-18~/procinfo.c procinfo-18/procinfo.c
+--- procinfo-18~/procinfo.c	2008-10-14 22:43:05.208233922 +0200
++++ procinfo-18/procinfo.c	2008-10-14 22:44:01.774419367 +0200
+@@ -79,7 +79,7 @@
+ 
+ char line[1024], cmdline[1024], booted[40], *version = NULL, *message = NULL;
+ 
+-float rate = 1.0;		/* per interval or per sec */
++double rate = 1.0;		/* per interval or per sec */
+ 
+ struct info new, old, base;
+ struct utsname ut;
+@@ -1144,8 +1144,8 @@
+ 	    then = now;
+ 	    gettimeofday (&now, 0);
+ 	    if (per_sec)
+-		rate = (float) now.tv_sec + (float) now.tv_usec / 1.0e6 -
+-		    (float) then.tv_sec - (float) then.tv_usec / 1.0e6;
++		rate = (double) now.tv_sec + (float) now.tv_usec / 1.0e6 -
++		    (double) then.tv_sec - (double) then.tv_usec / 1.0e6;
+ 
+ 	} else {
+ 	    putchar ('\n');

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: