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

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

More missing #includes.

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 <bbftp.h>
35
36#include <signal.h>
37#include <stdarg.h>
38#include <stdio.h>
39#if HAVE_STRING_H
40# include <string.h>
41#endif
42#include <stdlib.h>
43
44#include <common.h>
45#include <client.h>
46#include <client_proto.h>
47#include <netinet/in.h>
48#include <structures.h>
49#include <config.h>
50#ifdef HAVE_BYTESWAP_H
51#include <byteswap.h>
52#endif
53
54extern  int     incontrolsock ;
55extern  int     outcontrolsock ;
56extern  int     sshchildpid  ;
57extern  char    *curfilename ;
58extern  char    *realfilename ;
59extern  int     *myports ;
60extern  int     *mysockets ;
61extern  char    *readbuffer ;
62extern  char    *compbuffer ;
63extern  int     *mychildren ;
64extern  int     debug ;
65extern  int     requestedstreamnumber ;
66
67my64_t convertlong(my64_t v) {
68    struct bb {
69        int    fb ;
70        int sb ;
71    } ;
72    struct bb *bbpt ;
73    int     tmp ;
74    my64_t    tmp64 ;
75   
76    tmp64 = v ;
77    bbpt = (struct bb *) &tmp64 ;
78    tmp = bbpt->fb ;
79    bbpt->fb = ntohl(bbpt->sb) ;
80    bbpt->sb = ntohl(tmp) ;   
81    return tmp64 ;
82}
83
84#ifndef HAVE_NTOHLL
85my64_t ntohll(my64_t v) {
86#ifdef HAVE_BYTESWAP_H
87    return bswap_64(v);
88#else
89    long lo = v & 0xffffffff;
90    long hi = v >> 32U;
91    lo = ntohl(lo);
92    hi = ntohl(hi);
93    return ((my64_t) lo) << 32U | hi;
94#endif
95}
96#define htonll ntohll
97#endif
98
99#ifndef NDG_PYTHON_EMBED
100void PRINTMESSAGE(FILE *strm , int flag, int errcode, int tok, char *fmt, ...) 
101{
102    va_list ap;
103    time_t  logtime ;
104    char    clogtime[50] ;
105   
106    va_start(ap,fmt);
107   
108    /*
109    ** If timestamp start to print the time
110    */
111    if (tok) {
112        /*
113        ** Get time
114        */
115        if ( time(&logtime) == -1 ) {
116            strcpy(clogtime,"") ;
117        } else {
118            if ( strftime(clogtime,sizeof(clogtime),"%a %b %d %H:%M:%S (%Z)",localtime(&logtime)) == 0 )    {
119                strcpy(clogtime,"") ;
120            }
121        }
122        /*
123        ** And print it
124        */
125        if ( strlen(clogtime) > 0 ) {
126            (void) fprintf(strm,"%s : ",clogtime) ;
127        }
128    }
129    /*
130    ** Check if it is an error
131    */
132    if ( flag == CASE_ERROR || flag == CASE_FATAL_ERROR ) {
133        /*
134        ** It is an error
135        */
136        (void) fprintf(strm,"BBFTP-ERROR-%05d : ",errcode) ;
137    } else if ( flag == CASE_WARNING ) {
138        /*
139        ** It is a warning
140        */
141        (void) fprintf(strm,"BBFTP-WARNING-%05d : ",errcode) ;
142    }
143    /*
144    ** And print the requested string
145    */
146    (void) vfprintf(strm, fmt, ap);
147    fflush(strm) ;
148    if ( flag == CASE_FATAL_ERROR ) {
149        /*
150        ** exit in case of error
151        */
152        exit(errcode) ;
153    }
154    va_end(ap);
155}
156#endif // NDG_PYTHON_EMBED
157
158void Usage() 
159{
160    printf("Usage bbftp -i inputfile | -e \"command line\" \n") ;
161#ifdef CERTIFICATE_AUTH
162    printf("           [-g service name]\n") ;
163    printf("           [-u username]\n") ;
164#else
165    printf("            -u username\n") ;
166#endif
167    printf("           [-b (background)]\n") ;
168#ifdef WITH_GZIP   
169    printf("           [-c (gzip compress)]\n") ;
170#endif   
171    printf("           [-D[min:max] (Domain of Ephemeral Ports) ]\n") ;
172    printf("           [-f errorfile]\n") ;
173#ifndef PRIVATE_AUTH
174    printf("           [-E server command for ssh]\n") ;
175    printf("           [-I ssh identity file]\n") ;
176    printf("           [-L ssh command]\n") ;
177    printf("           [-s (use ssh)]\n") ;
178    printf("           [-S (use ssh in batch mode)]\n") ;
179#else
180    printf("           [-P Private authentication string]\n") ;
181#endif
182/*#endif*/
183    printf("           [-m (special output for statistics)]\n") ;
184    printf("           [-n (simulation mode: no data written)]\n") ;
185    printf("           [-o outputfile]\n") ;
186    printf("           [-p number of // streams]\n") ;
187    printf("           [-q (for QBSS on)]\n") ;
188    printf("           [-r number of tries ]\n") ;
189    printf("           [-R .bbftprc filename]\n") ;
190    printf("           [-t (timestamp)]\n") ;
191    printf("           [-V (verbose)]\n") ;
192    printf("           [-w controlport]\n") ;
193    printf("           [-W (print warning to stderr) ]\n") ;
194    printf("           host\n") ;
195    printf("      or \n") ;
196    printf("      bbftp -v\n") ;
197}
198
199/*
200** Taken from Free Software Foundation
201*/
202void strip_trailing_slashes (char *path)
203{
204  int last;
205
206  last = strlen (path) - 1;
207  while (last > 0 && path[last] == '/')
208    path[last--] = '\0';
209}
210
211void bbftp_close_control() 
212{
213
214    close(incontrolsock) ;
215    if ( incontrolsock != outcontrolsock) close(outcontrolsock) ;
216    if ( sshchildpid != 0 ) {
217        kill(sshchildpid,SIGKILL) ;
218    }
219}
220void bbftp_free_all_var() 
221{
222
223    if ( myports != NULL ) {
224        free(myports) ;
225        myports = NULL ;
226    }
227     if ( mychildren != NULL ) {
228        free(mychildren) ;
229        mychildren = NULL ;
230    }
231   if ( realfilename != NULL ) {
232        free(realfilename) ;
233        realfilename = NULL ;
234    }
235    if ( curfilename != NULL ) {
236        free(curfilename) ;
237        curfilename = NULL ;
238    }
239    if ( mysockets != NULL ) {
240        free(mysockets) ;
241        mysockets = NULL ;
242    }
243    if ( readbuffer != NULL ) {
244        free(readbuffer) ;
245        readbuffer = NULL ;
246    }
247    if ( compbuffer != NULL ) {
248        free(compbuffer) ;
249        compbuffer = NULL ;
250    }
251}
252void bbftp_clean_child()
253{
254    int     *pidfree ;
255    int     i ;
256   
257    if (mychildren != NULL ) {
258        pidfree = mychildren ;
259        for ( i=0 ; i<requestedstreamnumber ; i++) {
260            if ( *pidfree != 0 ) {
261                if (debug) printf("Killing child %d\n",*pidfree) ; 
262                kill(*pidfree,SIGKILL) ;
263            }
264            *pidfree++ = 0 ;
265        }
266    }
267}
Note: See TracBrowser for help on using the repository browser.