summaryrefslogtreecommitdiff
path: root/community/xdiskusage/build-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/xdiskusage/build-fix.patch')
-rw-r--r--community/xdiskusage/build-fix.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/community/xdiskusage/build-fix.patch b/community/xdiskusage/build-fix.patch
new file mode 100644
index 000000000..38a675609
--- /dev/null
+++ b/community/xdiskusage/build-fix.patch
@@ -0,0 +1,71 @@
+diff -wbBur xdiskusage-1.48/makeinclude.in xdiskusage-1.48.my/makeinclude.in
+--- xdiskusage-1.48/makeinclude.in 2004-05-05 10:07:57.000000000 +0400
++++ xdiskusage-1.48.my/makeinclude.in 2014-04-23 20:58:15.136751299 +0400
+@@ -21,6 +21,6 @@
+ CXXFLAGS_D =@CXXFLAGS_D@
+
+ # libraries to link with:
+-LDLIBS =@LIBS@ -lfltk -lXinerama -lGL -lGLU -lX11 -lXext @X_EXTRA_LIBS@ -lm
++LDLIBS =@LIBS@ -lfltk -lXinerama -lXft -lX11 -lXext -lXi @X_EXTRA_LIBS@ -lm
+
+ INSTALL =@INSTALL@
+diff -wbBur xdiskusage-1.48/xdiskusage.C xdiskusage-1.48.my/xdiskusage.C
+--- xdiskusage-1.48/xdiskusage.C 2004-09-21 09:23:14.000000000 +0400
++++ xdiskusage-1.48.my/xdiskusage.C 2014-04-23 21:00:50.696749510 +0400
+@@ -223,6 +223,19 @@
+ return 1;
+ }
+
++// returns true if stdin is /dev/null
++// To fix Debian bug #276193
++// Technically could be possible that returns "true" and is not "true",
++// because same device ID is used across file systems. But is the best
++// solutions that I have
++int isstdinnull() {
++ struct stat ststdin,stnull;
++ stat("/dev/null",&stnull);
++ fstat(0,&ststdin);
++
++ return (ststdin.st_rdev==stnull.st_rdev);
++}
++
+ int main(int argc, char**argv) {
+ #if FL_MAJOR_VERSION < 2
+ // Make fltk look more like KDE/Windoze:
+@@ -253,7 +266,7 @@
+ OutputWindow* d = OutputWindow::make(argv[n++]);
+ if (d) d->show(argc,argv);
+ }
+- } else if (!isatty(0)) {
++ } else if (!isatty(0) && !isstdinnull()) {
+ // test for pipe, if so read stdin:
+ OutputWindow* d = OutputWindow::make(0);
+ if (d) d->show(argc,argv);
+@@ -392,8 +405,7 @@
+ strncpy(pathbuf, path, 1024);
+ for (int i=0; i<10; i++) {
+ char *p = (char*)fl_filename_name(pathbuf);
+- int i = readlink(pathbuf, p, 1024-(p-pathbuf));
+- if (i < 0) {
++ if (readlink(pathbuf, p, 1024-(p-pathbuf)) < 0) {
+ if (errno != EINVAL) {
+ strcat(pathbuf, ": no such file");
+ fl_alert(pathbuf);
+@@ -988,7 +1000,7 @@
+ void OutputWindow::sort_cb(Fl_Widget* o, void*v) {
+ OutputWindow* d = (OutputWindow*)(o->window());
+ int (*compare)(const Node*, const Node*);
+- switch ((int)v) {
++ switch ((long long)v) {
+ case 's': compare = largestfirst; break;
+ case 'r': compare = smallestfirst; break;
+ case 'a': compare = alphabetical; break;
+@@ -1001,7 +1013,7 @@
+
+ void OutputWindow::columns_cb(Fl_Widget* o, void*v) {
+ OutputWindow* d = (OutputWindow*)(o->window());
+- int n = (int)v;
++ int n = (long long)v;
+ ::ncols = n;
+ if (n == d->ncols) return;
+ if (d->current_depth > d->root_depth+n-1) {