]> diplodocus.org Git - nmh/blob - docs/historical/mh-6.8.5/zotnet/mts/RCS/client.c,v
sbr/mts.c: Delete mmdlm2; use same-valued mmdlm1 instead.
[nmh] / docs / historical / mh-6.8.5 / zotnet / mts / RCS / client.c,v
1 head 1.22;
2 access;
3 symbols;
4 locks
5 shettich:1.22; strict;
6 comment @ * @;
7
8
9 1.22
10 date 95.12.06.22.15.26; author jromine; state Exp;
11 branches;
12 next 1.21;
13
14 1.21
15 date 93.08.25.17.32.58; author jromine; state Exp;
16 branches;
17 next 1.20;
18
19 1.20
20 date 93.08.20.15.55.35; author jromine; state Exp;
21 branches;
22 next 1.19;
23
24 1.19
25 date 92.12.15.00.20.22; author jromine; state Exp;
26 branches;
27 next 1.18;
28
29 1.18
30 date 92.12.03.16.50.12; author jromine; state Exp;
31 branches;
32 next 1.17;
33
34 1.17
35 date 92.12.03.16.28.56; author jromine; state Exp;
36 branches;
37 next 1.16;
38
39 1.16
40 date 92.11.12.19.32.01; author jromine; state Exp;
41 branches;
42 next 1.15;
43
44 1.15
45 date 92.11.12.19.29.42; author jromine; state Exp;
46 branches;
47 next 1.14;
48
49 1.14
50 date 92.11.12.01.04.54; author jromine; state Exp;
51 branches;
52 next 1.13;
53
54 1.13
55 date 92.11.11.20.56.03; author jromine; state Exp;
56 branches;
57 next 1.12;
58
59 1.12
60 date 92.11.06.03.21.30; author jromine; state Exp;
61 branches;
62 next 1.11;
63
64 1.11
65 date 92.05.19.21.22.20; author jromine; state Exp;
66 branches;
67 next 1.10;
68
69 1.10
70 date 92.02.11.17.39.48; author jromine; state Exp;
71 branches;
72 next 1.9;
73
74 1.9
75 date 92.02.11.16.36.00; author jromine; state Exp;
76 branches;
77 next 1.8;
78
79 1.8
80 date 92.02.09.23.07.47; author jromine; state Exp;
81 branches;
82 next 1.7;
83
84 1.7
85 date 92.01.31.22.33.33; author jromine; state Exp;
86 branches;
87 next 1.6;
88
89 1.6
90 date 90.04.05.15.04.36; author sources; state Exp;
91 branches;
92 next 1.5;
93
94 1.5
95 date 90.02.06.13.41.10; author sources; state Exp;
96 branches;
97 next 1.4;
98
99 1.4
100 date 90.02.05.14.58.39; author sources; state Exp;
101 branches;
102 next 1.3;
103
104 1.3
105 date 90.02.05.14.03.32; author sources; state Exp;
106 branches;
107 next 1.2;
108
109 1.2
110 date 90.02.01.14.34.57; author sources; state Exp;
111 branches;
112 next 1.1;
113
114 1.1
115 date 90.02.01.14.33.28; author sources; state Exp;
116 branches;
117 next ;
118
119
120 desc
121 @@
122
123
124 1.22
125 log
126 @64bit fix
127 @
128 text
129 @/* client.c - connect to a server */
130 #ifndef lint
131 static char ident[] = "@@(#)$Id: client.c,v 1.21 1993/08/25 17:32:58 jromine Exp jromine $";
132 #endif /* lint */
133
134 #if defined(SYS5) && defined(AUX)
135 #define u_short ushort
136 #define u_long ulong
137 #endif
138
139
140 #if defined(BSD42) || defined(SOCKETS)
141 #include "../h/strings.h"
142 #include <stdio.h>
143 #include "mts.h"
144 #include <errno.h>
145 #include <sys/types.h>
146 #include <sys/socket.h>
147 #include <netinet/in.h>
148 #include <netdb.h>
149 #ifndef hpux
150 #include <arpa/inet.h>
151 #endif
152
153 #ifdef HESIOD
154 #include <hesiod.h>
155 #endif
156
157 #ifdef KPOP
158 #include <krb.h>
159 #include <ctype.h>
160
161 static CREDENTIALS cred;
162 static MSG_DAT msg_data;
163 static KTEXT ticket = (KTEXT)NULL;
164 static Key_schedule schedule;
165 #endif /* KPOP */
166
167 #define NOTOK (-1)
168 #define OK 0
169 #define DONE 1
170
171 #define TRUE 1
172 #define FALSE 0
173
174 #define OOPS1 (-2)
175 #define OOPS2 (-3)
176
177 #define MAXARGS 1000
178 #define MAXNETS 5
179 #define MAXHOSTS 25
180
181 /* \f */
182
183 extern int errno;
184 #ifndef BSD44
185 extern int sys_nerr;
186 extern char *sys_errlist[];
187 #endif
188
189
190 struct addrent {
191 int a_addrtype; /* assumes AF_INET for inet_netof () */
192
193 union {
194 int un_net;
195 char un_addr[14];
196 } un;
197 #define a_net un.un_net
198 #define a_addr un.un_addr
199 };
200
201 static struct addrent *ne, *nz;
202 static struct addrent nets[MAXNETS];
203
204 static struct addrent *he, *hz;
205 static struct addrent hosts[MAXHOSTS];
206
207 #ifdef KPOP
208 char krb_realm[REALM_SZ];
209 char *PrincipalHostname();
210 static char *kservice; /* "pop" if using kpop */
211 #endif /* KPOP */
212
213 #ifdef __STDC__
214 static int rcaux (struct servent *, struct hostent *, int, char *);
215 static int getport (int, int, char *);
216 static int inet (struct hostent *, int);
217 #else
218 static int rcaux (), getport (), inet ();
219 #endif
220
221
222 #if defined(BIND) && !defined(h_addr)
223 #define h_addr h_addr_list[0]
224 #endif
225
226 #define inaddr_copy(hp,sin) \
227 bcopy ((hp) -> h_addr, (char *) &((sin) -> sin_addr), (hp) -> h_length)
228
229
230 struct hostent *gethostbystring ();
231
232
233 static int brkany ();
234 static char *getcpy (), **copyip (), **brkstring ();
235
236 /* \f */
237
238 int client (args, protocol, service, rproto, response)
239 char *args,
240 *protocol,
241 *service, /* "pop" or "pop/kpop" */
242 *response;
243 int rproto;
244 {
245 int sd;
246 register char **ap;
247 char *arguments[MAXARGS];
248 register struct hostent *hp;
249 #ifndef BIND
250 register struct netent *np;
251 #endif
252 register struct servent *sp;
253 #ifdef KPOP
254 char *cp;
255
256 if (cp = index (kservice = service, '/')) { /* "pop/kpop" */
257 *cp++ = '\0'; /* kservice = "pop" */
258 service = cp; /* service = "kpop" */
259 }
260 else
261 kservice = NULL; /* not using KERBEROS */
262 #endif /* KPOP */
263
264
265 if ((sp = getservbyname (service, protocol)) == NULL) {
266 #ifdef HESIOD
267 if ((sp = hes_getservbyname (service, protocol)) == NULL) {
268 (void) sprintf (response, "%s/%s: unknown service",
269 protocol, service);
270 return NOTOK;
271 }
272 #else
273 (void) sprintf (response, "%s/%s: unknown service", protocol, service);
274 return NOTOK;
275 #endif
276 }
277
278 ap = arguments;
279 if (args != NULL && *args != 0)
280 ap = copyip (brkstring (getcpy (args), " ", "\n"), ap);
281 else
282 if (servers != NULL && *servers != 0)
283 ap = copyip (brkstring (getcpy (servers), " ", "\n"), ap);
284 if (ap == arguments) {
285 *ap++ = getcpy ("localhost");
286 *ap = NULL;
287 }
288
289 nz = (ne = nets) + sizeof nets / sizeof nets[0];
290 hz = (he = hosts) + sizeof hosts / sizeof hosts[0];
291
292 for (ap = arguments; *ap; ap++) {
293 if (**ap == '\01') {
294 #ifndef BIND
295 if (np = getnetbyname (*ap + 1)) {
296 sethostent (1);
297 while (hp = gethostent ())
298 if (np -> n_addrtype == hp -> h_addrtype
299 && inet (hp, np -> n_net)) {
300 switch (sd = rcaux (sp, hp, rproto, response)) {
301 case NOTOK:
302 continue;
303 case OOPS1:
304 break;
305 case OOPS2:
306 return NOTOK;
307
308 default:
309 return sd;
310 }
311 break;
312 }
313 }
314 #endif
315 continue;
316 }
317
318 if (hp = gethostbystring (*ap)) {
319 switch (sd = rcaux (sp, hp, rproto, response)) {
320 case NOTOK:
321 case OOPS1:
322 break;
323 case OOPS2:
324 return NOTOK;
325
326 default:
327 return sd;
328 }
329 continue;
330 }
331 }
332
333 (void) strcpy (response, "no servers available");
334 return NOTOK;
335 }
336
337 /* \f */
338
339 static int rcaux (sp, hp, rproto, response)
340 register struct servent *sp;
341 register struct hostent *hp;
342 int rproto;
343 register char *response;
344 {
345 int sd;
346 struct in_addr in;
347 register struct addrent *ap;
348 struct sockaddr_in in_socket;
349 register struct sockaddr_in *isock = &in_socket;
350 #ifdef KPOP
351 int rem;
352 #endif /* KPOP */
353
354 for (ap = nets; ap < ne; ap++)
355 if (ap -> a_addrtype == hp -> h_addrtype && inet (hp, ap -> a_net))
356 return NOTOK;
357
358 for (ap = hosts; ap < he; ap++)
359 if (ap -> a_addrtype == hp -> h_addrtype
360 && bcmp (ap -> a_addr, hp -> h_addr, hp -> h_length) == 0)
361 return NOTOK;
362
363 if ((sd = getport (rproto, hp -> h_addrtype, response)) == NOTOK)
364 return OOPS2;
365
366 bzero ((char *) isock, sizeof *isock);
367 isock -> sin_family = hp -> h_addrtype;
368 inaddr_copy (hp, isock);
369 isock -> sin_port = sp -> s_port;
370
371 if (connect (sd, (struct sockaddr *) isock, sizeof *isock) == NOTOK)
372 switch (errno) {
373 case ENETDOWN:
374 case ENETUNREACH:
375 (void) close (sd);
376 if (ne < nz) {
377 ne -> a_addrtype = hp -> h_addrtype;
378 bcopy (hp -> h_addr, (char *) &in, sizeof in);
379 ne -> a_net = inet_netof (in);
380 ne++;
381 }
382 return OOPS1;
383
384 case ETIMEDOUT:
385 case ECONNREFUSED:
386 default:
387 (void) close (sd);
388 if (he < hz) {
389 he -> a_addrtype = hp -> h_addrtype;
390 bcopy (hp -> h_addr, he -> a_addr, hp -> h_length);
391 he++;
392 }
393 return NOTOK;
394 }
395
396 #ifdef KPOP
397 if (kservice) { /* "pop" */
398 ticket = (KTEXT)malloc( sizeof(KTEXT_ST) );
399 rem = krb_sendauth(0L, sd, ticket, kservice, hp->h_name,
400 (char *) krb_realmofhost(hp->h_name),
401 (unsigned long)0, &msg_data, &cred, schedule,
402 (struct sockaddr_in *)NULL,
403 (struct sockaddr_in *)NULL,
404 "KPOPV0.1");
405 if (rem != KSUCCESS) {
406 close(sd);
407 (void) strcpy(response, "Post office refused connection: ");
408 (void) strcat(response, krb_err_txt[rem]);
409 return OOPS2;
410 }
411 }
412 #endif /* KPOP */
413
414 return sd;
415 }
416
417 /* \f */
418
419 static int getport (rproto, addrtype, response)
420 int rproto,
421 addrtype;
422 register char *response;
423 {
424 int sd,
425 port;
426 struct sockaddr_in in_socket,
427 *isock = &in_socket;
428
429 if (rproto && addrtype != AF_INET) {
430 (void) sprintf (response, "reserved ports not supported for af=%d",
431 addrtype);
432 errno = ENOPROTOOPT;
433 return NOTOK;
434 }
435
436 if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == NOTOK) {
437 (void) sprintf (response, "unable to create socket: %s",
438 errno > 0 && errno < sys_nerr ? sys_errlist[errno]
439 : "unknown error");
440 return NOTOK;
441 }
442 #ifdef KPOP
443 if (kservice) /* "pop" */
444 return(sd);
445 #endif /* KPOP */
446 if (!rproto)
447 return sd;
448
449 bzero ((char *) isock, sizeof *isock);
450 isock -> sin_family = addrtype;
451 for (port = IPPORT_RESERVED - 1;;) {
452 isock -> sin_port = htons ((u_short) port);
453 if (bind (sd, (struct sockaddr *) isock, sizeof *isock) != NOTOK)
454 return sd;
455
456 switch (errno) {
457 case EADDRINUSE:
458 case EADDRNOTAVAIL:
459 if (--port <= IPPORT_RESERVED / 2) {
460 (void) strcpy (response, "ports available");
461 return NOTOK;
462 }
463 break;
464
465 default:
466 (void) sprintf (response, "unable to bind socket: %s",
467 errno > 0 && errno < sys_nerr ? sys_errlist[errno]
468 : "unknown error");
469 return NOTOK;
470 }
471 }
472 }
473
474 /* \f */
475
476 static int inet (hp, net)
477 register struct hostent *hp;
478 int net;
479 {
480 struct in_addr in;
481
482 bcopy (hp -> h_addr, (char *) &in, sizeof in);
483 return (inet_netof (in) == net);
484 }
485
486 /* \f */
487
488 /* taken from ISODE's compat/internet.c */
489
490 #ifndef OSF1
491 #ifndef DG
492 u_long inet_addr ();
493 #else
494 struct in_addr inet_addr ();
495 #endif
496 #endif
497
498 static char *empty = NULL;
499 #ifdef h_addr
500 static char *addrs[2] = { NULL };
501 #endif
502
503 struct hostent *gethostbystring (s)
504 char *s;
505 {
506 register struct hostent *h;
507 #ifndef DG
508 static u_long iaddr;
509 #else
510 static struct in_addr iaddr;
511 #endif
512 static struct hostent hs;
513
514 iaddr = inet_addr (s);
515 #ifndef DG
516 if ((int)iaddr == NOTOK && strcmp (s, "255.255.255.255"))
517 #else
518 if (iaddr.s_addr == NOTOK && strcmp (s, "255.255.255.255"))
519 #endif
520 return gethostbyname (s);
521
522 h = &hs;
523 h -> h_name = s;
524 h -> h_aliases = &empty;
525 h -> h_addrtype = AF_INET;
526 h -> h_length = sizeof (iaddr);
527 #ifdef h_addr
528 h -> h_addr_list = addrs;
529 bzero ((char *) addrs, sizeof addrs);
530 #endif
531 h -> h_addr = (char *) &iaddr;
532
533 return h;
534 }
535
536 /* \f */
537
538 /* static copies of three MH subroutines... (sigh) */
539
540 static char *broken[MAXARGS + 1];
541
542
543 static char **brkstring (strg, brksep, brkterm)
544 register char *strg;
545 register char *brksep,
546 *brkterm;
547 {
548 register int bi;
549 register char c,
550 *sp;
551
552 sp = strg;
553
554 for (bi = 0; bi < MAXARGS; bi++) {
555 while (brkany (c = *sp, brksep))
556 *sp++ = 0;
557 if (!c || brkany (c, brkterm)) {
558 *sp = 0;
559 broken[bi] = 0;
560 return broken;
561 }
562
563 broken[bi] = sp;
564 while ((c = *++sp) && !brkany (c, brksep) && !brkany (c, brkterm))
565 continue;
566 }
567 broken[MAXARGS] = 0;
568
569 return broken;
570 }
571
572
573 static brkany (chr, strg)
574 register char chr,
575 *strg;
576 {
577 register char *sp;
578
579 if (strg)
580 for (sp = strg; *sp; sp++)
581 if (chr == *sp)
582 return 1;
583 return 0;
584 }
585
586
587 static char **copyip (p, q)
588 register char **p,
589 **q;
590 {
591 while (*p)
592 *q++ = *p++;
593 *q = 0;
594
595 return q;
596 }
597
598
599 static char *getcpy (str)
600 register char *str;
601 {
602 register char *cp;
603
604 if ((cp = malloc ((unsigned) (strlen (str) + 1))) == NULL)
605 return NULL;
606
607 (void) strcpy (cp, str);
608 return cp;
609 }
610 #endif /* BSD42 or SOCKETS */
611 @
612
613
614 1.21
615 log
616 @off_t fixes for BSD44
617 @
618 text
619 @d3 1
620 a3 1
621 static char ident[] = "@@(#)$Id: client.c,v 1.20 1993/08/20 15:55:35 jromine Exp jromine $";
622 d362 1
623 d368 1
624 a369 1
625
626 d388 1
627 a388 1
628 if (iaddr == NOTOK && strcmp (s, "255.255.255.255"))
629 @
630
631
632 1.20
633 log
634 @added gethostbystring()
635 @
636 text
637 @d3 1
638 a3 1
639 static char ident[] = "@@(#)$Id: client.c,v 1.19 1992/12/15 00:20:22 jromine Exp jromine $";
640 d56 1
641 d59 1
642 @
643
644
645 1.19
646 log
647 @endif sugar
648 @
649 text
650 @d3 1
651 a3 1
652 static char ident[] = "@@(#)$Id: client.c,v 1.18 1992/12/03 16:50:12 jromine Exp jromine $";
653 d91 12
654 d188 1
655 a188 1
656 if (hp = gethostbyname (*ap)) {
657 d238 1
658 a239 1
659 bcopy (hp -> h_addr, (char *) &isock -> sin_addr, hp -> h_length);
660 d354 49
661 @
662
663
664 1.18
665 log
666 @put u_short ifdef undef #if AUX
667 @
668 text
669 @d3 2
670 a4 2
671 static char ident[] = "@@(#)$Id: client.c,v 1.17 1992/12/03 16:28:56 jromine Exp jromine $";
672 #endif lint
673 d418 1
674 a418 1
675 #endif BSD42 or SOCKETS
676 @
677
678
679 1.17
680 log
681 @u_short AUX changes from Jim Guyton
682 @
683 text
684 @d3 1
685 a3 1
686 static char ident[] = "@@(#)$Id: client.c,v 1.16 1992/11/12 19:32:01 jromine Exp jromine $";
687 d6 1
688 a6 1
689 #ifdef SYS5
690 @
691
692
693 1.16
694 log
695 @try to fixup u_short without U_SHORT option
696 @
697 text
698 @d3 1
699 a3 1
700 static char ident[] = "@@(#)$Id: client.c,v 1.15 1992/11/12 19:29:42 jromine Exp jromine $";
701 d6 6
702 a22 5
703 #endif
704
705 #ifdef SYS5
706 #define u_short ushort
707 #define u_long ulong
708 @
709
710
711 1.15
712 log
713 @add U_SHORT
714 @
715 text
716 @d3 1
717 a3 1
718 static char ident[] = "@@(#)$Id: client.c,v 1.14 1992/11/12 01:04:54 jromine Exp jromine $";
719 a5 5
720 #if defined(SYS5) && !defined(U_SHORT)
721 #define u_short ushort
722 #define u_long ulong
723 #endif
724
725 d17 5
726 @
727
728
729 1.14
730 log
731 @SVR4 (u_short)
732 @
733 text
734 @d3 1
735 a3 1
736 static char ident[] = "@@(#)$Id: client.c,v 1.13 1992/11/11 20:56:03 jromine Exp jromine $";
737 d6 1
738 a6 1
739 #if defined(SYS5) && !defined(_AIX) && !defined(SVR4)
740 @
741
742
743 1.13
744 log
745 @don't define u_short if aix
746 @
747 text
748 @d3 1
749 a3 1
750 static char ident[] = "@@(#)$Id: client.c,v 1.12 1992/11/06 03:21:30 jromine Exp jromine $";
751 d6 1
752 a6 1
753 #if defined(SYS5) && !defined(_AIX)
754 @
755
756
757 1.12
758 log
759 @fixup u_short define for AUX
760 @
761 text
762 @d3 1
763 a3 1
764 static char ident[] = "@@(#)$Id: client.c,v 1.11 1992/05/19 21:22:20 jromine Exp jromine $";
765 d6 1
766 a6 1
767 #ifdef SYS5
768 @
769
770
771 1.11
772 log
773 @AIX, HESIOD
774 @
775 text
776 @d3 1
777 a3 1
778 static char ident[] = "@@(#)$Id: client.c,v 1.10 1992/02/11 17:39:48 jromine Exp jromine $";
779 d6 5
780 a25 3
781 #endif
782 #ifdef SYS5
783 #define u_short ushort
784 @
785
786
787 1.10
788 log
789 @make KPOP changes clean
790 @
791 text
792 @d3 1
793 a3 1
794 static char ident[] = "@@(#)$Id: client.c,v 1.9 1992/02/11 16:36:00 jromine Exp $";
795 d19 3
796 d121 7
797 d130 1
798 a343 4
799
800 #ifndef __STDC__
801 char *malloc ();
802 #endif
803 @
804
805
806 1.9
807 log
808 @merge KPOP changes
809 @
810 text
811 @d3 1
812 a3 1
813 static char ident[] = "@@(#)$Id: client.c,v 1.8 1992/02/09 23:07:47 jromine Exp jromine $";
814 a8 3
815 #ifdef KPOP
816 #include "../zotnet/mts/mts.h"
817 #else
818 a9 1
819 #endif
820 d71 1
821 a71 5
822 #ifndef KPOP
823 #define realservice service
824 #else /* KPOP */
825 char realservice[] = "kpop";
826
827 d74 2
828 a76 4
829 /* redefine routine names for kerberos to make the loader happy */
830 #define client kclient
831 #define rcaux krcaux
832
833 d78 1
834 a78 1
835 static int rcaux (struct servent *, struct hostent *, int, char *, char *);
836 d83 2
837 a84 1
838 #endif /* STDC */
839 a85 3
840
841 #endif /* KPOP */
842
843 a86 2
844 static brkany();
845 static int rcaux(), getport(), inet();
846 d93 1
847 a93 1
848 *service,
849 d105 2
850 d108 11
851 a118 2
852 if ((sp = getservbyname (realservice, protocol)) == NULL) {
853 (void) sprintf (response, "%s/%s: unknown service", realservice, protocol);
854 d144 1
855 a144 1
856 switch (sd = rcaux (sp, hp, rproto, response, service)) {
857 d163 1
858 a163 1
859 switch (sd = rcaux (sp, hp, rproto, response, service)) {
860 d183 1
861 a183 1
862 static int rcaux (sp, hp, rproto, response, service)
863 a187 1
864 char *service; /* what they really want to talk to */
865 d196 1
866 a196 1
867 #endif
868 d241 14
869 a254 12
870 ticket = (KTEXT)malloc( sizeof(KTEXT_ST) );
871 rem = krb_sendauth(0L, sd, ticket, service, hp->h_name,
872 (char *) krb_realmofhost(hp->h_name),
873 (unsigned long)0, &msg_data, &cred, schedule,
874 (struct sockaddr_in *)NULL,
875 (struct sockaddr_in *)NULL,
876 "KPOPV0.1");
877 if (rem != KSUCCESS) {
878 close(sd);
879 (void) strcpy(response, "Post office refused connection: ");
880 (void) strcat(response, krb_err_txt[rem]);
881 return OOPS2;
882 d256 1
883 a256 1
884 #endif
885 d287 3
886 a289 2
887 return(sd);
888 #else
889 a315 1
890 #endif
891 @
892
893
894 1.8
895 log
896 @ANSI C
897 @
898 text
899 @d3 1
900 a3 1
901 static char ident[] = "@@(#)$Id: client.c,v 1.7 1992/01/31 22:33:33 jromine Exp jromine $";
902 d9 3
903 d13 1
904 d19 1
905 a19 1
906 # ifndef hpux /* Doesn't exist on HP-UX (SYS V?) */
907 d21 1
908 a21 1
909 # endif hpux
910 a22 1
911
912 d25 1
913 a25 1
914 #endif SYS5
915 d27 10
916 d75 4
917 d80 18
918 d117 1
919 a117 1
920 #endif BIND
921 d120 2
922 a121 2
923 if ((sp = getservbyname (service, protocol)) == NULL) {
924 (void) sprintf (response, "%s/%s: unknown service", protocol, service);
925 d147 1
926 a147 1
927 switch (sd = rcaux (sp, hp, rproto, response)) {
928 d166 1
929 a166 1
930 switch (sd = rcaux (sp, hp, rproto, response)) {
931 d186 1
932 a186 1
933 static int rcaux (sp, hp, rproto, response)
934 d191 1
935 d198 3
936 d244 16
937 d288 3
938 d317 1
939 @
940
941
942 1.7
943 log
944 @kerberos
945 @
946 text
947 @d3 1
948 a3 1
949 static char ident[] = "@@(#)$Id: client.c,v 1.6 1990/04/05 15:04:36 sources Exp jromine $";
950 d277 1
951 d279 1
952 a279 1
953
954 @
955
956
957 1.6
958 log
959 @add ID
960 @
961 text
962 @d3 1
963 a3 1
964 static char ident[] = "@@(#)$Id:$";
965 d91 1
966 a91 1
967 if (args != NULL && *args != NULL)
968 d94 1
969 a94 1
970 if (servers != NULL && *servers != NULL)
971 d126 1
972 a126 1
973 #endif not BIND
974 @
975
976
977 1.5
978 log
979 @ANSI Compilance
980 @
981 text
982 @d2 3
983 @
984
985
986 1.4
987 log
988 @SOCKETS
989 @
990 text
991 @d60 3
992 a62 1
993 char *getcpy (), **brkstring (), **copyip ();
994 @
995
996
997 1.3
998 log
999 @SYS5 fix
1000 @
1001 text
1002 @d3 1
1003 a3 1
1004 #if defined (BSD42) || (defined (hpux) && !defined(hp9000s500))
1005 d345 1
1006 a345 1
1007 #endif BSD42 || hpux
1008 @
1009
1010
1011 1.2
1012 log
1013 @hpux changes
1014 @
1015 text
1016 @d17 4
1017 @
1018
1019
1020 1.1
1021 log
1022 @Initial revision
1023 @
1024 text
1025 @d3 1
1026 a3 1
1027 #ifdef BSD42
1028 d12 1
1029 d14 1
1030 d341 1
1031 a341 1
1032 #endif BSD42
1033 @