annotate lib/misc.c @ 952:a490d94a5b8e

2008-03-28 Brian Masney <masneyb@gftp.org> * lib/Makefile.am lib/misc.c lib/socket-connect.c lib/socket-connect-getaddrinfo.c lib/socket-connect-gethostbyname.c lib/sockutils.c lib/gftp.h - cleaned up more of the socket functions and split them up into their own files. Cleanups and bug fixes to the DNS lookup code.
author masneyb
date Fri, 28 Mar 2008 11:44:36 +0000
parents 5b681cba67b2
children 63555c9744c2
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 */
885
1808cebed602 2007-3-12 Brian Masney <masneyb@gftp.org>
masneyb
parents: 876
diff changeset
3 /* Copyright (C) 1998-2007 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
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
20 #include "gftp.h"
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
21 #include "options.h"
516
fbb5a02beddb 2004-7-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 499
diff changeset
22 static const char cvsid[] = "$Id$";
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
23
328
51bb530a100c 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 325
diff changeset
24 #ifdef HAVE_INTL_PRINTF
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
25
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
26 char *
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
27 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
28 {
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
29 if (dest_str != NULL)
926
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
30 g_snprintf (dest_str, dest_len, GFTP_OFF_T_INTL_PRINTF_MOD,
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
31 (GFTP_OFF_T_PRINTF_CONVERSION) number);
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
32 else
926
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
33 dest_str = g_strdup_printf (GFTP_OFF_T_INTL_PRINTF_MOD,
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
34 (GFTP_OFF_T_PRINTF_CONVERSION) number);
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
35
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
36 return (dest_str);
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
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
39 #else
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
40
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
41 char *
14
83090328581e * More largefile support. Hopefully all that is left is the configure stuff
masneyb
parents: 13
diff changeset
42 insert_commas (off_t number, char *dest_str, size_t dest_len)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
43 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
44 char *frompos, *topos, src[50], *dest;
460
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
45 size_t num, rem, srclen;
765
d553d14a2565 2006-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 682
diff changeset
46 size_t len, i;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
47
516
fbb5a02beddb 2004-7-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 499
diff changeset
48 g_snprintf (src, sizeof (src), GFTP_OFF_T_PRINTF_MOD, number);
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
49
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
50 if (dest_str != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
51 *dest_str = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
52
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
53 len = strlen (src);
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
54 if (len == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
55 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
56 if (dest_str != NULL)
249
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
57 {
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
58 strncpy (dest_str, "0", dest_len);
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
59 dest_str[dest_len - 1] = '\0';
094e83b55cb1 2003-8-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 247
diff changeset
60 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
61 else
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
62 dest_str = g_strdup ("0");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
63 return (dest_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
64 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
65
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
66 len += len / 3;
220
6de9a8280aa4 2003-7-10 Brian Masney <masneyb@gftp.org>
masneyb
parents: 207
diff changeset
67
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
68 if (dest_str != NULL && len > dest_len)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
69 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
70
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
71 for (i=0; i<dest_len - 1; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
72 dest_str[i] = 'X';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
73 dest_str[dest_len - 1] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
74 return (dest_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
75 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
76
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
77 if (dest_str == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
78 dest = g_malloc0 (len);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
79 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
80 dest = dest_str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
81
460
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
82 srclen = strlen (src);
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
83 num = srclen / 3 - 1;
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
84 rem = srclen % 3;
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
85
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
86 frompos = src;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
87 topos = dest;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
88 for (i = 0; i < rem; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
89 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
90
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
91 if (*frompos != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
92 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
93 if (rem != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
94 *topos++ = ',';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
95 while (num > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
96 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
97 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
98 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
99 *topos++ = ',';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
100 num--;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
101 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
102 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
103 *topos++ = *frompos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
104 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
105 *topos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
106 return (dest);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
107 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
108
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
109 #endif
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
110
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
111 char *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
112 alltrim (char *str)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
113 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
114 char *pos, *newpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
115 int diff;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
116
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
117 pos = str + strlen (str) - 1;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
118 while (pos >= str && (*pos == ' ' || *pos == '\t'))
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
119 *pos-- = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
120
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
121 pos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
122 diff = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
123 while (*pos++ == ' ')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
124 diff++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
125
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
126 if (diff == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
127 return (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
128
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
129 pos = str + diff;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
130 newpos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
131 while (*pos != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
132 *newpos++ = *pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
133 *newpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
134
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
135 return (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
136 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
137
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
138
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
139 char *
555
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
140 gftp_expand_path (gftp_request * request, const char *src)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
141 {
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
142 char *str, *pos, *endpos, *prevpos, *newstr, *tempstr, *ntoken,
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
143 tempchar;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
144 struct passwd *pw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
145
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
146 pw = NULL;
124
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
147 str = g_strdup (src);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
148
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
149 if (*str == '~')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
150 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
151 if (*(str + 1) == '/' || *(str + 1) == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
152 pw = getpwuid (geteuid ());
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
153 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
154 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
155 if ((pos = strchr (str, '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
156 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
157
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
158 pw = getpwnam (str + 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
159
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
160 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
161 *pos = '/';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
162 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
163 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
164
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
165 endpos = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
166 newstr = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
167 while ((pos = strchr (endpos, '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
168 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
169 pos++;
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
170
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
171 for (ntoken = pos; *ntoken == '/'; ntoken++);
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
172
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
173 if ((endpos = strchr (ntoken, '/')) == NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
174 endpos = pos + strlen (pos);
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
175
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
176 tempchar = *endpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
177 *endpos = '\0';
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
178
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
179 if (strcmp (ntoken, "..") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
180 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
181 if (newstr != NULL && (prevpos = strrchr (newstr, '/')) != NULL)
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
182 {
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
183 *prevpos = '\0';
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
184 if (*newstr == '\0')
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
185 {
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
186 g_free (newstr);
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
187 newstr = NULL;
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
188 }
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
189 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
190 }
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
191 else if (strcmp (ntoken, ".") != 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
192 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
193 if (newstr == NULL)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
194 newstr = g_strdup (pos - 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
195 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
196 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
197 tempstr = g_strconcat (newstr, pos - 1, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
198 g_free (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
199 newstr = tempstr;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
200 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
201 }
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
202
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
203 *endpos = tempchar;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
204 if (*endpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
205 break;
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
206
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
207 endpos = pos + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
208 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
209
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
210 if (endpos != NULL && *endpos != '\0' && newstr == NULL)
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
211 {
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
212 if (strcmp (endpos, "..") == 0)
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
213 newstr = g_strdup ("/");
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
214 else
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
215 newstr = g_strdup (endpos);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
216 }
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
217
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
218 if (newstr == NULL || *newstr == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
219 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
220 if (newstr != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
221 g_free (newstr);
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
222
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
223 newstr = g_strdup ("/");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
224 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
225
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
226 g_free (str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
227
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
228 if (pw != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
229 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
230 if ((pos = strchr (newstr, '/')) == NULL)
124
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
231 str = g_strdup (pw->pw_dir);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
232 else
555
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
233 str = gftp_build_path (request, pw->pw_dir, pos, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
234
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
235 g_free (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
236 newstr = str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
237 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
238
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
239 return (newstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
240 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
241
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
242
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
243 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
244 make_nonnull (char **str)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
245 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
246 if (*str == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
247 *str = g_malloc0 (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
248 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
249
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
250
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
251 /* FIXME - Possible use the libpcre library. If it isn't used, then clean
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
252 this function up some more. */
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
253 int
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
254 gftp_match_filespec (gftp_request * request, const char *filename,
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
255 const char *filespec)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
256 {
374
d207b8241e96 2003-1-21 Brian Masney <masneyb@gftp.org>
masneyb
parents: 372
diff changeset
257 const char *filepos, *wcpos, *pos;
d207b8241e96 2003-1-21 Brian Masney <masneyb@gftp.org>
masneyb
parents: 372
diff changeset
258 char search_str[20], *newpos;
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
259 intptr_t show_hidden_files;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
260 size_t len, curlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
261
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
262 if (filename == NULL || *filename == '\0' ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
263 filespec == NULL || *filespec == '\0')
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
264 return (1);
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
265
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
266 gftp_lookup_request_option (request, "show_hidden_files", &show_hidden_files);
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
267 if (!show_hidden_files && *filename == '.' && strcmp (filename, "..") != 0)
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
268 return (0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
269
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
270 filepos = filename;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
271 wcpos = filespec;
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
272 while (1)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
273 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
274 if (*wcpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
275 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
276 else if (*filepos == '\0')
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
277 return (0);
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
278 else if (*wcpos == '?')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
279 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
280 wcpos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
281 filepos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
282 }
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
283 else if (*wcpos == '*' && *(wcpos+1) == '\0')
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
284 return (1);
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
285 else if (*wcpos == '*')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
286 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
287 len = sizeof (search_str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
288 for (pos = wcpos + 1, newpos = search_str, curlen = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
289 *pos != '*' && *pos != '?' && *pos != '\0' && curlen < len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
290 curlen++, *newpos++ = *pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
291 *newpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
292
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
293 if ((filepos = strstr (filepos, search_str)) == NULL)
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
294 return (0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
295 wcpos += curlen + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
296 filepos += curlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
297 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
298 else if(*wcpos++ != *filepos++)
821
b282e346bd25 2006-10-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 779
diff changeset
299 return (0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
300 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
301 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
302
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
303
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
304 static void
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
305 gftp_info (void)
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
306 {
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
307 int i;
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
308
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
309 printf ("%s\n", gftp_version);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
310
307
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
311 #ifdef _REENTRANT
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
312 printf ("#define _REENTRANT\n");
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
313 #endif
76c912483d1d 2003-11-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 303
diff changeset
314
289
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
315 #ifdef _GNU_SOURCE
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
316 printf ("#define _GNU_SOURCE\n");
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
317 #endif
5f66f09e5194 2003-10-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 260
diff changeset
318
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
319 #ifdef _LARGEFILE_SOURCE
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
320 printf ("#define _LARGEFILE_SOURCE\n");
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
321 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
322
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
323 #ifdef _FILE_OFFSET_BITS
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
324 printf ("#define _FILE_OFFSET_BITS %d\n", _FILE_OFFSET_BITS);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
325 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
326
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
327 printf ("sizeof (off_t) = %d\n", sizeof (off_t));
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
328
926
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
329 #ifdef HAVE_INTL_PRINTF
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
330 printf ("#define HAVE_INTL_PRINTF\n");
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
331 #endif
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
332
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
333 printf ("GFTP_OFF_T_HEX_PRINTF_MOD = %s\n", GFTP_OFF_T_HEX_PRINTF_MOD);
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
334 printf ("GFTP_OFF_T_INTL_PRINTF_MOD = %s\n", GFTP_OFF_T_INTL_PRINTF_MOD);
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
335 printf ("GFTP_OFF_T_PRINTF_MOD = %s\n", GFTP_OFF_T_PRINTF_MOD);
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
336 printf ("GFTP_OFF_T_11PRINTF_MOD = %s\n", GFTP_OFF_T_11PRINTF_MOD);
7b5aa0420fe2 2007-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 885
diff changeset
337
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
338 #ifdef HAVE_GETADDRINFO
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
339 printf ("#define HAVE_GETADDRINFO\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
340 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
341
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
342 #ifdef HAVE_GAI_STRERROR
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
343 printf ("#define HAVE_GAI_STRERROR\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
344 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
345
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
346 #ifdef HAVE_GETDTABLESIZE
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
347 printf ("#define HAVE_GETDTABLESIZE\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
348 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
349
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
350 #ifdef G_HAVE_GINT64
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
351 printf ("#define G_HAVE_GINT64\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
352 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
353
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
354 #ifdef HAVE_LIBREADLINE
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
355 printf ("#define HAVE_LIBREADLINE\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
356 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
357
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
358 #ifdef ENABLE_NLS
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
359 printf ("#define ENABLE_NLS\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
360 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
361
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
362 #ifdef HAVE_GETTEXT
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
363 printf ("#define HAVE_GETTEXT\n");
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
364 #endif
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
365
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
366 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
367 GLIB_MICRO_VERSION);
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
368
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
369 printf ("PTY implementation: %s\n", gftp_get_pty_impl ());
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
370
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
371 #ifdef USE_SSL
653
07dc89f95076 2004-12-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 612
diff changeset
372 printf ("OpenSSL version: %s\n", OPENSSL_VERSION_TEXT);
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
373 #endif
260
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
374
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
375 printf ("Enabled protocols: ");
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
376 for (i=0; gftp_protocols[i].name != NULL; i++)
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
377 {
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
378 printf ("%s ", gftp_protocols[i].name);
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
379 }
71d0098c3735 2003-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 249
diff changeset
380 printf ("\n");
243
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
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
383
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
384 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
385 gftp_parse_command_line (int *argc, char ***argv)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
386 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
387 if (*argc > 1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
388 {
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
389 if (strcmp (argv[0][1], "--help") == 0 ||
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
390 strcmp (argv[0][1], "-h") == 0)
349
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
391 {
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
392 gftp_usage ();
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
393 exit (0);
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
394 }
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
395 else if (strcmp (argv[0][1], "--version") == 0 ||
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
396 strcmp (argv[0][1], "-v") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
397 {
349
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
398 printf ("%s\n", gftp_version);
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
399 exit (0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
400 }
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
401 else if (strcmp (argv[0][1], "--info") == 0)
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
402 {
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
403 gftp_info ();
349
3fccdc9eb16f 2003-1-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 330
diff changeset
404 exit (0);
243
b42e7233533a 2003-7-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 227
diff changeset
405 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
406 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
407 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
408 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
409
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
410
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
411 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
412 gftp_usage (void)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
413 {
356
7cb3327f96f7 2003-1-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 349
diff changeset
414 printf (_("usage: gftp " GFTP_URL_USAGE "\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
415 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
416 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
417
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
418
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
419 gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
420 string_hash_compare (gconstpointer path1, gconstpointer path2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
421 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
422 return (strcmp ((char *) path1, (char *) path2) == 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
423 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
424
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
425
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
426 guint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
427 string_hash_function (gconstpointer key)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
428 {
59
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
429 guint ret;
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
430 int i;
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
431
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
432 ret = 0;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
433 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
434 ret += ((char *) key)[i];
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
435
618423504fe0 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 58
diff changeset
436 return (ret);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
437 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
438
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
439
852
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
440 gint
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
441 uint_hash_compare (gconstpointer path1, gconstpointer path2)
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
442 {
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
443 return (GPOINTER_TO_UINT (path1) == GPOINTER_TO_UINT (path2));
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
444 }
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
445
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
446
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
447 guint
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
448 uint_hash_function (gconstpointer key)
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
449 {
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
450 return (GPOINTER_TO_UINT (key));
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
451 }
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
452
5e3005923374 2006-11-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 845
diff changeset
453
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
454 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
455 free_file_list (GList * filelist)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
456 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
457 gftp_file * tempfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
458 GList * templist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
459
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
460 templist = filelist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
461 while (templist != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
462 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
463 tempfle = templist->data;
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
464 templist->data = NULL;
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
465
598
fa0838b22b14 2004-10-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 555
diff changeset
466 gftp_file_destroy (tempfle, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
467 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
468 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
469 g_list_free (filelist);
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 gftp_file *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
474 copy_fdata (gftp_file * fle)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
475 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
476 gftp_file * newfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
477
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
478 newfle = g_malloc0 (sizeof (*newfle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
479 memcpy (newfle, fle, sizeof (*newfle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
480
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
481 if (fle->file)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
482 newfle->file = g_strdup (fle->file);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
483
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
484 if (fle->user)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
485 newfle->user = g_strdup (fle->user);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
486
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
487 if (fle->group)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
488 newfle->group = g_strdup (fle->group);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
489
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
490 if (fle->destfile)
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
491 newfle->destfile = g_strdup (fle->destfile);
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
492
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
493 newfle->user_data = NULL;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
494 return (newfle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
495 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
496
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
497
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
498 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
499 compare_request (gftp_request * request1, gftp_request * request2,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
500 int compare_dirs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
501 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
502 char *strarr[3][2];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
503 int i, ret;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
504
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
505 ret = 1;
87
6df043359b41 2003-1-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 84
diff changeset
506 if (request1->protonum == request2->protonum &&
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
507 request1->port == request2->port)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
508 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
509 strarr[0][0] = request1->hostname;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
510 strarr[0][1] = request2->hostname;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
511 strarr[1][0] = request1->username;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
512 strarr[1][1] = request2->username;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
513 if (compare_dirs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
514 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
515 strarr[2][0] = request1->directory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
516 strarr[2][1] = request2->directory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
517 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
518 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
519 strarr[2][0] = strarr[2][1] = "";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
520
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
521 for (i = 0; i < 3; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
522 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
523 if ((strarr[i][0] && !strarr[i][1]) ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
524 (!strarr[i][0] && strarr[i][1]))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
525 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
526 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
527 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
528 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
529
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
530 if (strarr[i][0] && strarr[i][1] &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
531 strcmp (strarr[i][0], strarr[i][1]) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
532 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
533 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
534 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
535 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
536 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
537 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
538 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
539 ret = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
540 return (ret);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
541 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
542
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
543
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
544 gftp_transfer *
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
545 gftp_tdata_new (void)
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
546 {
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
547 #if GLIB_MAJOR_VERSION == 1
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
548 static GStaticMutex init_mutex = G_STATIC_MUTEX_INIT;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
549 #endif
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
550 gftp_transfer * tdata;
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
551
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
552 tdata = g_malloc0 (sizeof (*tdata));
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
553
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
554 #if GLIB_MAJOR_VERSION == 1
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
555 tdata->statmutex = init_mutex;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
556 tdata->structmutex = init_mutex;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
557 #else
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
558 g_static_mutex_init (&tdata->statmutex);
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
559 g_static_mutex_init (&tdata->structmutex);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
560 #endif
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
561
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
562 return (tdata);
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
563 }
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
564
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
565
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
566 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
567 free_tdata (gftp_transfer * tdata)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
568 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
569 if (tdata->fromreq != NULL)
67
aa971a4bb16f 2002-11-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 66
diff changeset
570 gftp_request_destroy (tdata->fromreq, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
571 if (tdata->toreq != NULL)
67
aa971a4bb16f 2002-11-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 66
diff changeset
572 gftp_request_destroy (tdata->toreq, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
573 free_file_list (tdata->files);
876
2d4e6fca8e7c 2007-2-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 852
diff changeset
574 if (tdata->thread_id != NULL)
2d4e6fca8e7c 2007-2-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 852
diff changeset
575 g_free (tdata->thread_id);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
576 g_free (tdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
577 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
578
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
579
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
580 gftp_request *
368
af541d789f4c 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 356
diff changeset
581 gftp_copy_request (gftp_request * req)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
582 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
583 gftp_request * newreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
584
66
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
585 newreq = gftp_request_new ();
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
586
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
587 if (req->hostname)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
588 newreq->hostname = g_strdup (req->hostname);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
589 if (req->username)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
590 newreq->username = g_strdup (req->username);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
591 if (req->password)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
592 newreq->password = g_strdup (req->password);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
593 if (req->account)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
594 newreq->account = g_strdup (req->account);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
595 if (req->directory)
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 41
diff changeset
596 newreq->directory = g_strdup (req->directory);
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
597 if (req->url_prefix)
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
598 newreq->url_prefix = g_strdup (req->url_prefix);
66
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
599 newreq->port = req->port;
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
600 newreq->use_proxy = req->use_proxy;
cd3e457cbc85 2002-11-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 65
diff changeset
601 newreq->logging_function = req->logging_function;
547
34a3f10d8bae 2004-9-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 535
diff changeset
602 newreq->ai_family = req->ai_family;
777
f6a3f5677339 2006-7-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 765
diff changeset
603
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
604 #if defined (HAVE_GETADDRINFO) && defined (HAVE_GAI_STRERROR)
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
605 if (req->remote_addr == NULL)
777
f6a3f5677339 2006-7-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 765
diff changeset
606 {
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
607 newreq->remote_addr = NULL;
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
608 newreq->remote_addr_len = 0;
777
f6a3f5677339 2006-7-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 765
diff changeset
609 }
f6a3f5677339 2006-7-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 765
diff changeset
610 else
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
611 {
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
612 newreq->remote_addr = g_malloc0 (req->remote_addr_len);
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
613 memcpy (newreq->remote_addr, req->remote_addr, req->remote_addr_len);
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
614 newreq->remote_addr_len = req->remote_addr_len;
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
615 }
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
616 #endif
151
2f15b3000dbc 2003-4-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 146
diff changeset
617
368
af541d789f4c 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 356
diff changeset
618 gftp_copy_local_options (&newreq->local_options_vars,
af541d789f4c 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 356
diff changeset
619 &newreq->local_options_hash,
429
1d45758e5cf5 2004-3-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 422
diff changeset
620 &newreq->num_local_options_vars,
368
af541d789f4c 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 356
diff changeset
621 req->local_options_vars,
af541d789f4c 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 356
diff changeset
622 req->num_local_options_vars);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
623
451
83cfffb2878a 2004-3-26 Brian Masney <masneyb@gftp.org>
masneyb
parents: 429
diff changeset
624 if (req->init != NULL && req->init (newreq) < 0)
173
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
625 {
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
626 gftp_request_destroy (newreq, 1);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
627 return (NULL);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 168
diff changeset
628 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
629
309
cc2eeb30b793 2003-11-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 307
diff changeset
630 gftp_copy_param_options (newreq, req);
cc2eeb30b793 2003-11-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 307
diff changeset
631
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
632 return (newreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
633 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
634
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
635
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
636 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
637 gftp_file_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
638 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
639 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
640
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
641 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
642 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
643 return (strcasecmp (f1->file, f2->file));
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
644 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
645
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
646
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
647 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
648 gftp_file_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
649 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
650 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
651 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
652
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
653 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
654 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
655 ret = strcasecmp (f1->file, f2->file);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
656 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
657 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
658
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
659
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
660 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
661 gftp_user_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
662 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
663 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
664
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
665 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
666 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
667 return (strcasecmp (f1->user, f2->user));
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
668 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
669
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
670
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
671 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
672 gftp_user_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
673 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
674 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
675 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
676
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
677 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
678 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
679 ret = strcasecmp (f1->user, f2->user);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
680 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
681 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
682
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
683
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
684 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
685 gftp_group_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
686 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
687 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
688
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
689 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
690 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
691 return (strcasecmp (f1->group, f2->group));
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
692 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
693
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
694
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
695 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
696 gftp_group_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
697 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
698 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
699 gint ret;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
700
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
701 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
702 f2 = b;
535
8d310e2fd570 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 532
diff changeset
703 ret = strcasecmp (f1->group, f2->group);
84
7ef60ce2bdb2 2002-12-29 Brian Masney <masneyb@gftp.org>
masneyb
parents: 80
diff changeset
704 return (ret * -1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
705 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
706
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
707
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
708 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
709 gftp_attribs_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
710 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
711 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
712
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
713 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
714 f2 = b;
499
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
715 if (f1->st_mode < f2->st_mode)
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
716 return (-1);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
717 else if (f1->st_mode == f2->st_mode)
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
718 return (0);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
719 else
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
720 return (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_attribs_sort_function_ds (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;
499
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
731 if (f1->st_mode < f2->st_mode)
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
732 return (1);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
733 else if (f1->st_mode == f2->st_mode)
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
734 return (0);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
735 else
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
736 return (-1);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
737 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
738
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
739
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
740 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
741 gftp_size_sort_function_as (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
742 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
743 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
744
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
745 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
746 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
747 if (f1->size < f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
748 return (-1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
749 else if (f1->size == f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
750 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
751 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
752 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
753 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
754
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
755
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
756 static gint
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
757 gftp_size_sort_function_ds (gconstpointer a, gconstpointer b)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
758 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
759 const gftp_file * f1, * f2;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
760
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
761 f1 = a;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
762 f2 = b;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
763 if (f1->size < f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
764 return (1);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
765 else if (f1->size == f2->size)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
766 return (0);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
767 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
768 return (-1);
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_datetime_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->datetime < f2->datetime)
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->datetime == f2->datetime)
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_datetime_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->datetime < f2->datetime)
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->datetime == f2->datetime)
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 GList *
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
805 gftp_sort_filelist (GList * filelist, int column, int asds)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
806 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
807 GList * files, * dirs, * dotdot, * tempitem, * insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
808 GCompareFunc sortfunc;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
809 gftp_file * tempfle;
325
0fcc6468a0af 2003-12-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 320
diff changeset
810 intptr_t sort_dirs_first;
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
811
422
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
812 if (filelist == NULL) /* nothing to sort */
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
813 return (filelist);
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
814
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
815 files = dirs = dotdot = NULL;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
816
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
817 if (column == GFTP_SORT_COL_FILE)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
818 sortfunc = asds ? gftp_file_sort_function_as : gftp_file_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
819 else if (column == GFTP_SORT_COL_SIZE)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
820 sortfunc = asds ? gftp_size_sort_function_as : gftp_size_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
821 else if (column == GFTP_SORT_COL_USER)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
822 sortfunc = asds ? gftp_user_sort_function_as : gftp_user_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
823 else if (column == GFTP_SORT_COL_GROUP)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
824 sortfunc = asds ?
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
825 gftp_group_sort_function_as : gftp_group_sort_function_ds;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
826 else if (column == GFTP_SORT_COL_DATETIME)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
827 sortfunc = asds ?
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
828 gftp_datetime_sort_function_as : gftp_datetime_sort_function_ds;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
829 else if (column == GFTP_SORT_COL_ATTRIBS)
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
830 sortfunc = asds ?
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
831 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
832 else /* Don't sort */
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
833 return (filelist);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
834
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
835 sort_dirs_first = 1;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 102
diff changeset
836 gftp_lookup_global_option ("sort_dirs_first", &sort_dirs_first);
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
837
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
838 for (tempitem = filelist; tempitem != NULL; )
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
839 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
840 tempfle = tempitem->data;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
841 insitem = tempitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
842 tempitem = tempitem->next;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
843 insitem->next = NULL;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
844
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
845 if (dotdot == NULL && strcmp (tempfle->file, "..") == 0)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
846 dotdot = insitem;
499
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
847 else if (sort_dirs_first && S_ISDIR (tempfle->st_mode))
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
848 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
849 insitem->next = dirs;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
850 dirs = insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
851 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
852 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
853 {
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
854 insitem->next = files;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
855 files = insitem;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
856 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
857 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
858
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
859 if (dirs != NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
860 dirs = g_list_sort (dirs, sortfunc);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
861 if (files != NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
862 files = g_list_sort (files, sortfunc);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
863
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
864 filelist = dotdot;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
865
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
866 if (filelist == NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
867 filelist = dirs;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
868 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
869 filelist = g_list_concat (filelist, dirs);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
870
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
871 if (filelist == NULL)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
872 filelist = files;
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
873 else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
874 filelist = g_list_concat (filelist, files);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
875
39
474d562c7268 2002-10-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
876 /* 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
877 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
878 filelist->prev = NULL;
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
879 return (filelist);
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
880 }
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 14
diff changeset
881
125
b875de05c22d 2003-4-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 124
diff changeset
882
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
883 char *
830
afbe37351940 2006-10-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 821
diff changeset
884 gftp_gen_ls_string (gftp_request * request, gftp_file * fle,
afbe37351940 2006-10-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 821
diff changeset
885 char *file_prefixstr, char *file_suffixstr)
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
886 {
830
afbe37351940 2006-10-19 Brian Masney <masneyb@gftp.org>
masneyb
parents: 821
diff changeset
887 char *tempstr1, *tempstr2, *ret, tstr[50], *attribs, *utf8;
838
57aad6d4b304 2006-10-31 Brian Masney <masneyb@gftp.org>
masneyb
parents: 830
diff changeset
888 size_t destlen;
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
889 struct tm *lt;
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
890 time_t t;
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
891
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
892 lt = localtime (&fle->datetime);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
893
499
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
894 attribs = gftp_convert_attributes_from_mode_t (fle->st_mode);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
895 tempstr1 = g_strdup_printf ("%10s %8s %8s", attribs, fle->user, fle->group);
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
896 g_free (attribs);
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
897
499
39e9945288ea 2004-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 483
diff changeset
898 if (GFTP_IS_SPECIAL_DEVICE (fle->st_mode))
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
899 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
900 else
532
bccfdbfaac00 2004-8-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 516
diff changeset
901 tempstr2 = g_strdup_printf (GFTP_OFF_T_11PRINTF_MOD, fle->size);
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
902
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
903 time (&t);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
904
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
905 if (fle->datetime > t || t - 3600*24*90 > fle->datetime)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
906 strftime (tstr, sizeof (tstr), "%b %d %Y", lt);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
907 else
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
908 strftime (tstr, sizeof (tstr), "%b %d %H:%M", lt);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
909
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
910 if (file_prefixstr == NULL)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
911 file_prefixstr = "";
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
912 if (file_suffixstr == NULL)
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
913 file_suffixstr = "";
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
914
845
8263cc35c027 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 843
diff changeset
915 utf8 = gftp_string_from_utf8 (request, 1, fle->file, &destlen);
843
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
916 if (utf8 != NULL)
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
917 {
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
918 ret = g_strdup_printf ("%s %s %s %s%s%s", tempstr1, tempstr2, tstr,
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
919 file_prefixstr, utf8, file_suffixstr);
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
920 g_free (utf8);
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
921 }
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
922 else
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
923 ret = g_strdup_printf ("%s %s %s %s%s%s", tempstr1, tempstr2, tstr,
32dbed7e0dc4 2006-11-2 Brian Masney <masneyb@gftp.org>
masneyb
parents: 838
diff changeset
924 file_prefixstr, fle->file, file_suffixstr);
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
925
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
926 g_free (tempstr1);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
927 g_free (tempstr2);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
928
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
929 return (ret);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
930 }
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
931
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
932
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
933 char *
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
934 base64_encode (char *str)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
935 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
936
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
937 /* The standard to Base64 encoding can be found in RFC2045 */
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
938
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
939 char *newstr, *newpos, *fillpos, *pos;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
940 unsigned char table[64], encode[3];
460
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
941 size_t slen, num;
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
942 int i;
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
943
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
944 for (i = 0; i < 26; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
945 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
946 table[i] = 'A' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
947 table[i + 26] = 'a' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
948 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
949
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
950 for (i = 0; i < 10; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
951 table[i + 52] = '0' + i;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
952
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
953 table[62] = '+';
207
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
954 table[63] = '/';
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
955
460
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
956 slen = strlen (str);
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
957 num = slen / 3;
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
958 if (slen % 3 > 0)
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
959 num++;
460
075f89b4395c 2004-4-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 451
diff changeset
960
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
961 newstr = g_malloc0 ((gulong) num * 4 + 1);
168
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
962 newstr[num * 4] = '\0';
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
963 newpos = newstr;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
964
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
965 pos = str;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
966 while (*pos != '\0')
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
967 {
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
968 memset (encode, 0, sizeof (encode));
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
969 for (i = 0; i < 3 && *pos != '\0'; i++)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
970 encode[i] = *pos++;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
971
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
972 fillpos = newpos;
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
973 *newpos++ = table[encode[0] >> 2];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
974 *newpos++ = table[(encode[0] & 3) << 4 | encode[1] >> 4];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
975 *newpos++ = table[(encode[1] & 0xF) << 2 | encode[2] >> 6];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
976 *newpos++ = table[encode[2] & 0x3F];
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
977 while (i < 3)
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
978 fillpos[++i] = '=';
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
979 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
980 return (newstr);
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
981 }
c505d9ba9d53 2003-6-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 162
diff changeset
982
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
983
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
984 void
609
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
985 gftp_free_bookmark (gftp_bookmarks_var * entry, int free_node)
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
986 {
609
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
987 gftp_bookmarks_var * tempentry;
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
988
612
08e7b5186eb8 2004-11-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 609
diff changeset
989 if (entry->path)
08e7b5186eb8 2004-11-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 609
diff changeset
990 g_free (entry->path);
08e7b5186eb8 2004-11-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 609
diff changeset
991 if (entry->oldpath)
08e7b5186eb8 2004-11-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 609
diff changeset
992 g_free (entry->oldpath);
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
993 if (entry->hostname)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
994 g_free (entry->hostname);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
995 if (entry->remote_dir)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
996 g_free (entry->remote_dir);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
997 if (entry->local_dir)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
998 g_free (entry->local_dir);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
999 if (entry->user)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1000 g_free (entry->user);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1001 if (entry->pass)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1002 g_free (entry->pass);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1003 if (entry->acct)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1004 g_free (entry->acct);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1005 if (entry->protocol)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1006 g_free (entry->protocol);
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1007
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1008 if (entry->local_options_vars != NULL)
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1009 {
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1010 gftp_config_free_options (entry->local_options_vars,
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1011 entry->local_options_hash,
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1012 entry->num_local_options_vars);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1013
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1014 entry->local_options_vars = NULL;
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1015 entry->local_options_hash = NULL;
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1016 entry->num_local_options_vars = 0;
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1017 }
609
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1018
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1019 if (free_node)
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1020 g_free (entry);
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1021 else
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1022 {
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1023 tempentry = entry->children;
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1024 memset (entry, 0, sizeof (*entry));
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1025 entry->children = tempentry;
d97e985f5dbe 2004-11-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 598
diff changeset
1026 }
199
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1027 }
75eebb3b0592 2003-6-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 184
diff changeset
1028
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1029
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1030 void
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1031 gftp_shutdown (void)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1032 {
203
95e669973a84 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 201
diff changeset
1033 #ifdef WITH_DMALLOC
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1034 gftp_config_vars * cv;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1035 GList * templist;
203
95e669973a84 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 201
diff changeset
1036 #endif
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1037
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1038 if (gftp_logfd != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1039 fclose (gftp_logfd);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1040
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1041 gftp_clear_cache_files ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1042
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1043 if (gftp_configuration_changed)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1044 gftp_write_config_file ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1045
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1046 #ifdef WITH_DMALLOC
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1047 if (gftp_global_options_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1048 g_hash_table_destroy (gftp_global_options_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1049
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1050 if (gftp_config_list_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1051 g_hash_table_destroy (gftp_config_list_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1052
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1053 if (gftp_bookmarks_htable != NULL)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1054 g_hash_table_destroy (gftp_bookmarks_htable);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1055
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1056 for (templist = gftp_options_list;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1057 templist != NULL;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1058 templist = templist->next)
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1059 {
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1060 cv = templist->data;
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1061 gftp_config_free_options (cv, NULL, -1);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1062 }
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1063
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1064 gftp_bookmarks_destroy (gftp_bookmarks);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1065
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1066 dmalloc_shutdown ();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1067 #endif
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1068
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1069 exit (0);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1070 }
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 199
diff changeset
1071
207
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1072
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1073 GList *
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1074 get_next_selection (GList * selection, GList ** list, int *curnum)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1075 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1076 gftp_file * tempfle;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1077 int i, newpos;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1078
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1079 newpos = GPOINTER_TO_INT (selection->data);
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1080 i = *curnum - newpos;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1081
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1082 if (i < 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1083 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1084 while (i != 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1085 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1086 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1087 if (tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1088 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1089 ++*curnum;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1090 i++;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1091 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1092 *list = (*list)->next;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1093 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1094 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1095 else if (i > 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1096 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1097 while (i != 0)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1098 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1099 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1100 if (tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1101 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1102 --*curnum;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1103 i--;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1104 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1105 *list = (*list)->prev;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1106 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1107 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1108
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1109 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1110 while ((*list)->next && !tempfle->shown)
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1111 {
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1112 *list = (*list)->next;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1113 tempfle = (*list)->data;
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1114 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1115 return (selection->next);
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1116 }
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1117
cf4098008615 2003-7-1 Brian Masney <masneyb@gftp.org>
masneyb
parents: 204
diff changeset
1118
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1119 char *
555
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
1120 gftp_build_path (gftp_request * request, const char *first_element, ...)
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1121 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1122 const char *element;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1123 size_t len, retlen;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1124 int add_separator;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1125 va_list args;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1126 char *ret;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1127
245
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1128 g_return_val_if_fail (first_element != NULL, NULL);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1129
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1130 ret = g_strdup (first_element);
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1131 retlen = strlen (ret);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1132
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1133 va_start (args, first_element);
247
f41650dc896c 2003-8-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 245
diff changeset
1134 for (element = va_arg (args, char *);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1135 element != NULL;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1136 element = va_arg (args, char *))
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1137 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1138 len = strlen (element);
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1139
422
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
1140 if (len == 0)
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
1141 continue;
38bfc112ab46 2004-3-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 378
diff changeset
1142
369
c63208a1f0f1 2003-1-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 368
diff changeset
1143 if (retlen > 0 && (ret[retlen - 1] == '/' || element[0] == '/'))
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1144 add_separator = 0;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1145 else
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1146 {
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1147 add_separator = 1;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1148 len++;
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1149 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1150
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1151 retlen += len;
765
d553d14a2565 2006-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 682
diff changeset
1152 ret = g_realloc (ret, (gulong) retlen + 1);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1153
555
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
1154 /* Don't append a / for VMS servers... */
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
1155 if (add_separator &&
7f54d0c0edbc 2004-9-17 Brian Masney <masneyb@gftp.org>
masneyb
parents: 547
diff changeset
1156 (request == NULL || request->server_type != GFTP_DIRTYPE_VMS))
245
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1157 strncat (ret, "/", retlen);
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1158
41af60bc1f88 2003-8-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 244
diff changeset
1159 strncat (ret, element, retlen);
227
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1160 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1161
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1162 return (ret);
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1163 }
a85a097bbb02 2003-7-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 220
diff changeset
1164
244
afbbc72b73e2 2003-8-3 Brian Masney <masneyb@gftp.org>
masneyb
parents: 243
diff changeset
1165
290
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1166 void
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1167 gftp_locale_init (void)
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1168 {
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1169 #ifdef HAVE_GETTEXT
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1170
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1171 setlocale (LC_ALL, "");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1172 textdomain ("gftp");
320
853981bbd4d7 2003-11-30 Brian Masney <masneyb@gftp.org>
masneyb
parents: 309
diff changeset
1173 bindtextdomain ("gftp", LOCALE_DIR);
290
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1174
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1175 #if GLIB_MAJOR_VERSION > 1
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1176 bind_textdomain_codeset ("gftp", "UTF-8");
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1177 #endif
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1178
320
853981bbd4d7 2003-11-30 Brian Masney <masneyb@gftp.org>
masneyb
parents: 309
diff changeset
1179 #endif /* HAVE_GETTEXT */
290
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1180 }
6e255984c0b0 2003-10-18 Brian Masney <masneyb@gftp.org>
masneyb
parents: 289
diff changeset
1181
330
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1182 /* Very primary encryption/decryption to make the passwords unreadable
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1183 with 'cat ~/.gftp/bookmarks'.
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1184
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1185 Each character is separated in two nibbles. Then each nibble is stored
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1186 under the form 01xxxx01. The resulted string is prefixed by a '$'.
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1187 */
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1188
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1189
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1190 char *
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1191 gftp_scramble_password (const char *password)
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1192 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1193 char *newstr, *newpos;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1194
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1195 if (strcmp (password, "@EMAIL@") == 0)
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1196 return (g_strdup (password));
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1197
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
1198 newstr = g_malloc0 ((gulong) strlen (password) * 2 + 2);
330
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1199 newpos = newstr;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1200
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1201 *newpos++ = '$';
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1202
765
d553d14a2565 2006-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 682
diff changeset
1203 while (*password != '\0')
330
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1204 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1205 *newpos++ = ((*password >> 2) & 0x3c) | 0x41;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1206 *newpos++ = ((*password << 2) & 0x3c) | 0x41;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1207 password++;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1208 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1209 *newpos = 0;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1210
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1211 return (newstr);
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1212 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1213
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1214
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1215 char *
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1216 gftp_descramble_password (const char *password)
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1217 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1218 const char *passwordpos;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1219 char *newstr, *newpos;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1220 int error;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1221
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1222 if (*password != '$')
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1223 return (g_strdup (password));
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1224
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1225 passwordpos = password + 1;
944
5b681cba67b2 2008-01-24 Brian Masney <masneyb@gftp.org>
masneyb
parents: 926
diff changeset
1226 newstr = g_malloc0 ((gulong) strlen (passwordpos) / 2 + 1);
330
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1227 newpos = newstr;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1228
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1229 error = 0;
765
d553d14a2565 2006-7-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 682
diff changeset
1230 while (*passwordpos != '\0' && *(passwordpos + 1) != '\0')
330
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1231 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1232 if ((*passwordpos & 0xc3) != 0x41 ||
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1233 (*(passwordpos + 1) & 0xc3) != 0x41)
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1234 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1235 error = 1;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1236 break;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1237 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1238
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1239 *newpos++ = ((*passwordpos & 0x3c) << 2) |
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1240 ((*(passwordpos + 1) & 0x3c) >> 2);
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1241
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1242 passwordpos += 2;
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1243 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1244
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1245 if (error)
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1246 {
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1247 g_free (newstr);
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1248 return (g_strdup (password));
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1249 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1250
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1251 *newpos = '\0';
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1252 return (newstr);
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1253 }
532eb171d5c2 2003-12-7 Brian Masney <masneyb@gftp.org>
masneyb
parents: 328
diff changeset
1254
378
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1255
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1256 int
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1257 gftp_get_transfer_action (gftp_request * request, gftp_file * fle)
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1258 {
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1259 intptr_t overwrite_default;
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1260
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1261 gftp_lookup_request_option (request, "overwrite_default", &overwrite_default);
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1262
682
9b68dc473807 2005-2-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 653
diff changeset
1263 /* FIXME - add code to compare the file times and make a decision based
9b68dc473807 2005-2-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 653
diff changeset
1264 on that. Also if overwrite_default is enabled and the file sizes/dates are
9b68dc473807 2005-2-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 653
diff changeset
1265 the same, then skip the file */
9b68dc473807 2005-2-4 Brian Masney <masneyb@gftp.org>
masneyb
parents: 653
diff changeset
1266
378
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1267 if (overwrite_default)
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1268 fle->transfer_action = GFTP_TRANS_ACTION_OVERWRITE;
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1269 else if (fle->startsize == fle->size)
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1270 fle->transfer_action = GFTP_TRANS_ACTION_SKIP;
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1271 else if (fle->startsize > fle->size)
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1272 fle->transfer_action = GFTP_TRANS_ACTION_OVERWRITE;
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1273 else
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1274 fle->transfer_action = GFTP_TRANS_ACTION_RESUME;
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1275
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1276 return (fle->transfer_action);
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1277 }
712d3810f4e1 2003-1-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 374
diff changeset
1278
483
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1279
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1280 char *
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1281 gftp_get_share_dir (void)
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1282 {
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1283 static char *gftp_share_dir = NULL;
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1284 char *envval;
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1285
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1286 if (gftp_share_dir == NULL)
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1287 {
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1288 envval = getenv ("GFTP_SHARE_DIR");
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1289
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1290 if (envval != NULL && *envval != '\0')
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1291 gftp_share_dir = g_strdup (envval);
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1292 else
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1293 gftp_share_dir = SHARE_DIR;
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1294 }
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1295
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1296 return (gftp_share_dir);
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1297 }
4376ffeab64e 2004-6-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 460
diff changeset
1298