Explicitly set stdio buffer for /dev/isdninfo to 2048, as it has

happened that stdio used 1024, and /dev/isdninfo doesn't support
partial reads (0 bytes are returned). Usually not a problem, but
with more than one channel connected, a line of > 1024 bytes is
returned.
This commit is contained in:
Paul Slootman 2002-07-15 11:58:43 +00:00
parent bb74d7be57
commit 618b43206b
1 changed files with 7 additions and 6 deletions

View File

@ -169,6 +169,7 @@ void scan_int(char * buffer, int (*field)[], int max) {
int main(int argc, char **argv) {
FILE * isdninfo;
static char fbuf[2048];
char buf[IM_BUFSIZE];
char * idmap[ISDN_MAX_CHANNELS];
@ -180,13 +181,13 @@ int main(int argc, char **argv) {
int i, lines;
isdninfo = fopen("/dev/isdn/isdninfo", "r");
if (!isdninfo)
isdninfo = fopen("/dev/isdninfo", "r");
if (!isdninfo) {
perror("imontty: can't open /dev/isdninfo");
exit(1);
if (!(isdninfo = fopen("/dev/isdninfo", "r"))) {
if (!(isdninfo = fopen("/dev/isdn/isdninfo", "r"))) {
perror("imontty: can't open /dev/isdn/isdninfo nor /dev/isdninfo");
return 1;
}
}
setvbuf(isdninfo, fbuf, _IOFBF, sizeof(fbuf)); /* up to 2048 needed */
if (argc == 2)
readphonebook(argv[1]);