annotate lib/misc.c @ 309:cc2eeb30b793

2003-11-7 Brian Masney <masneyb@gftp.org> * lib/gftp.h lib/local.c lib/protocols.c lib/rfc2068.c lib/rfc959.c lib/sshv2.c - added copy_param_options method to gftp_request structure. When a gftp_request structure is copied, if a copy_param_options method exists, this will be called so that the local protocol data can be copied over. This is only used by the FTP protocol at the moment to save the current state of Ascii or Binary transfers. * src/gtk/transfer.c (transfer_done) - when a transfer is completed, copy the local protocol options back to the main window * lib/rfc959.c (gftp_set_data_type) - check the return value of rfc959_send_command() and if there is an error, return that error. * configure.in - added 'hr' to ALL_LINGUAS
author masneyb
date Sat, 08 Nov 2003 12:23:21 +0000
parents 76c912483d1d
children 853981bbd4d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
2 /* misc.c - general purpose routines */
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
3 /* Copyright (C) 1998-2003 Brian Masney <masneyb@gftp.org> */
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
4 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
5 /* This program is free software; you can redistribute it and/or modify */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
6 /* it under the terms of the GNU General Public License as published by */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
7 /* the Free Software Foundation; either version 2 of the License, or */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
8 /* (at your option) any later version. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
9 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
10 /* This program is distributed in the hope that it will be useful, */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
13 /* GNU General Public License for more details. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
14 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
15 /* You should have received a copy of the GNU General Public License */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
16 /* along with this program; if not, write to the Free Software */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
17 /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
18 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
19
102
3b573c8ef706 2003-2-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 87
diff changeset
20 static const char cvsid[] = "$Id$";
3b573c8ef706 2003-2-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 87
diff changeset
21
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
22 #include "gftp.h"
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
23 #include "options.h"
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
24
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
25 #ifdef _GNU_SOURCE
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
26
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
27 char *
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
28 insert_commas (off_t number, char *dest_str, size_t dest_len)
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
29 {
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
30 if (dest_str != NULL)
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
31 {
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
32 #if defined (_LARGEFILE_SOURCE)
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
33 g_snprintf (dest_str, dest_len, "%'lld", number);
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
34 #else
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
35 g_snprintf (dest_str, dest_len, "%'ld", number);
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
36 #endif
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
37 }
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
38 else
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
39 {
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
40 #if defined (_LARGEFILE_SOURCE)
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
41 dest_str = g_strdup_printf ("%'lld", number);
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
42 #else
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
43 dest_str = g_strdup_printf ("%'ld", number);
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
44 #endif
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
45 }
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
46
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
47 return (dest_str);
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
48 }
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
49
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
50 #else
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
51
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
52 char *
14
83090328581e * More largefile support. Hopefully all that is left is the configure stuff
masneyb
parents: 13
diff changeset
53 insert_commas (off_t number, char *dest_str, size_t dest_len)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
54 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
55 char *frompos, *topos, src[50], *dest;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
56 int len, num, rem, i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
57
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
58 #if defined (_LARGEFILE_SOURCE)
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
59 g_snprintf (src, sizeof (src), "%lld", number);
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
60 #else
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
61 g_snprintf (src, sizeof (src), "%ld", number);
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
62 #endif
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
63
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
64 if (dest_str != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
65 *dest_str = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
66
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
67 len = strlen (src);
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
68 if (len == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
69 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
70 if (dest_str != NULL)
249
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
71 {
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
72 strncpy (dest_str, "0", dest_len);
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
73 dest_str[dest_len - 1] = '\0';
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
74 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
75 else
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
76 dest_str = g_strdup ("0");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
77 return (dest_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
78 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
79
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
80 len += len / 3;
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
81
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
82 if (dest_str != NULL && len > dest_len)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
83 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
84
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
85 for (i=0; i<dest_len - 1; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
86 dest_str[i] = 'X';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
87 dest_str[dest_len - 1] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
88 return (dest_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
89 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
90
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
91 if (dest_str == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
92 dest = g_malloc0 (len);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
93 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
94 dest = dest_str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
95
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
96 num = strlen (src) / 3 - 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
97 rem = strlen (src) % 3;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
98 frompos = src;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
99 topos = dest;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
100 for (i = 0; i < rem; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
101 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
102
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
103 if (*frompos != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
104 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
105 if (rem != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
106 *topos++ = ',';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
107 while (num > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
108 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
109 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
110 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
111 *topos++ = ',';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
112 num--;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
113 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
114 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
115 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
116 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
117 *topos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
118 return (dest);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
119 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
120
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
121 #endif
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
122
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
123 char *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
124 alltrim (char *str)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
125 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
126 char *pos, *newpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
127 int diff;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
128
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
129 pos = str + strlen (str) - 1;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
130 while (pos >= str && (*pos == ' ' || *pos == '\t'))
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
131 *pos-- = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
132
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
133 pos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
134 diff = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
135 while (*pos++ == ' ')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
136 diff++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
137
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
138 if (diff == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
139 return (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
140
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
141 pos = str + diff;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
142 newpos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
143 while (*pos != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
144 *newpos++ = *pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
145 *newpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
146
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
147 return (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
148 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
149
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
150
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
151 char *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
152 expand_path (const char *src)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
153 {
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
154 char *str, *pos, *endpos, *prevpos, *newstr, *tempstr, *ntoken,
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
155 tempchar;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
156 struct passwd *pw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
157
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
158 pw = NULL;
124
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
159 str = g_strdup (src);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
160
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
161 if (*str == '~')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
162 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
163 if (*(str + 1) == '/' || *(str + 1) == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
164 pw = getpwuid (geteuid ());
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
165 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
166 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
167 if ((pos = strchr (str, '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
168 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
169
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
170 pw = getpwnam (str + 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
171
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
172 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
173 *pos = '/';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
174 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
175 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
176
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
177 endpos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
178 newstr = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
179 while ((pos = strchr (endpos, '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
180 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
181 pos++;
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
182
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
183 for (ntoken = pos; *ntoken == '/'; ntoken++);
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
184
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
185 if ((endpos = strchr (ntoken, '/')) == NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
186 endpos = pos + strlen (pos);
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
187
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
188 tempchar = *endpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
189 *endpos = '\0';
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
190
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
191 if (strcmp (ntoken, "..") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
192 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
193 if (newstr != NULL && (prevpos = strrchr (newstr, '/')) != NULL)
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
194 {
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
195 *prevpos = '\0';
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
196 if (*newstr == '\0')
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
197 {
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
198 g_free (newstr);
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
199 newstr = NULL;
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
200 }
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
201 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
202 }
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
203 else if (strcmp (ntoken, ".") != 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
204 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
205 if (newstr == NULL)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
206 newstr = g_strdup (pos - 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
207 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
208 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
209 tempstr = g_strconcat (newstr, pos - 1, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
210 g_free (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
211 newstr = tempstr;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
212 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
213 }
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
214
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
215 *endpos = tempchar;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
216 if (*endpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
217 break;
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
218
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
219 endpos = pos + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
220 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
221
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
222 if (endpos != NULL && *endpos != '\0' && newstr == NULL)
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
223 {
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
224 if (strcmp (endpos, "..") == 0)
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
225 newstr = g_strdup ("/");
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
226 else
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
227 newstr = g_strdup (endpos);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
228 }
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
229
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
230 if (newstr == NULL || *newstr == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
231 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
232 if (newstr != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
233 g_free (newstr);
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
234
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
235 newstr = g_strdup ("/");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
236 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
237
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
238 g_free (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
239
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
240 if (pw != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
241 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
242 if ((pos = strchr (newstr, '/')) == NULL)
124
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
243 str = g_strdup (pw->pw_dir);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
244 else
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
245 str = gftp_build_path (pw->pw_dir, pos, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
246
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
247 g_free (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
248 newstr = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
249 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
250
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
251 return (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
252 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
253
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
254
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
255 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
256 make_nonnull (char **str)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
257 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
258 if (*str == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
259 *str = g_malloc0 (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
260 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
261
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
262
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
263 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
264 copyfile (char *source, char *dest)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
265 {
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
266 int srcfd, destfd;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
267 char buf[8192];
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
268 ssize_t n;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
269
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 173
diff changeset
270 if ((srcfd = gftp_fd_open (NULL, source, O_RDONLY, 0)) == -1)
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
271 {
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
272 printf (_("Error: Cannot open local file %s: %s\n"),
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
273 source, g_strerror (errno));
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
274 exit (1);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
275 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
276
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 173
diff changeset
277 if ((destfd = gftp_fd_open (NULL, dest, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) == -1)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
278 {
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
279 printf (_("Error: Cannot open local file %s: %s\n"),
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
280 dest, g_strerror (errno));
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
281 close (srcfd);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
282 exit (1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
283 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
284
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
285 while ((n = read (srcfd, buf, sizeof (buf))) > 0)
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
286 {
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
287 if (write (destfd, buf, n) == -1)
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
288 {
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
289 printf (_("Error: Could not write to socket: %s\n"),
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
290 g_strerror (errno));
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
291 exit (1);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
292 }
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
293 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
294
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
295 if (n == -1)
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
296 {
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
297 printf (_("Error: Could not read from socket: %s\n"), g_strerror (errno));
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
298 exit (1);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
299 }
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
300
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
301 if (close (srcfd) == -1)
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
302 {
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
303 printf (_("Error closing file descriptor: %s\n"), g_strerror (errno));
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
304 exit (1);
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
305 }
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
306
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
307 if (close (destfd) == -1)
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
308 {
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
309 printf (_("Error closing file descriptor: %s\n"), g_strerror (errno));
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
310 exit (1);
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
311 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
312
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
313 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
314 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
315
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
316
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
317 /* FIXME - is there a replacement for this */
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
318 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
319 gftp_match_filespec (char *filename, char *filespec)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
320 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
321 char *filepos, *wcpos, *pos, *newpos, search_str[20];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
322 size_t len, curlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
323
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
324 if (filename == NULL || *filename == '\0' ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
325 filespec == NULL || *filespec == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
326 return(1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
327
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
328 filepos = filename;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
329 wcpos = filespec;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
330 while(1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
331 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
332 if (*wcpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
333 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
334 else if (*filepos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
335 return(0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
336 else if(*wcpos == '?')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
337 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
338 wcpos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
339 filepos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
340 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
341 else if(*wcpos == '*' && *(wcpos+1) == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
342 return(1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
343 else if(*wcpos == '*')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
344 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
345 len = sizeof (search_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
346 for (pos = wcpos + 1, newpos = search_str, curlen = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
347 *pos != '*' && *pos != '?' && *pos != '\0' && curlen < len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
348 curlen++, *newpos++ = *pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
349 *newpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
350
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
351 if ((filepos = strstr (filepos, search_str)) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
352 return(0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
353 wcpos += curlen + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
354 filepos += curlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
355 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
356 else if(*wcpos++ != *filepos++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
357 return(0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
358 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
359 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
360 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
361
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
362
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
363 static void
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
364 gftp_info (void)
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
365 {
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
366 int i;
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
367
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
368 printf ("%s\n", gftp_version);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
369
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
370 #ifdef _REENTRANT
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
371 printf ("#define _REENTRANT\n");
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
372 #endif
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
373
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
374 #ifdef _GNU_SOURCE
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
375 printf ("#define _GNU_SOURCE\n");
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
376 #endif
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
377
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
378 #ifdef _LARGEFILE_SOURCE
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
379 printf ("#define _LARGEFILE_SOURCE\n");
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
380 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
381
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
382 #ifdef _FILE_OFFSET_BITS
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
383 printf ("#define _FILE_OFFSET_BITS %d\n", _FILE_OFFSET_BITS);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
384 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
385
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
386 printf ("sizeof (off_t) = %d\n", sizeof (off_t));
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
387
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
388 #ifdef HAVE_GETADDRINFO
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
389 printf ("#define HAVE_GETADDRINFO\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
390 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
391
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
392 #ifdef HAVE_GAI_STRERROR
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
393 printf ("#define HAVE_GAI_STRERROR\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
394 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
395
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
396 #ifdef HAVE_GETDTABLESIZE
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
397 printf ("#define HAVE_GETDTABLESIZE\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
398 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
399
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
400 #ifdef G_HAVE_GINT64
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
401 printf ("#define G_HAVE_GINT64\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
402 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
403
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
404 #ifdef HAVE_LIBREADLINE
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
405 printf ("#define HAVE_LIBREADLINE\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
406 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
407
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
408 #ifdef ENABLE_NLS
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
409 printf ("#define ENABLE_NLS\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
410 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
411
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
412 #ifdef HAVE_GETTEXT
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
413 printf ("#define HAVE_GETTEXT\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
414 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
415
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
416 printf ("glib version: %d.%d.%d\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION,
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
417 GLIB_MICRO_VERSION);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
418
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
419 printf ("PTY implementation: %s\n", gftp_get_pty_impl ());
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
420
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
421 #ifdef USE_SSL
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
422 printf ("OpenSSL version: 0x%lx\n", OPENSSL_VERSION_NUMBER);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
423 #endif
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
424
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
425 printf ("Enabled protocols: ");
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
426 for (i=0; gftp_protocols[i].name != NULL; i++)
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
427 {
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
428 printf ("%s ", gftp_protocols[i].name);
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
429 }
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
430 printf ("\n");
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
431 }
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
432
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
433
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
434 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
435 gftp_parse_command_line (int *argc, char ***argv)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
436 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
437 if (*argc > 1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
438 {
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
439 if (strcmp (argv[0][1], "--help") == 0 ||
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
440 strcmp (argv[0][1], "-h") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
441 gftp_usage ();
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
442 else if (strcmp (argv[0][1], "--version") == 0 ||
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
443 strcmp (argv[0][1], "-v") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
444 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
445 printf ("%s\n", gftp_version);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
446 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
447 }
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
448 else if (strcmp (argv[0][1], "--info") == 0)
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
449 {
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
450 gftp_info ();
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
451 exit (0);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
452 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
453 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
454 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
455 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
456
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
457
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
458 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
459 gftp_usage (void)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
460 {
162
12a043d992a1 2003-5-22 Brian Masney <masneyb@gftp.org>
masneyb
parents: 151
diff changeset
461 printf (_("usage: gftp [[protocol://][user[:pass]@]site[:port][/directory]]\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
462 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
463 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
464
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
465
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
466 gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
467 string_hash_compare (gconstpointer path1, gconstpointer path2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
468 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
469 return (strcmp ((char *) path1, (char *) path2) == 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
470 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
471
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
472
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
473 guint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
474 string_hash_function (gconstpointer key)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
475 {
59
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
476 guint ret;
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
477 int i;
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
478
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
479 ret = 0;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
480 for (i=0; ((char *) key)[i] != '\0' && i < 3; i++)
59
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
481 ret += ((char *) key)[i];
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
482
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
483 return (ret);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
484 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
485
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
486
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
487 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
488 free_file_list (GList * filelist)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
489 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
490 gftp_file * tempfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
491 GList * templist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
492
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
493 templist = filelist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
494 while (templist != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
495 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
496 tempfle = templist->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
497 free_fdata (tempfle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
498 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
499 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
500 g_list_free (filelist);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
501 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
502
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
503
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
504 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
505 free_fdata (gftp_file * fle)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
506 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
507 if (fle->file)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
508 g_free (fle->file);
184
65eb40fb4f03 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
509 if (fle->utf8_file)
65eb40fb4f03 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
510 g_free (fle->utf8_file);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
511 if (fle->user)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
512 g_free (fle->user);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
513 if (fle->group)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
514 g_free (fle->group);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
515 if (fle->attribs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
516 g_free (fle->attribs);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
517 if (fle->destfile)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
518 g_free (fle->destfile);
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
519 if (fle->fd > 0)
102
3b573c8ef706 2003-2-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 87
diff changeset
520 close (fle->fd);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
521 g_free (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
522 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
523
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
524
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
525 gftp_file *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
526 copy_fdata (gftp_file * fle)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
527 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
528 gftp_file * newfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
529
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
530 newfle = g_malloc0 (sizeof (*newfle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
531 memcpy (newfle, fle, sizeof (*newfle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
532
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
533 if (fle->file)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
534 newfle->file = g_strdup (fle->file);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
535
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
536 if (fle->utf8_file)
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
537 newfle->utf8_file = g_strdup (fle->utf8_file);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
538
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
539 if (fle->user)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
540 newfle->user = g_strdup (fle->user);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
541
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
542 if (fle->group)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
543 newfle->group = g_strdup (fle->group);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
544
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
545 if (fle->attribs)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
546 newfle->attribs = g_strdup (fle->attribs);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
547
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
548 if (fle->destfile)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
549 newfle->destfile = g_strdup (fle->destfile);
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
550
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
551 return (newfle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
552 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
553
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
554
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
555 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
556 compare_request (gftp_request * request1, gftp_request * request2,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
557 int compare_dirs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
558 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
559 char *strarr[3][2];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
560 int i, ret;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
561
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
562 ret = 1;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
563 if (request1->protonum == request2->protonum &&
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
564 request1->port == request2->port)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
565 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
566 strarr[0][0] = request1->hostname;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
567 strarr[0][1] = request2->hostname;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
568 strarr[1][0] = request1->username;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
569 strarr[1][1] = request2->username;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
570 if (compare_dirs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
571 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
572 strarr[2][0] = request1->directory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
573 strarr[2][1] = request2->directory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
574 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
575 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
576 strarr[2][0] = strarr[2][1] = "";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
577
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
578 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
579 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
580 if ((strarr[i][0] && !strarr[i][1]) ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
581 (!strarr[i][0] && strarr[i][1]))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
582 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
583 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
584 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
585 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
586
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
587 if (strarr[i][0] && strarr[i][1] &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
588 strcmp (strarr[i][0], strarr[i][1]) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
589 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
590 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
591 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
592 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
593 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
594 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
595 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
596 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
597 return (ret);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
598 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
599
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
600
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
601 gftp_transfer *
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
602 gftp_tdata_new (void)
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
603 {
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
604 #if GLIB_MAJOR_VERSION == 1
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
605 static GStaticMutex init_mutex = G_STATIC_MUTEX_INIT;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
606 #endif
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
607 gftp_transfer * tdata;
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
608
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
609 tdata = g_malloc0 (sizeof (*tdata));
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
610
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
611 #if GLIB_MAJOR_VERSION == 1
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
612 tdata->statmutex = init_mutex;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
613 tdata->structmutex = init_mutex;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
614 #else
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
615 g_static_mutex_init (&tdata->statmutex);
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
616 g_static_mutex_init (&tdata->structmutex);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
617 #endif
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
618
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
619 return (tdata);
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
620 }
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
621
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
622
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
623 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
624 free_tdata (gftp_transfer * tdata)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
625 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
626 if (tdata->fromreq != NULL)
67
aa971a4bb16f 2002-11-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 66
diff changeset
627 gftp_request_destroy (tdata->fromreq, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
628 if (tdata->toreq != NULL)
67
aa971a4bb16f 2002-11-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 66
diff changeset
629 gftp_request_destroy (tdata->toreq, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
630 free_file_list (tdata->files);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
631 g_free (tdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
632 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
633
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
634
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
635 gftp_request *
151
2f15b3000dbc 2003-4-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 146
diff changeset
636 copy_request (gftp_request * req, int copy_local_options)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
637 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
638 gftp_request * newreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
639
66
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
640 newreq = gftp_request_new ();
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
641
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
642 if (req->hostname)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
643 newreq->hostname = g_strdup (req->hostname);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
644 if (req->username)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
645 newreq->username = g_strdup (req->username);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
646 if (req->password)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
647 newreq->password = g_strdup (req->password);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
648 if (req->account)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
649 newreq->account = g_strdup (req->account);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
650 if (req->directory)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
651 newreq->directory = g_strdup (req->directory);
66
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
652 newreq->port = req->port;
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
653 newreq->use_proxy = req->use_proxy;
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
654 newreq->logging_function = req->logging_function;
151
2f15b3000dbc 2003-4-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 146
diff changeset
655 newreq->free_hostp = 0;
296
51725086634d 2003-10-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 290
diff changeset
656 newreq->hostp = NULL;
151
2f15b3000dbc 2003-4-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 146
diff changeset
657
2f15b3000dbc 2003-4-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 146
diff changeset
658 if (copy_local_options)
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
659 gftp_copy_local_options (&newreq->local_options_vars,
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
660 &newreq->local_options_hash,
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
661 req->local_options_vars,
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
662 req->num_local_options_vars);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
663
173
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
664 if (req->init (newreq) < 0)
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
665 {
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
666 gftp_request_destroy (newreq, 1);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
667 return (NULL);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
668 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
669
309
cc2eeb30b793 2003-11-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 307
diff changeset
670 gftp_copy_param_options (newreq, req);
cc2eeb30b793 2003-11-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 307
diff changeset
671
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
672 return (newreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
673 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
674
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
675
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
676 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
677 gftp_file_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
678 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
679 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
680
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
681 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
682 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
683 return (strcmp (f1->file, f2->file));
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
684 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
685
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
686
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
687 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
688 gftp_file_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
689 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
690 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
691 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
692
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
693 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
694 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
695 ret = strcmp (f1->file, f2->file);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
696 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
697 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
698
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
699
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
700 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
701 gftp_user_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
702 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
703 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
704
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
705 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
706 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
707 return (strcmp (f1->user, f2->user));
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
708 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
709
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
710
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
711 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
712 gftp_user_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
713 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
714 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
715 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
716
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
717 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
718 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
719 ret = strcmp (f1->user, f2->user);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
720 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
721 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
722
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
723
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
724 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
725 gftp_group_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
726 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
727 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
728
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
729 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
730 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
731 return (strcmp (f1->group, f2->group));
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
732 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
733
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
734
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
735 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
736 gftp_group_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
737 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
738 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
739 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
740
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
741 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
742 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
743 ret = strcmp (f1->group, f2->group);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
744 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
745 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
746
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
747
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
748 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
749 gftp_attribs_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
750 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
751 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
752
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
753 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
754 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
755 return (strcmp (f1->attribs, f2->attribs));
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
756 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
757
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
758
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
759 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
760 gftp_attribs_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
761 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
762 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
763 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
764
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
765 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
766 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
767 ret = strcmp (f1->attribs, f2->attribs);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
768 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
769 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
770
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
771
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
772 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
773 gftp_size_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
774 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
775 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
776
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
777 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
778 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
779 if (f1->size < f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
780 return (-1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
781 else if (f1->size == f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
782 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
783 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
784 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
785 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
786
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
787
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
788 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
789 gftp_size_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
790 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
791 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
792
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
793 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
794 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
795 if (f1->size < f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
796 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
797 else if (f1->size == f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
798 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
799 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
800 return (-1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
801 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
802
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
803
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
804 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
805 gftp_datetime_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
806 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
807 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
808
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
809 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
810 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
811 if (f1->datetime < f2->datetime)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
812 return (-1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
813 else if (f1->datetime == f2->datetime)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
814 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
815 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
816 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
817 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
818
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
819
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
820 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
821 gftp_datetime_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
822 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
823 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
824
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
825 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
826 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
827 if (f1->datetime < f2->datetime)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
828 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
829 else if (f1->datetime == f2->datetime)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
830 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
831 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
832 return (-1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
833 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
834
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
835
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
836 GList *
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
837 gftp_sort_filelist (GList * filelist, int column, int asds)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
838 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
839 GList * files, * dirs, * dotdot, * tempitem, * insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
840 GCompareFunc sortfunc;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
841 gftp_file * tempfle;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
842 int sort_dirs_first;
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
843
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
844 files = dirs = dotdot = NULL;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
845
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
846 if (column == GFTP_SORT_COL_FILE)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
847 sortfunc = asds ? gftp_file_sort_function_as : gftp_file_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
848 else if (column == GFTP_SORT_COL_SIZE)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
849 sortfunc = asds ? gftp_size_sort_function_as : gftp_size_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
850 else if (column == GFTP_SORT_COL_USER)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
851 sortfunc = asds ? gftp_user_sort_function_as : gftp_user_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
852 else if (column == GFTP_SORT_COL_GROUP)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
853 sortfunc = asds ?
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
854 gftp_group_sort_function_as : gftp_group_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
855 else if (column == GFTP_SORT_COL_DATETIME)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
856 sortfunc = asds ?
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
857 gftp_datetime_sort_function_as : gftp_datetime_sort_function_ds;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
858 else if (column == GFTP_SORT_COL_ATTRIBS)
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
859 sortfunc = asds ?
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
860 gftp_attribs_sort_function_as : gftp_attribs_sort_function_ds;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
861 else /* Don't sort */
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
862 return (filelist);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
863
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
864 sort_dirs_first = 1;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
865 gftp_lookup_global_option ("sort_dirs_first", &sort_dirs_first);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
866
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
867 for (tempitem = filelist; tempitem != NULL; )
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
868 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
869 tempfle = tempitem->data;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
870 insitem = tempitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
871 tempitem = tempitem->next;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
872 insitem->next = NULL;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
873
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
874 if (dotdot == NULL && strcmp (tempfle->file, "..") == 0)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
875 dotdot = insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
876 else if (sort_dirs_first && tempfle->isdir)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
877 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
878 insitem->next = dirs;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
879 dirs = insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
880 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
881 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
882 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
883 insitem->next = files;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
884 files = insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
885 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
886 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
887
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
888 if (dirs != NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
889 dirs = g_list_sort (dirs, sortfunc);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
890 if (files != NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
891 files = g_list_sort (files, sortfunc);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
892
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
893 filelist = dotdot;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
894
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
895 if (filelist == NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
896 filelist = dirs;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
897 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
898 filelist = g_list_concat (filelist, dirs);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
899
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
900 if (filelist == NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
901 filelist = files;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
902 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
903 filelist = g_list_concat (filelist, files);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
904
39
474d562c7268 2002-10-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
905 /* I haven't check this, but I'm pretty sure some older versions of glib
474d562c7268 2002-10-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
906 had a bug that the prev pointer wasn't being sent to NULL */
474d562c7268 2002-10-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
907 filelist->prev = NULL;
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
908 return (filelist);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
909 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
910
125
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
911
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
912 mode_t
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
913 gftp_parse_attribs (char *attribs)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
914 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
915 mode_t mode;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
916 int cur;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
917
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
918 cur = 0;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
919 if (attribs[1] == 'r')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
920 cur += 4;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
921 if (attribs[2] == 'w')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
922 cur += 2;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
923 if (attribs[3] == 'x' ||
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
924 attribs[3] == 's')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
925 cur += 1;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
926 mode = cur;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
927
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
928 cur = 0;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
929 if (attribs[4] == 'r')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
930 cur += 4;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
931 if (attribs[5] == 'w')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
932 cur += 2;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
933 if (attribs[6] == 'x' ||
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
934 attribs[6] == 's')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
935 cur += 1;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
936 mode = (mode * 10) + cur;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
937
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
938 cur = 0;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
939 if (attribs[7] == 'r')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
940 cur += 4;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
941 if (attribs[8] == 'w')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
942 cur += 2;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
943 if (attribs[9] == 'x' ||
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
944 attribs[9] == 's')
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
945 cur += 1;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
946 mode = (mode * 10) + cur;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
947
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
948 return (mode);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
949 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
950
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
951
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
952 char *
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
953 gftp_gen_ls_string (gftp_file * fle, char *file_prefixstr, char *file_suffixstr)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
954 {
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
955 char *tempstr1, *tempstr2, *ret, tstr[50];
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
956 struct tm *lt;
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
957 time_t t;
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
958
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
959 lt = localtime (&fle->datetime);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
960
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
961 tempstr1 = g_strdup_printf ("%10s %8s %8s", fle->attribs, fle->user,
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
962 fle->group);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
963
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
964 if (fle->attribs && (*fle->attribs == 'b' || *fle->attribs == 'c'))
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
965 tempstr2 = g_strdup_printf ("%d, %d", major (fle->size), minor (fle->size));
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
966 else
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
967 {
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
968 #if defined (_LARGEFILE_SOURCE)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
969 tempstr2 = g_strdup_printf ("%11lld", fle->size);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
970 #else
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
971 tempstr2 = g_strdup_printf ("%11ld", fle->size);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
972 #endif
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
973 }
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
974
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
975 time (&t);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
976
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
977 if (fle->datetime > t || t - 3600*24*90 > fle->datetime)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
978 strftime (tstr, sizeof (tstr), "%b %d %Y", lt);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
979 else
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
980 strftime (tstr, sizeof (tstr), "%b %d %H:%M", lt);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
981
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
982 if (file_prefixstr == NULL)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
983 file_prefixstr = "";
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
984 if (file_suffixstr == NULL)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
985 file_suffixstr = "";
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
986
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
987 ret = g_strdup_printf ("%s %s %s %s%s%s", tempstr1, tempstr2, tstr,
184
65eb40fb4f03 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
988 file_prefixstr,
65eb40fb4f03 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
989 fle->utf8_file != NULL ? fle->utf8_file : fle->file,
65eb40fb4f03 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
990 file_suffixstr);
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
991
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
992 g_free (tempstr1);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
993 g_free (tempstr2);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
994
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
995 return (ret);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
996 }
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
997
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
998
125
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
999 #if !defined (HAVE_GETADDRINFO) || !defined (HAVE_GAI_STRERROR)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1000
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1001 struct hostent *
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1002 r_gethostbyname (const char *name, struct hostent *result_buf, int *h_errnop)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1003 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1004 static GStaticMutex hostfunclock = G_STATIC_MUTEX_INIT;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1005 struct hostent *hent;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1006
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1007 if (g_thread_supported ())
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1008 g_static_mutex_lock (&hostfunclock);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1009
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1010 if ((hent = gethostbyname (name)) == NULL)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1011 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1012 if (h_errnop)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1013 *h_errnop = h_errno;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1014 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1015 else
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1016 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1017 *result_buf = *hent;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1018 hent = result_buf;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1019 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1020
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1021 if (g_thread_supported ())
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1022 g_static_mutex_unlock (&hostfunclock);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1023
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1024 return (hent);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1025 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1026
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1027 #endif /* !HAVE_GETADDRINFO */
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1028
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1029 struct servent *
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1030 r_getservbyname (const char *name, const char *proto,
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1031 struct servent *result_buf, int *h_errnop)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1032 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1033 static GStaticMutex servfunclock = G_STATIC_MUTEX_INIT;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1034 struct servent *sent;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1035
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1036 if (g_thread_supported ())
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1037 g_static_mutex_lock (&servfunclock);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1038
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1039 if ((sent = getservbyname (name, proto)) == NULL)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1040 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1041 if (h_errnop)
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1042 *h_errnop = h_errno;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1043 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1044 else
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1045 {
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1046 *result_buf = *sent;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1047 sent = result_buf;
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1048 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1049
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1050 if (g_thread_supported ())
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1051 g_static_mutex_unlock (&servfunclock);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1052 return (sent);
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1053 }
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
1054
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1055
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1056 char *
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1057 base64_encode (char *str)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1058 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1059
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1060 /* The standard to Base64 encoding can be found in RFC2045 */
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1061
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1062 char *newstr, *newpos, *fillpos, *pos;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1063 unsigned char table[64], encode[3];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1064 int i, num;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1065
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1066 for (i = 0; i < 26; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1067 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1068 table[i] = 'A' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1069 table[i + 26] = 'a' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1070 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1071
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1072 for (i = 0; i < 10; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1073 table[i + 52] = '0' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1074
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1075 table[62] = '+';
207
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1076 table[63] = '/';
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1077
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1078 num = strlen (str) / 3;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1079 if (strlen (str) % 3 > 0)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1080 num++;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1081 newstr = g_malloc (num * 4 + 1);
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1082 newstr[num * 4] = '\0';
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1083 newpos = newstr;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1084
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1085 pos = str;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1086 while (*pos != '\0')
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1087 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1088 memset (encode, 0, sizeof (encode));
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1089 for (i = 0; i < 3 && *pos != '\0'; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1090 encode[i] = *pos++;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1091
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1092 fillpos = newpos;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1093 *newpos++ = table[encode[0] >> 2];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1094 *newpos++ = table[(encode[0] & 3) << 4 | encode[1] >> 4];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1095 *newpos++ = table[(encode[1] & 0xF) << 2 | encode[2] >> 6];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1096 *newpos++ = table[encode[2] & 0x3F];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1097 while (i < 3)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1098 fillpos[++i] = '=';
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1099 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1100 return (newstr);
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1101 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
1102
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1103
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1104 void
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1105 gftp_free_bookmark (gftp_bookmarks_var * entry)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1106 {
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1107 if (entry->hostname)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1108 g_free (entry->hostname);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1109 if (entry->remote_dir)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1110 g_free (entry->remote_dir);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1111 if (entry->local_dir)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1112 g_free (entry->local_dir);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1113 if (entry->user)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1114 g_free (entry->user);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1115 if (entry->pass)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1116 g_free (entry->pass);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1117 if (entry->acct)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1118 g_free (entry->acct);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1119 if (entry->protocol)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1120 g_free (entry->protocol);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1121
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1122 if (entry->local_options_vars != NULL)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1123 {
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1124 gftp_config_free_options (entry->local_options_vars,
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1125 entry->local_options_hash,
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1126 entry->num_local_options_vars);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1127
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1128 entry->local_options_vars = NULL;
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1129 entry->local_options_hash = NULL;
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1130 entry->num_local_options_vars = 0;
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1131 }
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1132 }
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1133
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1134
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1135 void
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1136 gftp_shutdown (void)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1137 {
203
95e669973a84 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 201
diff changeset
1138 #ifdef WITH_DMALLOC
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1139 gftp_config_vars * cv;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1140 GList * templist;
203
95e669973a84 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 201
diff changeset
1141 #endif
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1142
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1143 if (gftp_logfd != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1144 fclose (gftp_logfd);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1145
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1146 gftp_clear_cache_files ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1147
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1148 if (gftp_configuration_changed)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1149 gftp_write_config_file ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1150
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1151 #ifdef WITH_DMALLOC
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1152 if (gftp_global_options_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1153 g_hash_table_destroy (gftp_global_options_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1154
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1155 if (gftp_config_list_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1156 g_hash_table_destroy (gftp_config_list_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1157
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1158 if (gftp_bookmarks_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1159 g_hash_table_destroy (gftp_bookmarks_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1160
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1161 for (templist = gftp_options_list;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1162 templist != NULL;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1163 templist = templist->next)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1164 {
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1165 cv = templist->data;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1166 gftp_config_free_options (cv, NULL, -1);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1167 }
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1168
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1169 gftp_bookmarks_destroy (gftp_bookmarks);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1170
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1171 dmalloc_shutdown ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1172 #endif
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1173
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1174 exit (0);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1175 }
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1176
207
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1177
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1178 GList *
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1179 get_next_selection (GList * selection, GList ** list, int *curnum)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1180 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1181 gftp_file * tempfle;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1182 int i, newpos;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1183
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1184 newpos = GPOINTER_TO_INT (selection->data);
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1185 i = *curnum - newpos;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1186
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1187 if (i < 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1188 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1189 while (i != 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1190 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1191 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1192 if (tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1193 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1194 ++*curnum;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1195 i++;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1196 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1197 *list = (*list)->next;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1198 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1199 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1200 else if (i > 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1201 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1202 while (i != 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1203 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1204 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1205 if (tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1206 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1207 --*curnum;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1208 i--;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1209 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1210 *list = (*list)->prev;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1211 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1212 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1213
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1214 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1215 while ((*list)->next && !tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1216 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1217 *list = (*list)->next;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1218 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1219 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1220 return (selection->next);
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1221 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1222
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1223
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1224 char *
245
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1225 gftp_build_path (const char *first_element, ...)
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1226 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1227 const char *element;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1228 size_t len, retlen;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1229 int add_separator;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1230 va_list args;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1231 char *ret;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1232
245
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1233 g_return_val_if_fail (first_element != NULL, NULL);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1234
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1235 ret = g_strdup (first_element);
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1236 retlen = strlen (ret);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1237
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1238 va_start (args, first_element);
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1239 for (element = va_arg (args, char *);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1240 element != NULL;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1241 element = va_arg (args, char *))
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1242 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1243 len = strlen (element);
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1244
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
1245 if (retlen > 0 && ret[retlen - 1] == '/')
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1246 add_separator = 0;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1247 else
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1248 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1249 add_separator = 1;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1250 len++;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1251 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1252
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1253 retlen += len;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1254 ret = g_realloc (ret, retlen + 1);
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1255
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1256 if (add_separator)
245
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1257 strncat (ret, "/", retlen);
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1258
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1259 strncat (ret, element, retlen);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1260 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1261
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1262 return (ret);
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1263 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1264
244
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1265
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1266 off_t
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1267 gftp_parse_file_size (char *str)
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1268 {
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1269 #if defined (_LARGEFILE_SOURCE)
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1270 return (strtoll (str, NULL, 10));
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1271 #else
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1272 return (strtol (str, NULL, 10));
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1273 #endif
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1274 }
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1275
290
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1276
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1277 void
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1278 gftp_locale_init (void)
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1279 {
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1280 #ifdef HAVE_GETTEXT
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1281
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1282 setlocale (LC_ALL, "");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1283 textdomain ("gftp");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1284
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1285 #if GLIB_MAJOR_VERSION > 1
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1286 bind_textdomain_codeset ("gftp", "UTF-8");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1287 #endif
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1288
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1289 textdomain ("gftp");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1290
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1291 #endif
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1292 }
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1293