Changeset 8e17cc40106fd1b44b6f48fec0bdc1298b27c2bf

Show
Ignore:
Timestamp:
06/05/08 19:00:26 (3 months ago)
Author:
Rémi Denis-Courmont <rdenis@simphalempin.com>
git-committer:
Rémi Denis-Courmont <rdenis@simphalempin.com> 1212685226 +0300
git-parent:

[64ae2cbffa7639c04869e6588f80f5c1a7d05221]

git-author:
Rémi Denis-Courmont <rdenis@simphalempin.com> 1212681896 +0300
Message:

Support for using a custom text domain for configuration strings

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_plugin.h

    r64ae2cb r8e17cc4  
    9494    {                                                                         \ 
    9595        module_config_t *p_config = NULL;                                     \ 
     96        const char *domain = NULL;                                            \ 
    9697        if (vlc_module_set (p_module, VLC_MODULE_NAME,                        \ 
    9798                            (const char *)(MODULE_STRING)))                   \ 
     
    151152    if (vlc_module_set (p_submodule, VLC_MODULE_NO_UNLOAD)) \ 
    152153        goto error; 
     154 
     155#define set_text_domain( dom ) domain = (dom); 
    153156 
    154157VLC_EXPORT( module_t *, vlc_module_create, ( vlc_object_t * ) ); 
     
    187190    /* command line name (args=const char *, vlc_callback_t) */ 
    188191 
    189     VLC_CONFIG_DESC
     192    VLC_CONFIG_DESC_NODOMAIN
    190193    /* description (args=const char *, const char *) */ 
    191194 
     
    220223    /* one-character (short) command line option name (args=char) */ 
    221224 
     225    VLC_CONFIG_LIST_NODOMAIN, 
     226    /* possible values list 
     227     * (args=size_t, const <type> *, const char *const *) */ 
     228 
     229    VLC_CONFIG_ADD_ACTION_NODOMAIN, 
     230    /* add value change callback (args=vlc_callback_t, const char *) */ 
     231 
     232    VLC_CONFIG_OLDNAME, 
     233    /* former option name (args=const char *) */ 
     234 
     235    VLC_CONFIG_SAFE, 
     236    /* tag as modifiable by untrusted input item "sources" (args=none) */ 
     237 
     238    VLC_CONFIG_DESC, 
     239    /* description (args=const char *, const char *, const char *) */ 
     240 
    222241    VLC_CONFIG_LIST, 
    223242    /* possible values list 
    224      * (args=size_t, const <type> *, const char *const *) */ 
     243     * (args=const char *, size_t, const <type> *, const char *const *) */ 
    225244 
    226245    VLC_CONFIG_ADD_ACTION, 
    227     /* add value change callback (args=vlc_callback_t, const char *) */ 
    228  
    229     VLC_CONFIG_OLDNAME, 
    230     /* former option name (args=const char *) */ 
    231  
    232     VLC_CONFIG_SAFE, 
    233     /* tag as modifiable by untrusted input item "sources" (args=none) */ 
     246    /* add value change callback 
     247     * (args=const char *, vlc_callback_t, const char *) */ 
    234248}; 
    235249 
     
    252266#define add_typedesc_inner( type, text, longtext ) \ 
    253267    add_type_inner( type ) \ 
    254     vlc_config_set (p_config, VLC_CONFIG_DESC,
     268    vlc_config_set (p_config, VLC_CONFIG_DESC, domain,
    255269                    (const char *)(text), (const char *)(longtext)); 
    256270 
     
    387401 
    388402#define change_string_list( list, list_text, list_update_func ) \ 
    389     vlc_config_set (p_config, VLC_CONFIG_LIST,
     403    vlc_config_set (p_config, VLC_CONFIG_LIST, domain,
    390404                    (size_t)(sizeof (list) / sizeof (char *)), \ 
    391405                    (const char *const *)(list), \ 
     
    394408 
    395409#define change_integer_list( list, list_text, list_update_func ) \ 
    396     vlc_config_set (p_config, VLC_CONFIG_LIST,
     410    vlc_config_set (p_config, VLC_CONFIG_LIST, domain,
    397411                    (size_t)(sizeof (list) / sizeof (int)), \ 
    398412                    (const int *)(list), \ 
     
    401415 
    402416#define change_float_list( list, list_text, list_update_func ) \ 
    403     vlc_config_set (p_config, VLC_CONFIG_LIST,
     417    vlc_config_set (p_config, VLC_CONFIG_LIST, domain,
    404418                    (size_t)(sizeof (list) / sizeof (float)), \ 
    405419                    (const float *)(list), \ 
     
    415429 
    416430#define change_action_add( pf_action, text ) \ 
    417     vlc_config_set (p_config, VLC_CONFIG_ADD_ACTION,
     431    vlc_config_set (p_config, VLC_CONFIG_ADD_ACTION, domain,
    418432                    (vlc_callback_t)(pf_action), (const char *)(text)); 
    419433 
  • src/modules/entry.c

    r64ae2cb r8e17cc4  
    253253        } 
    254254 
    255         case VLC_CONFIG_DESC
     255        case VLC_CONFIG_DESC_NODOMAIN
    256256        { 
    257257            const char *text = va_arg (ap, const char *); 
    258258            const char *longtext = va_arg (ap, const char *); 
    259  
    260             item->psz_text = text ? strdup (dgettext (PACKAGE, text)) : NULL; 
    261             item->psz_longtext = 
    262                 longtext ? strdup (dgettext (PACKAGE, longtext)) : NULL; 
    263             ret = 0; 
     259            ret = vlc_config_set (item, VLC_CONFIG_DESC, NULL, text, longtext); 
    264260            break; 
    265261        } 
     
    353349            break; 
    354350 
     351        case VLC_CONFIG_LIST_NODOMAIN: 
     352        { 
     353            size_t len = va_arg (ap, size_t); 
     354            if (IsConfigIntegerType (item->i_type)) 
     355            { 
     356                const int *src = va_arg (ap, const int *); 
     357                const char *const *text = va_arg (ap, const char *const *); 
     358                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src, 
     359                                      text); 
     360            } 
     361            else 
     362            if (IsConfigStringType (item->i_type)) 
     363            { 
     364                const char *const *src = va_arg (ap, const char *const *); 
     365                const char *const *text = va_arg (ap, const char *const *); 
     366                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src, 
     367                                      text); 
     368            } 
     369            break; 
     370        } 
     371 
     372        case VLC_CONFIG_ADD_ACTION_NODOMAIN: 
     373        { 
     374            vlc_callback_t cb = va_arg (ap, vlc_callback_t); 
     375            const char *name = va_arg (ap, const char *); 
     376            ret = vlc_config_set (item, VLC_CONFIG_ADD_ACTION, NULL, cb, name); 
     377            break; 
     378        } 
     379 
     380        case VLC_CONFIG_OLDNAME: 
     381        { 
     382            const char *oldname = va_arg (ap, const char *); 
     383            item->psz_oldname = oldname ? strdup (oldname) : NULL; 
     384            ret = 0; 
     385            break; 
     386        } 
     387 
     388        case VLC_CONFIG_SAFE: 
     389            item->b_safe = true; 
     390            ret = 0; 
     391            break; 
     392 
     393        case VLC_CONFIG_DESC: 
     394        { 
     395            const char *domain = va_arg (ap, const char *); 
     396            const char *text = va_arg (ap, const char *); 
     397            const char *longtext = va_arg (ap, const char *); 
     398 
     399            if (domain == NULL) 
     400                domain = PACKAGE; 
     401            item->psz_text = text ? strdup (dgettext (domain, text)) : NULL; 
     402            item->psz_longtext = 
     403                longtext ? strdup (dgettext (domain, longtext)) : NULL; 
     404            ret = 0; 
     405            break; 
     406        } 
     407 
    355408        case VLC_CONFIG_LIST: 
    356409        { 
     410            const char *domain = va_arg (ap, const char *); 
    357411            size_t len = va_arg (ap, size_t); 
    358412            char **dtext = malloc (sizeof (char *) * (len + 1)); 
     
    407461 
    408462            /* Copy textual descriptions */ 
     463            if (domain == NULL) 
     464                domain = PACKAGE; 
     465 
    409466            const char *const *text = va_arg (ap, const char *const *); 
    410467            if (text != NULL) 
     
    412469                for (size_t i = 0; i < len; i++) 
    413470                    dtext[i] = 
    414                         text[i] ? strdup (dgettext (PACKAGE, text[i])) : NULL; 
     471                        text[i] ? strdup (dgettext (domain, text[i])) : NULL; 
    415472 
    416473                dtext[len] = NULL; 
     
    431488        case VLC_CONFIG_ADD_ACTION: 
    432489        { 
     490            const char *domain = va_arg (ap, const char *); 
    433491            vlc_callback_t cb = va_arg (ap, vlc_callback_t), *tabcb; 
    434492            const char *name = va_arg (ap, const char *); 
     
    449507            item->ppsz_action_text = tabtext; 
    450508 
     509            if (domain == NULL) 
     510                domain = PACKAGE; 
    451511            if (name) 
    452                 tabtext[item->i_action] = strdup (dgettext (PACKAGE, name)); 
     512                tabtext[item->i_action] = strdup (dgettext (domain, name)); 
    453513            else 
    454514                tabtext[item->i_action] = NULL; 
     
    459519            break; 
    460520        } 
    461  
    462         case VLC_CONFIG_OLDNAME: 
    463         { 
    464             const char *oldname = va_arg (ap, const char *); 
    465             item->psz_oldname = oldname ? strdup (oldname) : NULL; 
    466             ret = 0; 
    467             break; 
    468         } 
    469  
    470         case VLC_CONFIG_SAFE: 
    471             item->b_safe = true; 
    472             ret = 0; 
    473             break; 
    474521    } 
    475522