#include <pager.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | MSG_WRAPPED " WRAPPED" |
| #define | MSG_NOT_FOUND " NOTHING FOUND" |
| #define | MSG_NO_REGX " NO PREV REGULAR EXPR" |
| #define | MSG_ILLEGAL " ILLEGAL LINE NUMBER" |
| #define | MSG_HELP "\Help for more:\n\\n\b,B -- One page back.\n\u,U -- Half a page back.\n\f,F -- One page forward.\n\d,D -- Half a page forward.\n<line> -- Jump to line number <line>\n\q,x -- Quit or eXit more.\n\/<regexp> -- Search for the regular expression <regexp>.\n" |
Funktionen | |
| string | prompt (mixed pinfo, string add) |
| int | search (mixed pinfo) |
| varargs int | eval_command (mixed in, mixed pinfo) |
Variablen | |
| inherit std util | pager |
| static private string | cprompt = "" |
| #define MSG_HELP "\Help for more:\n\\n\b,B -- One page back.\n\u,U -- Half a page back.\n\f,F -- One page forward.\n\d,D -- Half a page forward.\n<line> -- Jump to line number <line>\n\q,x -- Quit or eXit more.\n\/<regexp> -- Search for the regular expression <regexp>.\n" |
Definiert in Zeile 37 der Datei more.c.
Wird benutzt von eval_command().
| #define MSG_ILLEGAL " ILLEGAL LINE NUMBER" |
Definiert in Zeile 36 der Datei more.c.
Wird benutzt von eval_command().
| #define MSG_NO_REGX " NO PREV REGULAR EXPR" |
Definiert in Zeile 35 der Datei more.c.
Wird benutzt von eval_command().
| #define MSG_NOT_FOUND " NOTHING FOUND" |
Definiert in Zeile 34 der Datei more.c.
Wird benutzt von eval_command().
| varargs int eval_command | ( | mixed | in, | |
| mixed | pinfo | |||
| ) |
Definiert in Zeile 93 der Datei more.c.
Benutzt cprompt, CURL, MAXL, MSG_HELP, MSG_ILLEGAL, MSG_NO_REGX, MSG_NOT_FOUND, PAGE, REGX und search().
Wird benutzt von eval_command() und More().
00094 { 00095 cprompt = ""; 00096 if(stringp(in)) 00097 switch(in) 00098 { 00099 case "?": 00100 write(MSG_HELP+"\n"); 00101 return 0; 00102 case "b": 00103 case "B": 00104 pinfo[CURL] -= pinfo[PAGE]; 00105 break; 00106 case "u": 00107 case "U": 00108 pinfo[CURL] -= pinfo[PAGE] / 2; 00109 break; 00110 case "f": 00111 case "F": 00112 pinfo[CURL] += pinfo[PAGE]; 00113 break; 00114 case "d": 00115 case "D": 00116 pinfo[CURL] += pinfo[PAGE] / 2; 00117 break; 00118 default: 00119 { 00120 int l; 00121 if(l = to_int(in)) 00122 { 00123 if(l > pinfo[MAXL] || l < 1) return (cprompt = MSG_ILLEGAL, 0); 00124 pinfo[CURL] = l; 00125 break; 00126 } 00127 if(strlen(in) && in[0] == '/') 00128 { 00129 if(strlen(in) == 1) 00130 { 00131 if(!pinfo[REGX]) return (cprompt = MSG_NO_REGX, 0); 00132 } 00133 else pinfo[REGX] = in[1..]; 00134 if(l = search(pinfo)) pinfo[CURL] = l; 00135 else return (cprompt = MSG_NOT_FOUND, 0); 00136 } 00137 else return ::eval_command(in, pinfo); 00138 break; 00139 } 00140 } 00141 else return ::eval_command(in, pinfo); 00142 return ::eval_command(-1, pinfo); 00143 }


| string prompt | ( | mixed | pinfo, | |
| string | add | |||
| ) |
Definiert in Zeile 51 der Datei more.c.
Benutzt cprompt, CURL, E_ABS, FLAG, MAXL, PAGE und prompt().
00052 { 00053 int line,max; max = 1; 00054 if(pointerp(pinfo)) 00055 { 00056 if(pinfo[CURL] + pinfo[PAGE] >= pinfo[MAXL]) line = pinfo[MAXL]; 00057 else line = pinfo[CURL] + pinfo[PAGE]; 00058 max = pinfo[MAXL]; 00059 } 00060 if (pinfo[FLAG] & E_ABS) 00061 return sprintf("%s (%d/%d)%s %s", 00062 ::prompt(pinfo, ""), 00063 line-1, pinfo[MAXL], 00064 cprompt, stringp(add)?add:""); 00065 else 00066 return sprintf("%s(%d%%)%s %s", 00067 ::prompt(pinfo, ""), 00068 line*100/max, 00069 cprompt, stringp(add)?add:""); 00070 }

| int search | ( | mixed | pinfo | ) |
Definiert in Zeile 72 der Datei more.c.
Benutzt cprompt, CURL, fread(), lines, MSG_WRAPPED, old_explode(), PAGE und REGX.
00073 { 00074 int l, lines; 00075 mixed tmp; 00076 l = pinfo[CURL]; 00077 while((tmp = fread(pinfo, l, pinfo[PAGE])) && 00078 !sizeof(regexp(old_explode(tmp, "\n"), pinfo[REGX]))) 00079 l += pinfo[PAGE]; 00080 if(!tmp) 00081 { 00082 cprompt += MSG_WRAPPED; 00083 l = 1; 00084 while(l < pinfo[CURL] && 00085 (tmp = fread(pinfo, l, pinfo[PAGE])) && 00086 !sizeof(regexp(old_explode(tmp, "\n"), pinfo[REGX]))) 00087 l += pinfo[PAGE]; 00088 if(l >= pinfo[CURL]) return 0; 00089 } 00090 return l; 00091 }

private string cprompt = "" [static] |
Definiert in Zeile 49 der Datei more.c.
Wird benutzt von eval_command(), prompt() und search().
1.6.3