source: TI05-delivery/trunk/src/bbftp-client-3.2.0/bbftpc/bbftp_utils.c @ 1392

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/trunk/src/bbftp-client-3.2.0/bbftpc/bbftp_utils.c@1392
Revision 1392, 6.8 KB checked in by spascoe, 13 years ago (diff)

More missing #includes exposed when compiling on easterly.

Line 
1/*
2 * bbftpc/bbftp_utils.c
3 * Copyright (C) 1999, 2000, 2001, 2002 IN2P3, CNRS
4 * bbftp@in2p3.fr
5 * http://doc.in2p3.fr/bbftp
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 */ 
21
22/****************************************************************************
23
24 
25 
26 bbftp_utils.c v 2.0.0 2001/03/01   - Creation of the routines
27               v 2.0.1 2001/04/19   - Correct indentation
28               v 2.1.0 2001/05/29   - Add private authentication
29                                    - Add -m option
30                           v 2.2.0  2001/10/03  - Add certificate authentication
31
32*****************************************************************************/
33
34#include <signal.h>
35#include <stdarg.h>
36#include <stdio.h>
37#if HAVE_STRING_H
38# include <string.h>
39#endif
40#include <stdlib.h>
41
42#include <bbftp.h>
43#include <common.h>
44#include <client.h>
45#include <client_proto.h>
46#include <netinet/in.h>
47#include <structures.h>
48#include <config.h>
49#ifdef HAVE_BYTESWAP_H
50#include <byteswap.h>
51#endif
52
53extern  int     incontrolsock ;
54extern  int     outcontrolsock ;
55extern  int     sshchildpid  ;
56extern  char    *curfilename ;
57extern  char    *realfilename ;
58extern  int     *myports ;
59extern  int     *mysockets ;
60extern  char    *readbuffer ;
61extern  char    *compbuffer ;
62extern  int     *mychildren ;
63extern  int     debug ;
64extern  int     requestedstreamnumber ;
65
66my64_t convertlong(my64_t v) {
67    struct bb {
68        int    fb ;
69        int sb ;
70    } ;
71    struct bb *bbpt ;
72    int     tmp ;
73    my64_t    tmp64 ;
74   
75    tmp64 = v ;
76    bbpt = (struct bb *) &tmp64 ;
77    tmp = bbpt->fb ;
78    bbpt->fb = ntohl(bbpt->sb) ;
79    bbpt->sb = ntohl(tmp) ;   
80    return tmp64 ;
81}
82
83#ifndef HAVE_NTOHLL
84my64_t ntohll(my64_t v) {
85#ifdef HAVE_BYTESWAP_H
86    return bswap_64(v);
87#else
88    long lo = v & 0xffffffff;
89    long hi = v >> 32U;
90    lo = ntohl(lo);
91    hi = ntohl(hi);
92    return ((my64_t) lo) << 32U | hi;
93#endif
94}
95#define htonll ntohll
96#endif
97
98#ifndef NDG_PYTHON_EMBED
99void PRINTMESSAGE(FILE *strm , int flag, int errcode, int tok, char *fmt, ...) 
100{
101    va_list ap;
102    time_t  logtime ;
103    char    clogtime[50] ;
104   
105    va_start(ap,fmt);
106   
107    /*
108    ** If timestamp start to print the time
109    */
110    if (tok) {
111        /*
112        ** Get time
113        */
114        if ( time(&logtime) == -1 ) {
115            strcpy(clogtime,"") ;
116        } else {
117            if ( strftime(clogtime,sizeof(clogtime),"%a %b %d %H:%M:%S (%Z)",localtime(&logtime)) == 0 )    {
118                strcpy(clogtime,"") ;
119            }
120        }
121        /*
122        ** And print it
123        */
124        if ( strlen(clogtime) > 0 ) {
125            (void) fprintf(strm,"%s : ",clogtime) ;
126        }
127    }
128    /*
129    ** Check if it is an error
130    */
131    if ( flag == CASE_ERROR || flag == CASE_FATAL_ERROR ) {
132        /*
133        ** It is an error
134        */
135        (void) fprintf(strm,"BBFTP-ERROR-%05d : ",errcode) ;
136    } else if ( flag == CASE_WARNING ) {
137        /*
138        ** It is a warning
139        */
140        (void) fprintf(strm,"BBFTP-WARNING-%05d : ",errcode) ;
141    }
142    /*
143    ** And print the requested string
144    */
145    (void) vfprintf(strm, fmt, ap);
146    fflush(strm) ;
147    if ( flag == CASE_FATAL_ERROR ) {
148        /*
149        ** exit in case of error
150        */
151        exit(errcode) ;
152    }
153    va_end(ap);
154}
155#endif // NDG_PYTHON_EMBED
156
157void Usage() 
158{
159    printf("Usage bbftp -i inputfile | -e \"command line\" \n") ;
160#ifdef CERTIFICATE_AUTH
161    printf("           [-g service name]\n") ;
162    printf("           [-u username]\n") ;
163#else
164    printf("            -u username\n") ;
165#endif
166    printf("           [-b (background)]\n") ;
167#ifdef WITH_GZIP   
168    printf("           [-c (gzip compress)]\n") ;
169#endif   
170    printf("           [-D[min:max] (Domain of Ephemeral Ports) ]\n") ;
171    printf("           [-f errorfile]\n") ;
172#ifndef PRIVATE_AUTH
173    printf("           [-E server command for ssh]\n") ;
174    printf("           [-I ssh identity file]\n") ;
175    printf("           [-L ssh command]\n") ;
176    printf("           [-s (use ssh)]\n") ;
177    printf("           [-S (use ssh in batch mode)]\n") ;
178#else
179    printf("           [-P Private authentication string]\n") ;
180#endif
181/*#endif*/
182    printf("           [-m (special output for statistics)]\n") ;
183    printf("           [-n (simulation mode: no data written)]\n") ;
184    printf("           [-o outputfile]\n") ;
185    printf("           [-p number of // streams]\n") ;
186    printf("           [-q (for QBSS on)]\n") ;
187    printf("           [-r number of tries ]\n") ;
188    printf("           [-R .bbftprc filename]\n") ;
189    printf("           [-t (timestamp)]\n") ;
190    printf("           [-V (verbose)]\n") ;
191    printf("           [-w controlport]\n") ;
192    printf("           [-W (print warning to stderr) ]\n") ;
193    printf("           host\n") ;
194    printf("      or \n") ;
195    printf("      bbftp -v\n") ;
196}
197
198/*
199** Taken from Free Software Foundation
200*/
201void strip_trailing_slashes (char *path)
202{
203  int last;
204
205  last = strlen (path) - 1;
206  while (last > 0 && path[last] == '/')
207    path[last--] = '\0';
208}
209
210void bbftp_close_control() 
211{
212
213    close(incontrolsock) ;
214    if ( incontrolsock != outcontrolsock) close(outcontrolsock) ;
215    if ( sshchildpid != 0 ) {
216        kill(sshchildpid,SIGKILL) ;
217    }
218}
219void bbftp_free_all_var() 
220{
221
222    if ( myports != NULL ) {
223        free(myports) ;
224        myports = NULL ;
225    }
226     if ( mychildren != NULL ) {
227        free(mychildren) ;
228        mychildren = NULL ;
229    }
230   if ( realfilename != NULL ) {
231        free(realfilename) ;
232        realfilename = NULL ;
233    }
234    if ( curfilename != NULL ) {
235        free(curfilename) ;
236        curfilename = NULL ;
237    }
238    if ( mysockets != NULL ) {
239        free(mysockets) ;
240        mysockets = NULL ;
241    }
242    if ( readbuffer != NULL ) {
243        free(readbuffer) ;
244        readbuffer = NULL ;
245    }
246    if ( compbuffer != NULL ) {
247        free(compbuffer) ;
248        compbuffer = NULL ;
249    }
250}
251void bbftp_clean_child()
252{
253    int     *pidfree ;
254    int     i ;
255   
256    if (mychildren != NULL ) {
257        pidfree = mychildren ;
258        for ( i=0 ; i<requestedstreamnumber ; i++) {
259            if ( *pidfree != 0 ) {
260                if (debug) printf("Killing child %d\n",*pidfree) ; 
261                kill(*pidfree,SIGKILL) ;
262            }
263            *pidfree++ = 0 ;
264        }
265    }
266}
Note: See TracBrowser for help on using the repository browser.