check that link() doesn't cause statinfo to be corrupted/reverted for
[arla.git] / appl / fs / fs_connect.c
blob6ff0371fe1ba7a499339af4db0f48da56f767749
1 /*
2 * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the Institute nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
34 #include "fs_local.h"
36 RCSID("$Id$");
38 static int
39 connect_usage(void)
41 printf("connect [connected|fetch|disconnected|callback-connected]\n");
42 return 0;
45 int
46 connect_cmd(int argc, char **argv)
48 int ret;
49 int32_t flags;
51 argc--;
52 argv++;
54 if (argc == 0) {
55 ret = fs_connect(arla_CONNMODE_PROBE, &flags);
56 if (ret) {
57 fserr(PROGNAME, ret, NULL);
58 return 0;
61 switch(flags) {
62 case arla_CONNMODE_CONN:
63 printf("Connected mode\n");
64 break;
65 case arla_CONNMODE_FETCH:
66 printf("Fetch only mode\n");
67 break;
68 case arla_CONNMODE_DISCONN:
69 printf("Disconnected mode\n");
70 break;
71 default:
72 printf("Unknown or error\n");
73 break;
75 return 0;
78 if (strncmp("dis", *argv, 3) == 0)
79 ret = fs_connect(arla_CONNMODE_DISCONN, &flags);
80 else if (strncmp("fetch", *argv, 5) == 0)
81 ret = fs_connect(arla_CONNMODE_FETCH, &flags);
82 else if (strncmp("conn", *argv, 4) == 0)
83 ret = fs_connect(arla_CONNMODE_CONN, &flags);
84 else if (strncmp(*argv, "call", 4) == 0)
85 ret = fs_connect(arla_CONNMODE_CONN_WITHCALLBACKS, &flags);
86 else
87 return connect_usage();
89 if (ret)
90 fserr(PROGNAME, ret, NULL);
92 return 0;