Beispiel #1
0
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;
}
Beispiel #2
0
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");
}
Beispiel #3
0
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;
}