forked from oe5hpm/openBCM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cmd.cpp
65 lines (53 loc) · 2 KB
/
cmd.cpp
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
/***************************************************************
BayCom(R) Packet-Radio fuer IBM PC
OpenBCM-Mailbox
-----------------
Kommandoprozessor
-----------------
Copyright (C) Florian Radlherr
Taubenbergstr. 32
83627 Warngau
Alle Rechte vorbehalten / All Rights Reserved
***************************************************************/
#include "baycom.h"
/*---------------------------------------------------------------------------*/
int readcmd (char *beftab[], char **buffer, unsigned int minimum)
//*************************************************************************
//
// vergleicht die Kommandos in einer Befehlstabelle mit einem
// Stringanfang. Wird das Kommando gefunden, so wird der String-
// zeiger entsprechend nachgefuehrt.
//
// beftab[] = Pointer-Array, dessen Eintraege auf die Befehls-Strings
// zeigen. Das Array muss an letzter Stelle stets mit
// dem NULL-Pointer besetzt sein.
// *buffer Zeiger auf einen String, in dem am Anfang der Befehl
// steht.
// minimum Gibt die Anzahl der mindestens ~uebereinstimmenden
// Zeichen an, damit ein Befehl als solcher akzeptiert
// wird.
// 0 bedeutet, dass der Befehl stets mit String-Ende (\0)
// oder mit einem Blank abgeschlossen sein muss (fuer Node)
//
//*************************************************************************
{
unsigned int i = 0, j = 0, cmd = 0, maxcmd = 0;
while (beftab[i])
{
j = 0;
while (beftab[i][j] && (toupper (buffer[0][j]) == beftab[i][j])) j++;
i++;
if (j > maxcmd && j >= minimum)
{ // if(minimum || (buffer[0][j]==0) || (buffer[0][j]==' '))
if (! buffer[0][j] || buffer[0][j] == ' ' || buffer[0][j] == '=')
{
maxcmd = j;
cmd = i;
}
}
}
*buffer += maxcmd;
*buffer += blkill(*buffer);
return cmd;
}
/*---------------------------------------------------------------------------*/