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

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

One last #include.

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