const char *
idl_getCorbaModeStr(void)
{
    const char *str = NULL;

    /** @internal
     * @bug OSPL-3369 Have confirmed this is only used in output (where
     * it leaked previously) */
    if (idl_getIsISOCppTypes())
      return "ISO/IEC C++ 2003";

    switch (corba_mode) {
    case IDL_MODE_ORB_BOUND:
        str = "CORBA";
    break;
    case IDL_MODE_STANDALONE:
        str ="STANDALONE";
    break;
    case IDL_MODE_UNKNOWN:
    default:
        str = "<unknown>";
    break;
    }

    return str;
}
int
idl_languageAndModeSupported(void)
{
    int is_ok = idl_supportedLanguageAndMode[lang][corba_mode];
    if (is_ok)
    {
      /** @internal
       * @bug OSPL-3369 Temporary sanity check for isocpp settings */
      if (idl_getIsISOCppTypes()
            && lang != IDL_LANG_CXX
            && corba_mode != IDL_MODE_STANDALONE)
      {
          is_ok = 0;
      }
    }
    return is_ok;
}
Example #3
0
static idl_action
idl_fileOpen(
    idl_scope scope,
    const char *name,
    void *userData)
{
    idl_tmplExp te;
    c_char tmplFileName[1024];
    c_char *tmplPath;
    c_char *orbPath;
    int tmplFile;
    struct os_stat_s tmplStat;
    unsigned int nRead;

    OS_UNUSED_ARG(scope);
    OS_UNUSED_ARG(userData);

    tmplPath = os_getenv("OSPL_TMPL_PATH");
    orbPath = os_getenv("OSPL_ORB_PATH");
    if (tmplPath == NULL) {
        printf ("OSPL_TMPL_PATH not defined\n");
        return (idl_abort);
    }
    if (orbPath == NULL) {
        printf ("OSPL_ORB_PATH not defined\n");
        return (idl_abort);
    }

    /* Prepare file header template */
    if(idl_getIsISOCpp() && idl_getIsISOCppTypes())
        snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%cISOCxxStreamsIdlInterfaceHeader", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR);
    else
        snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%ccorbaStreamsIdlInterfaceHeader", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR);
    /* QAC EXPECT 3416; No side effects here */
    if ((os_stat(tmplFileName, &tmplStat) != os_resultSuccess) ||
        (os_access(tmplFileName, OS_ROK) != os_resultSuccess)) {
        printf ("No template found or protection violation (%s)\n", tmplFileName);
        return (idl_abort);
    }
    /* QAC EXPECT 5007; will not use wrapper */
    idlpp_template = os_malloc(tmplStat.stat_size+1);
    tmplFile = open(tmplFileName, O_RDONLY);
    nRead = (unsigned int)read(tmplFile, idlpp_template, tmplStat.stat_size);
    memset(&idlpp_template[nRead], 0, tmplStat.stat_size+1-nRead);
    close(tmplFile);
    idlpp_macroAttrib = idl_macroAttribNew(IDL_TOKEN_START, IDL_TOKEN_OPEN, IDL_TOKEN_CLOSE);
    idlpp_macroSet = idl_macroSetNew();
    idlpp_inStream = idl_streamInNew(idlpp_template, idlpp_macroAttrib);
    /* Expand file header */
    idl_macroSetAdd(idlpp_macroSet, idl_macroNew("basename", name));
    te = idl_tmplExpNew(idlpp_macroSet);
    idl_tmplExpProcessTmpl(te, idlpp_inStream, idl_fileCur());
    idl_streamInFree(idlpp_inStream);
    idl_tmplExpFree(te);

    /* Prepare class definition template */
    if(idl_getIsISOCpp() && idl_getIsISOCppTypes())
        snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%cISOCxxStreamsIdlInterface", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR);
    else
        snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%ccorbaStreamsIdlInterface", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR);
    /* QAC EXPECT 3416; No side effects here */
    if ((os_stat(tmplFileName, &tmplStat) != os_resultSuccess) ||
        (os_access(tmplFileName, OS_ROK) != os_resultSuccess)) {
        printf ("No template found or protection violation (%s)\n", tmplFileName);
        return (idl_abort);
    }
    /* QAC EXPECT 5007; will not use wrapper */
    idlpp_template = os_malloc(tmplStat.stat_size+1);
    tmplFile = open(tmplFileName, O_RDONLY);
    nRead = (unsigned int)read(tmplFile, idlpp_template, tmplStat.stat_size);
    memset(&idlpp_template[nRead], 0, tmplStat.stat_size+1-nRead);
    close(tmplFile);

    idlpp_indent_level = 0;

    return idl_explore;
    /* QAC EXPECT 2006; overview does not get better with one exit */
}