Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk_1/ftprename.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1 by hirohitohigashi, Wed Feb 18 08:06:53 2009 UTC revision 7 by hirohitohigashi, Fri Feb 20 12:10:40 2009 UTC
# Line 50  Line 50 
50  #define NAME_TOO_LONG   2  #define NAME_TOO_LONG   2
51    
52    
53  int ftp_rename (int sck, char *old_name, char *new_name, int verbose) {  int ftp_rename (int sck, char *old_name, char *new_name, int verbose)
54    {
55        char buffer[1024]={'\0'};
56        char *buf;
57        int n;
58        struct timeval tm; //tv_sec - tv_usec
59        fd_set readfds;
60    
61          char buffer[1024]={'\0'};      buf = (char *)malloc(1024*sizeof(char));
         char *buf;  
         int n;  
62    
63          buf = (char *)malloc(1024*sizeof(char));      memset(buffer, 0x0, 1024);
64        memset(buf, 0x0, 1024);
65    
         memset(buffer, 0x0, 1024);  
         memset(buf, 0x0, 1024);  
66    
67    
68        if ( strlen(old_name) > 1015 ) {
 if ( strlen(old_name) > 1015 ) {  
69          free(buf);          free(buf);
70                    
71          return NAME_TOO_LONG;          return NAME_TOO_LONG;
72          }      }
73    
74  if ( strlen(new_name) > 1015 ) {      if ( strlen(new_name) > 1015 ) {
75          free(buf);          free(buf);
76                    
77          return NAME_TOO_LONG;          return NAME_TOO_LONG;
78          }      }
79    
80  sprintf(buffer, "RNFR %s\n", old_name);      sprintf(buffer, "RNFR %s\n", old_name);
81    
82          if (write(sck, buffer, strlen(buffer)) == -1) {      if (write(sck, buffer, strlen(buffer)) == -1) {
83    
84          if (verbose) {          if (verbose) {
85    
86                  if (errno == EBADF) {              if (errno == EBADF) {
87                  free(buf);                  free(buf);
88                                    
89                  fprintf(stderr, "Socket Descriptor Not Valid!\n");                  fprintf(stderr, "Socket Descriptor Not Valid!\n");
90                  return -1;                  return -1;
91                  } else if (errno == EIO) {              } else if (errno == EIO) {
92                  free(buf);                  free(buf);
93                                    
94                  fprintf(stderr, "I/O Error!\n");                  fprintf(stderr, "I/O Error!\n");
95                  return -1;                  return -1;
96                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
97                  free(buf);                  free(buf);
98                                    
99                  fprintf(stderr, "Signal Interrupted The write() Function\n");                  fprintf(stderr, "Signal Interrupted The write() Function\n");
100                  return -1;                  return -1;
101                  }              }
102    
103          } else {          } else {
104    
105                  if (errno == EBADF) {              if (errno == EBADF) {
106                  free(buf);                  free(buf);
107                                    
108                  return -1;                  return -1;
109                  } else if (errno == EIO) {              } else if (errno == EIO) {
110                  free(buf);                  free(buf);
111                                    
112                  return -1;                  return -1;
113                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
114                  free(buf);                  free(buf);
115                                    
116                  return -1;                  return -1;
117                  }              }
118          }          }
119    
120                  free(buf);          free(buf);
121                                    
122                  return -1;          return -1;
123    
124                  }      }
125    
126          struct timeval tm; //tv_sec - tv_usec      tm.tv_sec = 3;
127          fd_set readfds;      tm.tv_usec = 0;
         tm.tv_sec = 3;  
         tm.tv_usec = 0;  
128    
129          FD_ZERO(&readfds);      FD_ZERO(&readfds);
130                    
131          FD_SET(sck, &readfds);      FD_SET(sck, &readfds);
132    
133          if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {      if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {
134                  if (verbose) {          if (verbose) {
135                  perror("select()");              perror("select()");
136                  }          }
137                  free(buf);          free(buf);
138                                    
139                  return -1;          return -1;
140          } else {      } else {
141    
142                  if (FD_ISSET(sck, &readfds)) {          if (FD_ISSET(sck, &readfds)) {
143    
144                          if ( (n = recv(sck, buf, 1022, 0)) < 0)  {              if ( (n = recv(sck, buf, 1022, 0)) < 0)  {
145                          if (verbose) {                  if (verbose) {
146                          perror("recv()");                      perror("recv()");
147                          }                  }
148                          free(buf);                  free(buf);
149                                                    
150                          return -1;                  return -1;
151                          }              }
152    
153                          if (verbose)              if (verbose)
154                          printf("[Server] %s\n", buf);                  printf("[Server] %s\n", buf);
155                                                    
156                  }          }
157                  else {          else {
158                          if (verbose)              if (verbose)
159                          printf("[-] Timeout\n");                  printf("[-] Timeout\n");
160                                                    
161                          return -1;              return -1;
                 }  
162          }          }
163        }
164    
165          buf[n] = '\0';      buf[n] = '\0';
166    
167    
168          if (ftp_file_handler(buf, 0) != 0) {      if (ftp_file_handler(buf, 0) != 0) {
169                  free(buf);          free(buf);
170                                    
171                  return -1;          return -1;
172                  }      }
173    
174          memset(buffer, 0x0, 1024);      memset(buffer, 0x0, 1024);
175          memset(buf, 0x0, 1024);      memset(buf, 0x0, 1024);
176    
177  sprintf(buffer, "RNTO %s\n", new_name);      sprintf(buffer, "RNTO %s\n", new_name);
178    
179          if (write(sck, buffer, strlen(buffer)) == -1) {      if (write(sck, buffer, strlen(buffer)) == -1) {
180    
181          if (verbose) {          if (verbose) {
182    
183                  if (errno == EBADF) {              if (errno == EBADF) {
184                  free(buf);                  free(buf);
185                                    
186                  fprintf(stderr, "Socket Descriptor Not Valid!\n");                  fprintf(stderr, "Socket Descriptor Not Valid!\n");
187                  return -1;                  return -1;
188                  } else if (errno == EIO) {              } else if (errno == EIO) {
189                  free(buf);                  free(buf);
190                                    
191                  fprintf(stderr, "I/O Error!\n");                  fprintf(stderr, "I/O Error!\n");
192                  return -1;                  return -1;
193                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
194                  free(buf);                  free(buf);
195                                    
196                  fprintf(stderr, "Signal Interrupted The write() Function\n");                  fprintf(stderr, "Signal Interrupted The write() Function\n");
197                  return -1;                  return -1;
198                  }              }
199    
200          } else {          } else {
201    
202                  if (errno == EBADF) {              if (errno == EBADF) {
203                  free(buf);                  free(buf);
204                                    
205                  return -1;                  return -1;
206                  } else if (errno == EIO) {              } else if (errno == EIO) {
207                  free(buf);                  free(buf);
208                                    
209                  return -1;                  return -1;
210                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
211                  free(buf);                  free(buf);
212                                    
213                  return -1;                  return -1;
214                  }              }
215    
216          }          }
217    
218                  free(buf);          free(buf);
219                                    
220                  return -1;          return -1;
221    
222                  }      }
223    
224          FD_ZERO(&readfds);      FD_ZERO(&readfds);
225                    
226          FD_SET(sck, &readfds);      FD_SET(sck, &readfds);
227    
228          if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {      if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {
229                  if (verbose) {          if (verbose) {
230                  perror("select()");              perror("select()");
231                  }          }
232                  free(buf);          free(buf);
233                                    
234                  return -1;          return -1;
235          } else {      } else {
236    
237                  if (FD_ISSET(sck, &readfds)) {          if (FD_ISSET(sck, &readfds)) {
238    
239                          if ( (n = recv(sck, buf, 1022, 0)) < 0)  {              if ( (n = recv(sck, buf, 1022, 0)) < 0)  {
240                          if (verbose) {                  if (verbose) {
241                          perror("recv()");                      perror("recv()");
242                          }                  }
243                          free(buf);                  free(buf);
244                                                    
245                          return -1;                  return -1;
246                          }              }
247    
248                          if (verbose)              if (verbose)
249                          printf("[Server] %s\n", buf);                  printf("[Server] %s\n", buf);
250                                                    
251                  }          }
252                  else {          else {
253                          if (verbose)              if (verbose)
254                          printf("[-] Timeout\n");                  printf("[-] Timeout\n");
255                                                    
256                          return -1;              return -1;
                 }  
257          }          }
258        }
259    
260          buf[n] = '\0';      buf[n] = '\0';
261    
262    
263          if (ftp_file_handler(buf, 0) != 0) {      if (ftp_file_handler(buf, 0) != 0) {
264                  free(buf);          free(buf);
265                                    
266                  return -1; //Error          return -1; //Error
267                  }      }
268    
269          free(buf);      free(buf);
270                    
271          return 0; //Renamed      return 0; //Renamed
272  }  }

Legend:
Removed from v.1  
changed lines
  Added in v.7

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26