Quoth Amadeusz Sławiński,

Seems like pipe menus were broken with recent rewrites to menu handling.

popen() was called with type "rb" but "b" makes no sense for a pipe. It was probably copy/pasted from file opening code somewhere else by mistake.
From f48aba0eafa605938c9a04c94f2fd61bf63606d2 Mon Sep 17 00:00:00 2001
From: Iain Patterson <[email protected]>
Date: Sat, 25 Aug 2012 10:28:04 +0100
Subject: [PATCH] Fixed invalid argument to popen in readMenuPipe().

We were passing "rb" to popen(), which was failing with EINVAL with the
result that generated menus were not displayed.
---
 src/rootmenu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/rootmenu.c b/src/rootmenu.c
index addb23e..2fcd0ae 100644
--- a/src/rootmenu.c
+++ b/src/rootmenu.c
@@ -998,7 +998,7 @@ static WMenu *readMenuPipe(WScreen * scr, char **file_name)
        }
        filename = flat_file + (flat_file[1] == '|' ? 2 : 1);
 
-       file = popen(filename, "rb");
+       file = popen(filename, "r");
        if (!file) {
                werror(_("%s:could not open menu file"), filename);
                return NULL;
-- 
1.7.11.4

Reply via email to