Changeset 5153
- Timestamp:
- 01/05/08 01:04:28 (8 months ago)
- Files:
-
- wire/trunk/wire/commands.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wire/trunk/wire/commands.c
r5079 r5153 151 151 wr_cmd_comment }, 152 152 { "connect", 153 false, " <server> [-l <login>] [-p <password>] [-P <port>]",153 false, "[-l <login>] [-p <password>] [-P <port>] <server>", 154 154 false, 1, -1, WR_COMPLETER_NONE, 155 155 wr_cmd_open }, … … 199 199 wr_cmd_invite }, 200 200 { "join", 201 false, " <server> [-l <login>] [-p <password>] [-P <port>]",201 false, "[-l <login>] [-p <password>] [-P <port>] <server>", 202 202 false, 1, -1, WR_COMPLETER_NONE, 203 203 wr_cmd_open }, … … 247 247 wr_cmd_nick }, 248 248 { "open", 249 true, " <server> [-l <login>] [-p <password>] [-P <port>]",249 true, "[-l <login>] [-p <password>] [-P <port>] <server>", 250 250 false, 1, -1, WR_COMPLETER_NONE, 251 251 wr_cmd_open }, … … 299 299 wr_cmd_search }, 300 300 { "server", 301 false, " <server> [-l <login>] [-p <password>] [-P <port>]",301 false, "[-l <login>] [-p <password>] [-P <port>] <server>", 302 302 false, 1, -1, WR_COMPLETER_NONE, 303 303 wr_cmd_open }, … … 399 399 return; 400 400 } 401 401 402 402 wi_release(wr_last_command); 403 403 wr_last_command = wi_string_init_with_cstring(wi_string_alloc(), wr_commands[index].name); … … 940 940 941 941 /* 942 /ls <path>942 /ls [-r] <path> 943 943 */ 944 944 945 945 static void wr_cmd_ls(wi_array_t *arguments) { 946 const char **argv; 947 int ch; 948 wi_boolean_t recursive = false; 949 950 if(wi_array_count(arguments) == 0) 951 wi_array_add_data(arguments, WI_STR("ls")); 952 else 953 wi_array_insert_data_at_index(arguments, WI_STR("ls"), 0); 954 955 argv = wi_array_create_argv(arguments); 956 957 wi_getopt_reset(); 958 959 while((ch = getopt(wi_array_count(arguments), (char **) argv, "rh")) != -1) { 960 switch(ch) { 961 case 'r': 962 recursive = true; 963 break; 964 965 case '?': 966 case 'h': 967 default: 968 wr_command_usage(WI_STR("ls")); 969 970 return; 971 break; 972 } 973 } 974 975 wi_array_destroy_argv(wi_array_count(arguments), argv); 976 946 977 wr_files_clear(); 947 978 wr_ls_state = WR_LS_LISTING; 948 949 if( wi_array_count(arguments) == 0)979 980 if((wi_uinteger_t) optind >= wi_array_count(arguments)) 950 981 wr_files_ld = wi_retain(wr_files_cwd); 951 982 else 952 wr_files_ld = wi_retain(wr_files_full_path(WI_ARRAY(arguments, 0)));953 954 wr_send_command(WI_STR(" LIST %@"), wr_files_ld);983 wr_files_ld = wi_retain(wr_files_full_path(WI_ARRAY(arguments, optind))); 984 985 wr_send_command(WI_STR("%@ %@"), recursive ? WI_STR("LISTRECURSIVE") : WI_STR("LIST"), wr_files_ld); 955 986 } 956 987 … … 1174 1205 1175 1206 /* 1176 /open <server> [-l <login>] [-p <password>]1207 /open [-l <login>] [-p <password>] <server> 1177 1208 */ 1178 1209 … … 1181 1212 wi_url_t *url; 1182 1213 const char **argv; 1183 wi_uinteger_t argc, i,port;1214 wi_uinteger_t port; 1184 1215 int ch; 1185 1216 … … 1187 1218 login = password = NULL; 1188 1219 port = 0; 1189 1190 argc = wi_array_count(arguments);1191 argv = wi_array_ argv(arguments);1220 1221 wi_array_insert_data_at_index(arguments, WI_STR("open"), 0); 1222 argv = wi_array_create_argv(arguments); 1192 1223 1193 1224 wi_getopt_reset(); 1194 1225 1195 while((ch = getopt( argc, (char **) argv, "hl:P:p:")) != -1) {1226 while((ch = getopt(wi_array_count(arguments), (char **) argv, "hl:P:p:")) != -1) { 1196 1227 switch(ch) { 1197 1228 case 'l': … … 1217 1248 } 1218 1249 1219 for(i = 0; i < argc; i++) 1220 free((char *) argv[i]); 1221 1222 free(argv); 1223 1224 url = wi_autorelease(wi_url_init_with_string(wi_url_alloc(), WI_ARRAY(arguments, 0))); 1250 wi_array_destroy_argv(wi_array_count(arguments), argv); 1251 1252 if(optind >= wi_array_count(arguments)) { 1253 wr_command_usage(WI_STR("open")); 1254 1255 return; 1256 } 1257 1258 url = wi_autorelease(wi_url_init_with_string(wi_url_alloc(), WI_ARRAY(arguments, optind))); 1225 1259 host = wi_url_host(url); 1226 1260
