/[pkg-mixmaster]/trunk/Mix/Src/menuutil.c
ViewVC logotype

Contents of /trunk/Mix/Src/menuutil.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 934 - (hide annotations) (download)
Sat Jun 24 13:40:39 2006 UTC (6 years, 11 months ago) by rabbi
File MIME type: text/plain
File size: 3044 byte(s)
Updated copyright dates.
1 rabbi 934 /* Mixmaster version 3.0 -- (C) 1999 - 2006 Anonymizer Inc. and others.
2 rabbi 1
3     Mixmaster may be redistributed and modified under certain conditions.
4     This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
5     ANY KIND, either express or implied. See the file COPYRIGHT for
6     details.
7    
8     Menu-based user interface - utility functions
9 weasel 647 $Id$ */
10 rabbi 1
11    
12     #include "menu.h"
13     #include <stdarg.h>
14     #include <stdlib.h>
15     #include <ctype.h>
16     #include <string.h>
17    
18     int menu_initialized = 0;
19    
20     #ifdef USE_NCURSES
21     void cl(int y, int x)
22     {
23     move(y, x);
24     hline(' ', COLS - x);
25     }
26 rabbi 262 #endif /* USE_NCURSES */
27 rabbi 1
28     void menu_init(void)
29     {
30     #ifdef USE_NCURSES
31     initscr();
32     cbreak();
33     noecho();
34     nonl();
35     intrflush(stdscr, FALSE);
36     keypad(stdscr, TRUE);
37     menu_initialized = 1;
38 rabbi 262 #endif /* USE_NCURSES */
39 rabbi 1 }
40    
41     void menu_exit(void)
42     {
43     user_delpass();
44     #ifdef USE_NCURSES
45     endwin();
46 rabbi 262 #endif /* USE_NCURSES */
47 rabbi 1 }
48    
49     #ifdef USE_NCURSES
50     void askfilename(char *path)
51     {
52     char line[PATHMAX];
53    
54     printw("\rFile name: ");
55     echo();
56     wgetnstr(stdscr, path, PATHMAX);
57     noecho();
58     printw("\r");
59     if (path[0] == '~') {
60     char *h;
61    
62     if ((h = getenv("HOME")) != NULL) {
63     strncpy(line, h, PATHMAX);
64     strcatn(line, "/", PATHMAX);
65     strcatn(line, path + 1, PATHMAX);
66     strncpy(path, line, PATHMAX);
67     }
68     }
69     }
70    
71     void savemsg(BUFFER *message)
72     {
73     char savename[PATHMAX];
74     FILE *f;
75    
76     askfilename(savename);
77     f = fopen(savename, "a");
78     if (f != NULL) {
79     buf_write(message, f);
80     fclose(f);
81     }
82     }
83    
84 rabbi 262 #endif /* USE_NCURSES */
85 rabbi 1
86 weasel 794 void menu_spawn_editor(char *path, int lineno) {
87     #ifdef WIN32
88     SHELLEXECUTEINFO sei;
89     ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO));
90     sei.cbSize = sizeof(SHELLEXECUTEINFO);
91     sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_DDEWAIT;
92     sei.hwnd = NULL;
93     sei.lpVerb = "open";
94     sei.lpFile = path;
95     sei.lpParameters = NULL;
96     sei.nShow = SW_SHOWNORMAL;
97    
98     if (ShellExecuteEx(&sei) == TRUE) {
99     WaitForSingleObject(sei.hProcess, INFINITE);
100     CloseHandle(sei.hProcess);
101     }
102     #else /* WIN32 */
103     char *editor;
104     char s[PATHMAX];
105    
106     /* Command line option +nn to position the cursor? */
107     #define cursorpos (strfind(editor, "emacs") || streq(editor, "vi") || \
108     streq(editor, "joe"))
109    
110     editor = getenv("EDITOR");
111     if (editor == NULL)
112     editor = "vi";
113    
114     if (lineno > 1 && cursorpos)
115     snprintf(s, PATHMAX, "%s +%d %s", editor, lineno, path);
116     else
117     snprintf(s, PATHMAX, "%s %s", editor, path);
118    
119     #ifdef USE_NCURSES
120     clear();
121     refresh();
122     endwin();
123     #endif /* USE_NCURSES */
124     system(s);
125     #ifdef USE_NCURSES
126     refresh();
127     #endif /* USE_NCURSES */
128    
129     #endif /* WIN32 */
130     }
131    
132 rabbi 1 int menu_getuserpass(BUFFER *b, int mode)
133     {
134     #ifdef USE_NCURSES
135     char p[LINELEN];
136    
137     if (menu_initialized) {
138     cl(LINES - 1, 10);
139     if (mode == 0)
140     printw("enter passphrase: ");
141     else
142     printw("re-enter passphrase: ");
143     wgetnstr(stdscr, p, LINELEN);
144     cl(LINES - 1, 10);
145     refresh();
146     if (mode == 0)
147     buf_appends(b, p);
148     else
149     return (bufeq(b, p));
150     return (0);
151     }
152 rabbi 262 #endif /* USE_NCURSES */
153 rabbi 1 return (-1);
154     }

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5