1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/* Prompt handling
Copyright (C) 1996 Maurizio Plaza
1996 Jakub Jelinek
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; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "quik.h"
#include "prom.h"
#define CMD_LENG 512
char cbuff[CMD_LENG];
void cmdinit()
{
cbuff[0] = 0;
}
void cmdedit(void (*tabfunc)(void), int c)
{
int x;
for (x = 0; x < CMD_LENG - 1 && cbuff[x] != 0; x++)
;
prom_print(cbuff);
if (c == -1)
c = getchar();
while (c != -1 && c != '\n' && c != '\r') {
if (c == '\t' && tabfunc)
(*tabfunc)();
if (c == '\b' || c == 0x7F) {
if (x > 0) {
--x;
prom_print("\b \b");
}
} else if (c >= ' ' && x < CMD_LENG - 1) {
cbuff[x] = c;
putchar(c);
++x;
}
c = getchar();
}
cbuff[x] = 0;
return;
}
void cmdfill(const char *d)
{
strncpy(cbuff, d, CMD_LENG);
cbuff[CMD_LENG - 1] = 0;
}
|