Develop and Download Open Source Software

Browse Subversion Repository

Diff of /tags/REL-1.1/ftprmd.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  ***/  ***/
51    
52    
53  int ftp_rmd (int sck, char *Directory, int verbose) {  int ftp_rmd (int sck, char *Directory, int verbose)
54    {
55        char buffer[1024]={'\0'};
56        char *buf;
57        int n = 0;
58        struct timeval tm; //tv_sec - tv_usec
59        fd_set readfds;
60    
         char buffer[1024]={'\0'};  
         char *buf;  
         int n = 0;  
61    
62          buf = (char *)malloc(1024*sizeof(char));      buf = (char *)malloc(1024*sizeof(char));
63    
64          memset(buffer, 0x0, 1024);      memset(buffer, 0x0, 1024);
65          memset(buf, 0x0, 1024);      memset(buf, 0x0, 1024);
66    
67    
68  if ( strlen(Directory) > 1015 ) {      if ( strlen(Directory) > 1015 ) {
69          free(buf);          free(buf);
70                    
71          return DIR_TOO_LONG;          return DIR_TOO_LONG;
72          }      }
73    
74  sprintf(buffer, "RMD %s\n", Directory);      sprintf(buffer, "RMD %s\n", Directory);
75    
76                    
77    
78          if (write(sck, buffer, strlen(buffer)) == -1) {      if (write(sck, buffer, strlen(buffer)) == -1) {
79                                    
80                    
81          if (verbose) {          if (verbose) {
82                  if (errno == EBADF) {              if (errno == EBADF) {
83                  fprintf(stderr, "Socket Descriptor Not Valid!\n");                  fprintf(stderr, "Socket Descriptor Not Valid!\n");
84                  free(buf);                  free(buf);
85                                    
86                  return -1;                  return -1;
87                  } else if (errno == EIO) {              } else if (errno == EIO) {
88                  fprintf(stderr, "I/O Error!\n");                  fprintf(stderr, "I/O Error!\n");
89                  free(buf);                  free(buf);
90                                    
91                  return -1;                  return -1;
92                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
93                  fprintf(stderr, "Signal Interrupted The write() Function\n");                  fprintf(stderr, "Signal Interrupted The write() Function\n");
94                  free(buf);                  free(buf);
95                                    
96                  return -1;                  return -1;
97                  }              }
98    
99          } else {                  } else {        
100    
101                  if (errno == EBADF) {              if (errno == EBADF) {
102                  free(buf);                  free(buf);
103                                    
104                  return -1;                  return -1;
105                  } else if (errno == EIO) {              } else if (errno == EIO) {
106                  free(buf);                  free(buf);
107                                    
108                  return -1;                  return -1;
109                  } else if (errno == EINTR) {              } else if (errno == EINTR) {
110                  free(buf);                  free(buf);
111                                    
112                  return -1;                  return -1;
113                  }              }
114                    
115          }          }
116    
117                  free(buf);          free(buf);
118                                    
119                  return -1;          return -1;
120    
121                  }      }
122    
123    
124          sleep(1); //wait..      sleep(1); //wait..
125          struct timeval tm; //tv_sec - tv_usec      tm.tv_sec = 3;
126          fd_set readfds;      tm.tv_usec = 0;
         tm.tv_sec = 3;  
         tm.tv_usec = 0;  
127    
128          FD_ZERO(&readfds);      FD_ZERO(&readfds);
129                    
130          FD_SET(sck, &readfds);      FD_SET(sck, &readfds);
131    
132          if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {      if (select(sck+1, &readfds, NULL, NULL, &tm) < 0 ) {
133                  if (verbose) {          if (verbose) {
134                  perror("select()");              perror("select()");
135                  }          }
136                  free(buf);          free(buf);
137                                    
138                  return -1;          return -1;
139          } else {      } else {
140    
141                  if (FD_ISSET(sck, &readfds)) {          if (FD_ISSET(sck, &readfds)) {
142    
143                          if ( (n = recv(sck, buf, 1022, 0)) < 0)  {              if ( (n = recv(sck, buf, 1022, 0)) < 0)  {
144                          if (verbose) {                  if (verbose) {
145                          perror("recv()");                      perror("recv()");
146                          }                  }
147                          free(buf);                  free(buf);
148                                                    
149                          return -1;                  return -1;
150                          }              }
151    
152                          if (verbose)              if (verbose)
153                          printf("[Server] %s\n", buf);                  printf("[Server] %s\n", buf);
154                                                    
155                  }          }
156                  else {          else {
157                          if (verbose)              if (verbose)
158                          printf("[-] Timeout\n");                  printf("[-] Timeout\n");
159                                                    
160                          return -1;              return -1;
                 }  
161          }          }
162        }
163    
164          buf[n] = '\0';      buf[n] = '\0';
165    
166          if (ftp_dir_handler(buf, 0) != 0) {      if (ftp_dir_handler(buf, 0) != 0) {
167                  free(buf);          free(buf);
168    
169                  return -1; //Error          return -1; //Error
170          }      }
171    
172          free(buf);      free(buf);
173                    
174          return 0;  //Removed!      return 0;  //Removed!
175    
176  }  }

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