]> arthur.barton.de Git - netatalk.git/blob - libatalk/dsi/dsi_init.c
implemented config.h
[netatalk.git] / libatalk / dsi / dsi_init.c
1 /*
2  * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
3  * All rights reserved. See COPYRIGHT.
4  */
5
6 #ifdef HAVE_CONFIG_H
7 #include "config.h"
8 #endif
9
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <signal.h>
13 #include <atalk/dsi.h>
14 #include "dsi_private.h"
15
16 DSI *dsi_init(const dsi_proto protocol, const char *program, 
17               const char *hostname, const char *address,
18               const int port, const int proxy, const u_int32_t quantum)
19 {
20     DSI         *dsi;
21
22     if ((dsi = (DSI *) calloc(1, sizeof(DSI))) == NULL) {
23       return( NULL );
24     }
25     dsi->attn_quantum = DSI_DEFQUANT; /* default quantum size */
26     dsi->server_quantum = quantum; /* default server quantum */
27     dsi->program = program;
28
29     /* signals to block. we actually disable timers for "known" 
30      * large transfers (i.e., dsi_read/write). */
31     sigemptyset(&dsi->sigblockset);
32     sigaddset(&dsi->sigblockset, SIGTERM);
33     sigaddset(&dsi->sigblockset, SIGHUP);
34     sigaddset(&dsi->sigblockset, SIGALRM);
35     
36     switch (protocol) {
37       /* currently the only transport protocol that exists for dsi */
38     case DSI_TCPIP: 
39       if (!dsi_tcp_init(dsi, hostname, address, port, proxy)) {
40         free(dsi);
41         dsi = NULL;
42       }
43       break;
44
45     default: /* unknown protocol */
46       free(dsi);
47       dsi = NULL;
48       break;
49     }
50
51     return dsi;
52 }
53
54 void dsi_setstatus(DSI *dsi, u_int8_t *status, const int slen)
55 {
56     dsi->status = status;
57     dsi->statuslen = slen;
58 }