summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c')
-rw-r--r--contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c232
1 files changed, 0 insertions, 232 deletions
diff --git a/contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c b/contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c
deleted file mode 100644
index 0df1e10..0000000
--- a/contrib/syslinux/syslinux-4.03/com32/cmenu/libmenu/help.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/* -*- c -*- ------------------------------------------------------------- *
- *
- * Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, Inc., 53 Temple Place Ste 330,
- * Boston MA 02111-1307, USA; either version 2 of the License, or
- * (at your option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-#include "help.h"
-#include <stdio.h>
-#include "string.h"
-#include "com32io.h"
-#include <syslinux/loadfile.h> // to read entire file into memory
-
-int nc, nr; // Number of columns/rows of the screen
-char helpbasedir[HELPDIRLEN]; // name of help directory limited to HELPDIRLEN
-
-// Find the occurence of the count'th \n in buffer (or NULL) if not found
-static char *findline(char *buffer, int count)
-{
- int ctr;
- char *p = buffer - 1;
-
- if (count < 1)
- return buffer;
- for (ctr = 0; ctr < count; ctr++) {
- p = strchr(p + 1, '\n');
- if (p == NULL)
- return NULL;
- }
- return p;
-}
-
-// return the number of lines in buffer
-static int countlines(char *buffer)
-{
- int ans;
- const char *p;
-
- p = buffer - 1;
- ans = 1;
- while (p) {
- p = strchr(p + 1, '\n');
- ans++;
- }
- return ans;
-}
-
-// Print numlines of text starting from buf
-static void printtext(char *buf, int from)
-{
- char *f, *t;
- int right, nlines, i;
-
- // clear window to print
- right = nc - HELP_RIGHT_MARGIN;
- nlines = nr - HELP_BODY_ROW - HELP_BOTTOM_MARGIN - 1;
-
- f = findline(buf, from);
- if (!f)
- return; // nothing to print
- if (*f == '\n')
- f++; // start of from+1st line
- t = f;
- while (i < nlines) {
- gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
- clear_end_of_line();
- putchar(SO);
- gotoxy(HELP_BODY_ROW + i, nc - 1);
- putch(LEFT_BORDER, 0x07);
- putchar(SI);
-
- gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
- while (*t != '\n') {
- if (*t == '\0')
- return;
- putchar(*t);
- t++;
- }
- putchar('\n');
- t++;
- i++;
- }
-}
-
-void showhelp(const char *filename)
-{
- char ph;
- char *title, *text;
- union {
- char *buffer;
- void *vbuf;
- } buf; // This is to avoild type-punning issues
-
- char line[512];
- size_t size;
- int scan;
- int rv, numlines, curr_line;
-
- if (getscreensize(1, &nr, &nc)) {
- /* Unknown screen size? */
- nc = 80;
- nr = 24;
- }
- ph = nr - HELP_BODY_ROW;
- cls();
-
- /* Turn autowrap off, to avoid scrolling the menu */
- printf(CSI "?7l");
-
- if (filename == NULL) { // print file contents
- strcpy(line, "Filename not given");
- goto puke;
- }
-
- rv = loadfile(filename, (void **)&buf.vbuf, &size); // load entire file into memory
- if (rv < 0) { // Error reading file or no such file
- sprintf(line, "Error reading file or file not found\n file=%s", filename);
- goto puke;
- }
-
- title = buf.buffer;
- text = findline(title, 1); // end of first line
- *text++ = '\0'; // end the title string and increment text
-
- // Now we have a file just print it.
- numlines = countlines(text);
- curr_line = 0;
- scan = KEY_ESC + 1; // anything except ESCAPE
-
- /* top, left, bottom, right, attr */
- drawbox(0, 0, nr - 1, nc - 1, 0x07);
- while (scan != KEY_ESC) {
- /* Title */
- gotoxy(1, (nc - strlen(title)) / 2);
- fputs(title, stdout);
- drawhorizline(2, HELP_LEFT_MARGIN - 1, nc - HELP_RIGHT_MARGIN, 0x07, 0); // dumb==0
- /* Text */
- printtext(text, curr_line);
- gotoxy(HELP_BODY_ROW - 1, nc - HELP_RIGHT_MARGIN);
- if (curr_line > 0)
- putchar(HELP_MORE_ABOVE);
- else
- putchar(' ');
- gotoxy(nr - HELP_BOTTOM_MARGIN - 1, nc - HELP_RIGHT_MARGIN);
- if (curr_line < numlines - ph)
- putchar(HELP_MORE_BELOW);
- else
- putchar(' ');
-
- scan = get_key(stdout, 0); // wait for user keypress
-
- switch (scan) {
- case KEY_HOME:
- curr_line = 0;
- break;
- case KEY_END:
- curr_line = numlines;
- break;
- case KEY_UP:
- curr_line--;
- break;
- case KEY_DOWN:
- curr_line++;
- break;
- case KEY_PGUP:
- curr_line -= ph;
- break;
- case KEY_PGDN:
- curr_line += ph;
- break;
- default:
- break;
- }
- if (curr_line > numlines - ph)
- curr_line = numlines - ph;
- if (curr_line < 0)
- curr_line = 0;
- }
-out:
- cls();
- return;
-
-puke:
- gotoxy(HELP_BODY_ROW, HELP_LEFT_MARGIN);
- fputs(line, stdout);
- while (1) {
- scan = get_key(stdin, 0);
- if (scan == KEY_ESC)
- break;
- }
- goto out;
-}
-
-void runhelp(const char *filename)
-{
- char fullname[HELPDIRLEN + 16];
-
- cls();
- cursoroff();
- if (helpbasedir[0] != 0) {
- strcpy(fullname, helpbasedir);
- strcat(fullname, "/");
- strcat(fullname, filename);
- showhelp(fullname);
- } else
- showhelp(filename); // Assume filename is absolute
-}
-
-void runhelpsystem(unsigned int helpid)
-{
- char filename[15];
-
- sprintf(filename, "hlp%05d.txt", helpid);
- runhelp(filename);
-}
-
-void init_help(const char *helpdir)
-{
- if (helpdir != NULL)
- strcpy(helpbasedir, helpdir);
- else
- helpbasedir[0] = 0;
-}
-
-void close_help(void)
-{
-}