NAME
     fn_ctx_equivalent_name - construct  an  equivalent  name  in
     same context
SYNOPSIS
     #include <xfn/xfn.h>
     FN_composite_name_t  *fn_ctx_equivalent_name(FN_ctx_t  *ctx,
     const    FN_composite_name_t    *name,   const   FN_string_t
     *leading_name, FN_status_t * status);
DESCRIPTION
     Given the name of an object name  relative  to  the  context
     ctx,  this  operation  returns  an  equivalent name for that
     object,  relative  to  the  same  context  ctx,   that   has
     leading_name  as its initial atomic name. Two names are said
     to be equivalent if they have prefixes that resolve  to  the
     same context, and the parts of the names immediately follow-
     ing the prefixes are identical.
     The existence of a binding for leading_name in ctx does  not
     guarantee that a name equivalent to name can be constructed.
     The failure may be because such equivalence is not  meaning-
     ful,  or  due  to the inability of the system to construct a
     name with the equivalence. For example, supplying  _thishost
     as   leading_name    when   name   starts  with  _myself  to
     fn_ctx_equivalent_name() in the Initial Context would not be
     meaningful;  this  results  in  the return of the error code
     FN_E_NO_EQUIVALENT_NAME.
RETURN VALUES
     If an equivalent name cannot be constructed, the value 0  is
     returned and status is set appropriately.
ERRORS
     fn_ctx_equivalent_name()  sets  status   as   described   in
     FN_status_t(3XFN)  and xfn_status_codes(3XFN). The following
     status code is especially relevant for this operation:
          FN_E_NO_EQUIVALENT_NAME
                No equivalent name  can  be  constructed,  either
                because   there   is  no  meaningful  equivalence
                between name and leading_name, or the system does
                not support constructing the requested equivalent
                name, for implementation-specific reasons.
EXAMPLES
     Example 1: Naming Files
     In the Initial Context supporting XFN enterprise policies, a
     user  jsmith  is  able  to name one of her files relative to
     this context in several ways.
     _myself/_fs/map.ps
     _user/jsmith/_fs/map.ps
     _orgunit/finance/_user/jsmith/_fs/map.ps
     The first of these may be appealing to the  user  jsmith  in
     her  day-to-day  operations.  This  name  is  not,  however,
     appropriate for her to use when referring  the  file  in  an
     electronic  mail  message sent to a colleague. The second of
     these names would be appropriate if the  colleague  were  in
     the  same organizational unit, and the third appropriate for
     anyone in the same enterprise.
     When the following sequence of instructions is  executed  by
     the   user   jsmith  in  the  organizational  unit  finance,
     enterprise_wide_name  would  contain  the   composite   name
     _orgunit/finance/_user/jsmith/_fs/map.ps:
     FN_string_t* namestr =
         fn_string_from_str((const unsigned char*)"_myself/_fs/map.ps");
     FN_composite_name_t* name = fn_composite_name_from_string(namestr);
     FN_string_t* org_lead =
         fn_string_from_str((const unsigned char*)"_orgunit");
     FN_status_t* status = fn_status_create();
     FN_composite_name_t* enterprise_wide_name;
     FN_ctx_t* init_ctx = fn_ctx_handle_from_initial(status);
     /* check status of from_initial() */
     enterprise_wide_name = fn_ctx_equivalent_name(init_ctx, name, org_lead,
     status);
     When the following sequence of instructions is  executed  by
     the   user   jsmith  in  the  organizational  unit  finance,
     shortest_name   would    contain    the    composite    name
     _myself/_fs/map.ps:
     FN_string_t* namestr =
         fn_string_from_str((const unsigned char*)
             "_orgunit/finance/_user_jsmith/_fs/map.ps");
     FN_composite_name_t* name = fn_composite_name_from_string(namestr);
     FN_string_t* mylead = fn_string_from_str((const unsigned char*)"_myself");
     FN_status_t* status = fn_status_create();
     FN_composite_name_t* shortest_name;
     FN_ctx_t* init_ctx = fn_ctx_handle_from_initial(status);
     /* check status of from_initial() */
     shortest_name = fn_ctx_equivalent_name(init_ctx, name, mylead, status);
ATTRIBUTES
     See attributes (5) for descriptions of the following  attri-
     butes:
     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | MT-Safe                     |
    |_____________________________|_____________________________|
SEE ALSO
     FN_composite_name_t(3XFN),                   FN_ctx_t(3XFN),
     FN_status_t(3XFN),                        FN_string_t(3XFN),
     xfn_status_codes(3XFN), attributes(5)
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |