1 --- blackbox-0.62.1/src/Screen.cc Sat Jan 12 12:13:09 2002
2 +++ blackbox-0.62.1.with_pipe/src/Screen.cc Sun Mar 3 20:32:30 2002
4 Bool defaultMenu = True;
6 if (blackbox->getMenuFilename()) {
7 - FILE *menu_file = fopen(blackbox->getMenuFilename(), "r");
10 + if (*(blackbox->getMenuFilename()) == '|') {
12 + menu_file = popen((blackbox->getMenuFilename()) + 1, "r");
14 + else menu_file = fopen(blackbox->getMenuFilename(), "r");
17 perror(blackbox->getMenuFilename());
23 + if (pipe_menu) pclose(menu_file);
24 + else fclose(menu_file);
28 @@ -1958,12 +1965,18 @@
32 - FILE *submenufile = fopen(newfile, "r");
33 + int pipe_submenu = 0;
35 + if (*newfile == '|') {
37 + submenufile = popen(newfile + 1, "r");
39 + else submenufile = fopen(newfile, "r");
43 - if (fstat(fileno(submenufile), &buf) ||
44 - (! S_ISREG(buf.st_mode))) {
45 + if (!pipe_submenu && (fstat(fileno(submenufile), &buf) ||
46 + (! S_ISREG(buf.st_mode)))) {
48 i18n->getMessage(ScreenSet, ScreenINCLUDEErrorReg,
49 "BScreen::parseMenuFile: [include] error: "
51 if (! feof(submenufile)) {
52 if (! parseMenuFile(submenufile, menu))
53 blackbox->saveMenuFilename(newfile);
55 - fclose(submenufile);
56 + if (pipe_submenu) pclose(submenufile);
57 + else fclose(submenufile);