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