Hello Derrick

We have been using adm-033 for more then a year.
It is rather stable for us.
We worked with it under both AFS 3.3a and   AFS 3.4a.

One of the problems we had about that is support for two letter partitions.
As I could wee adm-036 does not support it either.
To support that we changed the code of admlib_conv.c.
I attach here the code of two changed functions.
( We tested it and it works for us. Use it on your own risk )

Where can I find the list of the changes between adm-033 and adm-036?

Thanks,
                Vladi

long
admlib_conv_FromPartitionName(objPtr, pvarPtr)
    admint_objectPtr_t *objPtr;
    va_list        *pvarPtr;
{
    unsigned long   partId;
    char            partName[8];

    partId = va_arg(*pvarPtr, unsigned long);

    (void) strcpy(partName, "/vicep?");
    if (partId < (unsigned long) 26) {
        partName[6] = (char) partId + 'a';
        partName[7] = '\0';
    }
    if ((partId >= (unsigned long) 26) && (partId < (unsigned long) 256)) {
        partName[6] = (char) (partId / 26) - 1 + 'a';
        partName[7] = (char) (partId % 26) + 'a';
        partName[8] = '\0';
    }
    return admlib_obj_ConvertToObj(objPtr, admlib_obj_FromString, partName);
}


/*****************************************************************************/

long
admlib_conv_ToPartition(obj, pvarPtr)
    admint_objectPtr_t obj;
    va_list        *pvarPtr;
{
    unsigned long  *partId;
    char           *partName;
    long            l;

    partId = va_arg(*pvarPtr, unsigned long *);

    switch (admlib_obj_Type(obj)) {
      case ADMINT_TYPE_NUMBER:
        IF_RTN(admlib_obj_ConvertFromObj(obj, admlib_obj_ToNumber, &l));
        *partId = (unsigned long) l;
        return OK;
      default:
        IF_RTN(admlib_obj_ConvertFromObj(obj, admlib_obj_ToString, &partName));
        if (!strncmp(partName, "/vicep", 6) && partName[6] >= 'a' &&
                partName[6] <= 'z' && partName[7] == '\0') {
            *partId = (unsigned long) (partName[6] - 'a');
            return OK;
        }
        if (!strncmp(partName, "/vicep", 6) && partName[6] >= 'a' &&
partName[6] <= 'i' &&
              partName[7] >= 'a' && partName[7] <= 'z' &&
              partName[8] == '\0') {
            *partId = (unsigned long) (26 * (partName[6] - 'a' + 1) +
partName[7] - 'a');
            return OK;
        }
        if (partName[0] >= 'a' && partName[0] <= 'z' && partName[1] == '\0') {
            *partId = (unsigned long) (partName[0] - 'a');
            return OK;
        }
        if (partName[0] >= 'a' && partName[0] <= 'i' &&
            partName[1] >= 'a' && partName[1] <= 'z' &&
            partName[2] == '\0') {
            *partId = (unsigned long) (26 * (partName[0] - 'a' +1) +
partName[1] - 'a');
            return OK;
        }
        return ADMERR_ADMLIB_CONV_ToPartition_Lookup;
    }
}

-- 

                          Regards,


                                  Vladi  Tsipenyuk      

IDC/MCBS
System Engineering
Intel Israel (74) Ltd.
[EMAIL PROTECTED]
Tel: 972-4-865-58-09
Fax: 972-4-865-59-99

Reply via email to