Added all of the MH sources, including RCS files, in
[mmh] / 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 @