int main(int argc, char *argv[]) { int ret = EOK; struct scl_args *args; char **pkgs = NULL; char **colls = NULL, **colls2 = NULL, **colls_merged = NULL; ret = scl_args_get(argc, argv, &args); if (ret == EINPUT) { fprintf(stderr, "Wrong arguments specified!\n\n"); print_usage(argv[0]); return ret; } else if (ret != EOK) { fprintf(stderr, "Unspecified error when parsing arguments!\n\n"); return ret; } switch (args->action) { case ACTION_NONE: print_usage(argv[0]); break; case ACTION_LIST_COLLECTIONS: ret = fallback_get_installed_collections(&colls); if (ret == EOK) { print_string_array(colls); } break; case ACTION_LIST_PACKAGES: ret = list_packages_in_collection(args->collections[0], &pkgs); if (ret == EOK) { print_string_array(pkgs); } break; case ACTION_COMMAND: if (has_old_collection(args->collections)) { ret = fallback_run_command(args->collections, args->command, args->exec_flag); } else { ret = run_command(args->collections, args->command, args->exec_flag); } break; case ACTION_REGISTER: ret = register_collection(args->colpaths[0]); break; case ACTION_DEREGISTER: ret = deregister_collection(args->collections[0], args->force_flag); break; case ACTION_MAN: ret = show_man(args->collections[0]); break; case ACTION_LOAD: case ACTION_UNLOAD: debug("Missing function scl in your environment!!!\n"); ret = ECONFIG; break; case ACTION_VERSION: printf("%s\n", get_version()); break; case ACTION_LIST_ENABLED: /* Get enabled collections of new type */ ret = get_enabled_collections(&colls); if (ret != EOK) { break; } /* Get enabled collections of old type */ ret = fallback_get_enabled_collections(&colls2); if (ret != EOK) { break; } /* * Some new collections can behave like old collections by defining * variable X_SCLS. There may be intersection between colls and * colls2. So merge them. */ colls_merged = merge_string_arrays(colls, colls2); print_string_array(colls_merged); break; } scl_args_free(args); free(args); free_string_array(pkgs); free_string_array(colls); free_string_array(colls2); free_string_array(colls_merged); release_scllib_cache(); return ret; }
void Baidu_translate(char * q) { _PCOLOR(_PURPLE); fprintf(g.OUTPUT_FILE,"BAIDU TRANSLATE RESULT:\n"); _PCOLOR(_END_COLOR); struct field data[] = { {"query",q}, {"from",B_AUTO}, {"to",B_AUTO} }; struct field params[] = { {"apikey",B_APPID}, {"Accept-Charset","utf-8"} }; char * rec = http_request( "GET", B_HOST, B_URI, HTTP_EDITION, params, 2, data, 3, g.DEBUG_MODE_FLAG); char * origin_rec = rec; if (g.DEBUG_MODE_FLAG) fprintf(g.OUTPUT_FILE, "%s", rec); if ( (rec = remove_html(remove_response_header(rec))) == NULL) { fprintf(g.OUTPUT_FILE,"Server Error."); return; } rec = index(rec,'{'); char * json_end = rindex(rec,'}')+1; *json_end ='\0'; jval * json = zJSON_parse(rec); free(origin_rec); if (!json) { fprintf(g.OUTPUT_FILE,"zJSON_parse Error."); return; } int errorcode = zJSON_get_int(zJSON_get_key_val(json, "errNum")); switch (errorcode) { case 0:{ jval * retData = zJSON_get_key_val(json,"retData"); jval * dict_result = zJSON_get_key_val(retData,"dict_result"); jval * symbols = zJSON_get_key_val(dict_result,"symbols"); if (!symbols) { fprintf(g.OUTPUT_FILE,"No result.\n"); return; } int symbols_size = zJSON_get_arr_length(symbols); for (int i = 0; i < symbols_size; ++i) { jval * symbols_item = zJSON_get_arr_item(symbols,i); if (zJSON_get_key_val(symbols_item,"ph_en")) { _PCOLOR(_GREEN); fprintf(g.OUTPUT_FILE,"\nph_en:\t"); _PCOLOR(_SKY); fprintf(g.OUTPUT_FILE,"%s",zJSON_get_str(zJSON_get_key_val(symbols_item,"ph_en"))); _PCOLOR(_END_COLOR); _PCOLOR(_GREEN); fprintf(g.OUTPUT_FILE,"\nph_am:\t"); _PCOLOR(_SKY); fprintf(g.OUTPUT_FILE,"%s",zJSON_get_str(zJSON_get_key_val(symbols_item,"ph_am"))); _PCOLOR(_END_COLOR); fprintf(g.OUTPUT_FILE,"\n"); _PCOLOR(_END_COLOR); }else if(zJSON_get_key_val(symbols_item,"ph_zh")) { _PCOLOR(_GREEN); fprintf(g.OUTPUT_FILE,"\nph_zh:\t"); _PCOLOR(_SKY); fprintf(g.OUTPUT_FILE,"%s",zJSON_get_str(zJSON_get_key_val(symbols_item,"ph_zh"))); _PCOLOR(_END_COLOR); } jval * parts = zJSON_get_key_val(symbols_item,"parts"); int parts_size = zJSON_get_arr_length(parts); for (int i = 0; i < parts_size; ++i) { jval * parts_item = zJSON_get_arr_item(parts,i); fprintf(g.OUTPUT_FILE,"\n\tpart:\t"); _PCOLOR(_GREEN); fprintf(g.OUTPUT_FILE,"%s",zJSON_get_str(zJSON_get_key_val(parts_item,"part"))); _PCOLOR(_END_COLOR); fprintf(g.OUTPUT_FILE,"\n\tmeans:\t"); _PCOLOR(_YELLOW); print_string_array(parts_item,"means","\t\n\t\t"); _PCOLOR(_END_COLOR); } } zJSON_free_jval(json); break; } default: break; } fprintf(g.OUTPUT_FILE,"\n"); }
int main(int argc, char *argv[]) { int ret = EOK; struct scl_args *args; char **pkgs = NULL; char **colls = NULL; ret = scl_args_get(argc, argv, &args); if (ret == EINPUT) { fprintf(stderr, "Wrong arguments specified!\n\n"); print_usage(argv[0]); return ret; } else if (ret != EOK) { fprintf(stderr, "Unspecified error when parsing arguments!\n\n"); return ret; } switch (args->action) { case ACTION_NONE: print_usage(argv[0]); break; case ACTION_LIST_COLLECTIONS: ret = fallback_get_installed_collections(&colls); if (ret == EOK) { print_string_array(colls); free_string_array(colls); } break; case ACTION_LIST_PACKAGES: ret = list_packages_in_collection(args->collections[0], &pkgs); if (ret == EOK) { print_string_array(pkgs); free_string_array(pkgs); } break; case ACTION_COMMAND: if (has_old_collection(args->collections)) { ret = fallback_run_command(args->collections, args->command, args->exec_flag); } else { ret = run_command(args->collections, args->command, args->exec_flag); } break; case ACTION_REGISTER: ret = register_collection(args->colpaths[0]); break; case ACTION_DEREGISTER: ret = deregister_collection(args->collections[0], args->force_flag); break; case ACTION_MAN: ret = show_man(args->collections[0]); break; case ACTION_LOAD: case ACTION_UNLOAD: debug("Missing function scl in your environment!!!\n"); ret = ECONFIG; break; case ACTION_VERSION: printf("%s\n", get_version()); break; } scl_args_free(args); free(args); release_scllib_cache(); return ret; }