findmidlet.c

来自「This is a resource based on j2me embedde」· C语言 代码 · 共 129 行

C
129
字号
/* * * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */#include <string.h>#include <stdio.h>#include <midp_logging.h>#include <midpMalloc.h>#include <suitestore_common.h>#include <midp_ams_status.h>#include <findMidlet.h>#include <midpUtilKni.h>PCSL_DEFINE_STATIC_ASCII_STRING_LITERAL_START(KEY_PREFIX)    {'M', 'I', 'D', 'l', 'e', 't', '-', '\0'}PCSL_DEFINE_STATIC_ASCII_STRING_LITERAL_END(KEY_PREFIX);intfind_midlet_class(SuiteIdType id, int midletNumber, pcsl_string* res) {    MidpProperties properties;    pcsl_string keySuffix = PCSL_STRING_NULL;    pcsl_string key = PCSL_STRING_NULL;    const pcsl_string* property = &PCSL_STRING_NULL;    pcsl_string temp = PCSL_STRING_NULL;    pcsl_string_status stat;    int begin;    int result = 0;    *res = PCSL_STRING_NULL;    properties = midp_get_suite_properties(id);    if (OUT_OF_MEM_PROPERTY_STATUS(properties)) {        return OUT_OF_MEM_LEN;    }    do {        if (CORRUPTED_PROPERTY_STATUS(properties)) {            midp_free_properties(&properties);            REPORT_ERROR(LC_AMS, "Error : Suite is corrupted");            fprintf(stderr, "Error : Suite is corrupted\n");            result = NULL_LEN;            break;        }        if (READ_ERROR_PROPERTY_STATUS(properties)) {            midp_free_properties(&properties);            REPORT_ERROR(LC_AMS, "Corrupt properties");            fprintf(stderr, "Corrupt properties\n");            result = NULL_LEN;            break;        }        stat = pcsl_string_convert_from_jint(midletNumber, &keySuffix);        if (PCSL_STRING_OK != stat) {            if(PCSL_STRING_ENOMEM == stat) {                result = OUT_OF_MEM_LEN;            } else {                result = NULL_LEN;            }            break;        }        stat = pcsl_string_cat(&KEY_PREFIX, &keySuffix, &key);        pcsl_string_free(&keySuffix);        if (PCSL_STRING_OK != stat) {            result = OUT_OF_MEM_LEN;            break;        }        property = midp_find_property(&properties, &key);        if (pcsl_string_length(property) <= 0) {            /* property not found */            result = NULL_LEN;            break;        }        /* The class is the last item in the set. */        begin = pcsl_string_last_index_of(property, (jchar)',');        if (begin < 0 || begin >= pcsl_string_length(property)) {            result = NULL_LEN;            break;        }        begin++;        stat = pcsl_string_substring(property, begin, pcsl_string_length(property), &temp);        if (PCSL_STRING_OK != stat) {            result = OUT_OF_MEM_LEN;            break;        }        if (pcsl_string_length(&temp) <= 0) {            pcsl_string_free(&temp);            result = NULL_LEN;            break;        }        stat = pcsl_string_trim(&temp, res);        pcsl_string_free(&temp);        if (PCSL_STRING_OK != stat) {            result = OUT_OF_MEM_LEN;            break;        }    } while (0);    midp_free_properties(&properties);    return result;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?