49 #include "co_cdh_msg.h"
51 #include "co_string.h"
69 if (Objid_1.vid == Objid_2.vid) {
70 if (Objid_1.oix == Objid_2.oix)
72 else if (Objid_1.oix < Objid_2.oix)
76 }
else if (Objid_1.vid < Objid_2.vid)
90 return (Objid_1.vid == Objid_2.vid) && (Objid_1.oix == Objid_2.oix);
101 return (Objid_1.vid != Objid_2.vid) || (Objid_1.oix != Objid_2.oix);
112 return (Objid.vid == pwr_cNObjid.vid) && (Objid.oix == pwr_cNObjid.oix);
123 return (Objid.vid != pwr_cNObjid.vid) || (Objid.oix != pwr_cNObjid.oix);
177 int cdh_SubidIsNotNull(
pwr_tSubid Subscription)
205 int cdh_DlidIsNotNull(
pwr_tDlid DirectLink)
235 cid.
c.cix = oid.
c.cix;
236 cid.
c.must_be_zero = 0;
237 cid.
c.vid_0 = oid.
c.vid_0;
238 cid.
c.vid_1 = oid.
c.vid_1;
259 oid.
c.cix = cid.
c.cix;
260 oid.
c.must_be_two = 2;
261 oid.
c.vid_0 = cid.
c.vid_0;
262 oid.
c.vid_1 = cid.
c.vid_1;
282 if (oid.
t.must_be_three == 2) {
284 tid.
c.bix = oid.
c.bix;
285 tid.
c.cix = oid.
c.cix;
286 tid.
c.must_be_zero = 0;
287 tid.
c.vid_0 = oid.
c.vid_0;
288 tid.
c.vid_1 = oid.
c.vid_1;
289 }
else if (oid.
t.must_be_three == 3) {
291 tid.
t.tix = oid.
t.tix;
292 tid.
t.tyg = oid.
t.tyg;
293 tid.
t.must_be_one = 1;
294 tid.
t.vid_0 = oid.
t.vid_0;
295 tid.
t.vid_1 = oid.
t.vid_1;
298 tid.
t.tix = oid.
t.tix;
299 tid.
t.tyg = oid.
t.tyg;
300 tid.
t.must_be_one = 1;
301 tid.
t.vid_0 = oid.
t.vid_0;
302 tid.
t.vid_1 = oid.
t.vid_1;
328 if (tid.
t.must_be_one == 1) {
331 oid.
t.tix = tid.
t.tix;
332 oid.
t.tyg = tid.
t.tyg;
333 oid.
t.must_be_three = 3;
334 oid.
t.vid_0 = tid.
t.vid_0;
335 oid.
t.vid_1 = tid.
t.vid_1;
341 oid.
c.bix = tid.
c.bix;
342 oid.
c.cix = tid.
c.cix;
343 oid.
c.must_be_two = 2;
344 oid.
c.vid_0 = tid.
c.vid_0;
345 oid.
c.vid_1 = tid.
c.vid_1;
366 pwr_eType Type,
void* Value,
char* String,
int MaxSize)
372 case pwr_eType_Boolean:
378 case pwr_eType_Float32: {
380 memcpy(&f, Value,
sizeof(f));
381 snprintf(String, MaxSize,
"%.7g", f);
384 case pwr_eType_Float64: {
386 memcpy(&f, Value,
sizeof(f));
387 snprintf(String, MaxSize,
"%.17g", f);
394 sprintf(String,
"%c", *(
pwr_tChar*)Value);
397 snprintf(String, MaxSize,
"%d", *(
pwr_tInt8*)Value);
399 case pwr_eType_Int16:
400 snprintf(String, MaxSize,
"%hd", *(
pwr_tInt16*)Value);
402 case pwr_eType_Int32:
403 case pwr_eType_Status:
404 case pwr_eType_NetStatus:
406 snprintf(String, MaxSize,
"%d", *(
pwr_tInt32*)Value);
408 case pwr_eType_Int64:
409 snprintf(String, MaxSize, pwr_dFormatInt64, *(pwr_tInt64*)Value);
411 case pwr_eType_UInt8:
412 snprintf(String, MaxSize,
"%u", *(
pwr_tUInt8*)Value);
414 case pwr_eType_UInt16:
415 snprintf(String, MaxSize,
"%hu", *(
pwr_tUInt16*)Value);
417 case pwr_eType_UInt32:
419 snprintf(String, MaxSize,
"%u", *(
pwr_tUInt32*)Value);
421 case pwr_eType_UInt64:
422 snprintf(String, MaxSize, pwr_dFormatUInt64, *(pwr_tUInt64*)Value);
427 strncpy(String, timbuf, MaxSize);
429 strncpy(String,
"*** Bad time value ***", MaxSize);
433 case pwr_eType_DeltaTime:
435 strncpy(String, timbuf, MaxSize);
437 strncpy(String,
"*** Bad delta time value ***", MaxSize);
438 sts = CDH__INVDELTATIME;
441 case pwr_eType_String:
443 snprintf(String, MaxSize,
"%s", (
char*)Value);
445 case pwr_eType_ProString: {
446 int len = MIN(strlen((
char*)Value), MaxSize-1);
449 for (i = 0; i < len; i++)
458 String[MaxSize - 1] = 0;
466 pwr_eType Type,
const char* String,
void* Value)
473 pwr_tInt64 i64val = 0;
477 pwr_tUInt64 ui64val = 0;
492 pwr_Assert(String != NULL);
493 pwr_Assert(Value != NULL);
496 case pwr_eType_Boolean:
497 if (*String !=
'\0') {
498 i32val = strtoul(String, &endp, 0);
499 if (errno == ERANGE || *endp !=
'\0' || (i32val != 0 && i32val != 1)) {
505 memcpy(Value, &bval,
sizeof(bval));
508 case pwr_eType_Float32:
509 if (*String !=
'\0') {
510 f64val = strtod(String, &endp);
511 if (errno == ERANGE || *endp !=
'\0' || fabs(f64val) > FLT_MAX) {
512 sts = CDH__INVFLOAT32;
517 memcpy(Value, &f32val,
sizeof(f32val));
520 case pwr_eType_Float64:
521 if (*String !=
'\0') {
522 f64val = strtod(String, &endp);
523 if (errno == ERANGE || *endp !=
'\0' || fabs(f64val) > DBL_MAX) {
524 sts = CDH__INVFLOAT64;
528 memcpy(Value, &f64val,
sizeof(f64val));
532 *((
char*)Value) = *String;
536 if (*String !=
'\0') {
537 i32val = strtol(String, &endp, 0);
538 if (errno == ERANGE || *endp !=
'\0' || i32val > SCHAR_MAX
539 || i32val < SCHAR_MIN) {
545 memcpy(Value, &i8val,
sizeof(i8val));
548 case pwr_eType_Int16:
549 if (*String !=
'\0') {
550 i32val = strtol(String, &endp, 0);
551 if (errno == ERANGE || *endp !=
'\0' || i32val > SHRT_MAX
552 || i32val < SHRT_MIN) {
558 memcpy(Value, &i16val,
sizeof(i16val));
561 case pwr_eType_Int32:
562 case pwr_eType_Status:
563 case pwr_eType_NetStatus:
565 if (*String !=
'\0') {
566 i32val = strtol(String, &endp, 0);
567 if (errno == ERANGE || *endp !=
'\0' || i32val > INT_MAX
568 || i32val < INT_MIN) {
573 memcpy(Value, &i32val,
sizeof(i32val));
576 case pwr_eType_Int64:
577 if (*String !=
'\0') {
578 if (sscanf(String, pwr_dFormatInt64, &i64val) != 1) {
583 memcpy(Value, &i64val,
sizeof(i64val));
586 case pwr_eType_UInt8:
587 while (*String && isspace(*String))
589 if (*String !=
'\0') {
590 ui32val = strtoul(String, &endp, 0);
591 if (errno == ERANGE || *endp !=
'\0' || ui32val > UCHAR_MAX
598 memcpy(Value, &ui8val,
sizeof(ui8val));
601 case pwr_eType_UInt16:
602 while (*String && isspace(*String))
604 if (*String !=
'\0') {
605 ui32val = strtoul(String, &endp, 0);
606 if (errno == ERANGE || *endp !=
'\0' || ui32val > USHRT_MAX
608 sts = CDH__INVUINT16;
613 memcpy(Value, &ui16val,
sizeof(ui16val));
616 case pwr_eType_UInt32:
618 while (*String && isspace(*String))
620 if (*String !=
'\0') {
621 ui32val = strtoul(String, &endp, 0);
622 if (errno == ERANGE || *endp !=
'\0' || ui32val > UINT_MAX
624 sts = CDH__INVUINT32;
628 memcpy(Value, &ui32val,
sizeof(ui32val));
631 case pwr_eType_UInt64:
632 if (*String !=
'\0') {
633 if (sscanf(String, pwr_dFormatUInt64, &ui64val) != 1) {
634 sts = CDH__INVUINT32;
638 memcpy(Value, &ui64val,
sizeof(ui64val));
641 case pwr_eType_String:
643 case pwr_eType_ProString:
644 strcpy(Value, String);
648 timlen = strlen(String);
653 memcpy(timbuf, String, MIN(
sizeof(timbuf), timlen));
654 timbuf[MIN(
sizeof(timbuf), timlen)] =
'\0';
660 memcpy(Value, &timeval,
sizeof(timeval));
663 case pwr_eType_DeltaTime:
664 timlen = strlen(String);
666 sts = CDH__INVDELTATIME;
669 memcpy(timbuf, String, MIN(
sizeof(timbuf), timlen));
670 timbuf[MIN(
sizeof(timbuf), timlen)] =
'\0';
673 sts = CDH__INVDELTATIME;
676 memcpy(Value, &dtimeval,
sizeof(dtimeval));
679 case pwr_eType_ClassId:
680 while (*String && isspace(*String))
682 if (*String !=
'\0') {
687 memcpy(Value, &cidval,
sizeof(cidval));
690 case pwr_eType_VolumeId:
691 while (*String && isspace(*String))
693 if (*String !=
'\0') {
698 memcpy(Value, &vidval,
sizeof(vidval));
701 case pwr_eType_TypeId:
702 while (*String && isspace(*String))
704 if (*String !=
'\0') {
709 memcpy(Value, &tidval,
sizeof(tidval));
712 case pwr_eType_ObjectIx:
713 while (*String && isspace(*String))
715 if (*String !=
'\0') {
720 memcpy(Value, &oixval,
sizeof(oixval));
739 m = 1 << (noofbits - 1);
741 for (i = 0; i < noofbits; i++) {
766 pwr_Assert(cid != NULL);
768 lcid.
pwr = pwr_cNClassId;
772 if (*s ==
'C' || *s ==
'c')
775 if (sscanf(s,
"%d.%d:%d%*s", &vid_1, &vid_0, &cix) != 3)
778 if (vid_1 > cdh_cMaxVidGroup || vid_0 > cdh_cMaxVidGroup || cix > cdh_cMaxCix)
781 lcid.
c.vid_1 = vid_1;
782 lcid.
c.vid_0 = vid_0;
809 pwr_Assert(oid != NULL);
811 loid.
pwr = pwr_cNObjid;
815 if (*s ==
'O' || *s ==
'o')
817 if (*s ==
'A' || *s ==
'a')
820 if (sscanf(s,
"%d.%d.%d.%d:%u%*s", &vid_3, &vid_2, &vid_1, &vid_0, &oix) != 5)
823 if (vid_3 > cdh_cMaxVidGroup || vid_2 > cdh_cMaxVidGroup
824 || vid_1 > cdh_cMaxVidGroup || vid_0 > cdh_cMaxVidGroup) {
829 loid.
o.vid_2 = vid_2;
830 loid.
o.vid_1 = vid_1;
831 loid.
o.vid_0 = vid_0;
862 pwr_Assert(aref != NULL);
866 for (t = s; *t; t++) {
867 if (state == 0 && *t ==
'(') {
871 }
else if (state == 1 && *t ==
')') {
878 }
else if (state == 2 && *t ==
'.') {
882 }
else if (state == 3 && *t ==
']') {
889 body_str[idx++] = *t;
891 offset_str[idx++] = *t;
893 size_str[idx++] = *t;
899 memset(&a, 0,
sizeof(a));
915 if (sscanf(offset_str,
"%u", &a.
Offset) != 1)
917 if (sscanf(size_str,
"%u", &a.
Size) != 1)
946 pwr_Assert(tid != NULL);
948 ltid.
pwr = pwr_cNTypeId;
952 if (*s ==
'T' || *s ==
't')
955 if (sscanf(s,
"%d.%d:%d.%d.%d%*s", &vid_1, &vid_0, &bit, &tyg, &tix) != 5)
958 if (vid_0 > cdh_cMaxVidGroup || vid_1 > cdh_cMaxVidGroup || bit > 1)
962 if (tyg > cdh_cMaxCix || tix > cdh_cMaxBix)
965 ltid.
c.vid_1 = vid_1;
966 ltid.
c.vid_0 = vid_0;
967 ltid.
c.must_be_zero = 0;
972 if (tyg > cdh_cMaxTyg || tix > cdh_cMaxTix)
975 ltid.
t.vid_1 = vid_1;
976 ltid.
t.vid_0 = vid_0;
977 ltid.
t.must_be_one = 1;
1003 pwr_Assert(vid != NULL);
1005 lvid.
pwr = pwr_cNVolumeId;
1009 if (*s ==
'V' || *s ==
'v')
1011 if (*s ==
'O' || *s ==
'o')
1013 if (*s ==
'A' || *s ==
'a')
1016 if (sscanf(s,
"%d.%d.%d.%d%*s", &vid_3, &vid_2, &vid_1, &vid_0) != 4)
1019 if (vid_3 > cdh_cMaxVidGroup || vid_2 > cdh_cMaxVidGroup
1020 || vid_1 > cdh_cMaxVidGroup || vid_0 > cdh_cMaxVidGroup)
1023 lvid.
v.vid_3 = vid_3;
1024 lvid.
v.vid_2 = vid_2;
1025 lvid.
v.vid_1 = vid_1;
1026 lvid.
v.vid_0 = vid_0;
1030 return CDH__SUCCESS;
1046 pwr_Assert(oix != NULL);
1051 if (*s ==
'X' || *s ==
'x')
1054 loix = strtoul(s, NULL, 0);
1055 if (errno == ERANGE || loix > cdh_cMaxOix)
1060 return CDH__SUCCESS;
1072 pwr_Assert(sid != NULL);
1078 if (*s ==
'S' || *s ==
's')
1081 if (sscanf(s,
"%d.%d.%d.%d:%u%*s", &vid_3, &vid_2, &vid_1, &vid_0, &six) != 5)
1084 if (vid_3 != cdh_eVid3_subid || vid_2 > cdh_cMaxVidGroup
1085 || vid_1 > cdh_cMaxVidGroup || vid_0 > cdh_cMaxVidGroup) {
1089 lrid.
r.vid_3 = vid_3;
1090 lrid.
r.vid_2 = vid_2;
1091 lrid.
r.vid_1 = vid_1;
1092 lrid.
r.vid_0 = vid_0;
1097 return CDH__SUCCESS;
1109 pwr_Assert(did != NULL);
1115 if (*s ==
'D' || *s ==
'd')
1118 if (sscanf(s,
"%d.%d.%d.%d:%u%*s", &vid_3, &vid_2, &vid_1, &vid_0, &dix) != 5)
1121 if (vid_3 != cdh_eVid3_dlid || vid_2 > cdh_cMaxVidGroup
1122 || vid_1 > cdh_cMaxVidGroup || vid_0 > cdh_cMaxVidGroup) {
1126 lrid.
r.vid_3 = vid_3;
1127 lrid.
r.vid_2 = vid_2;
1128 lrid.
r.vid_1 = vid_1;
1129 lrid.
r.vid_0 = vid_0;
1134 return CDH__SUCCESS;
1158 lcid.
c.bix != 0 || lcid.
c.must_be_zero != 0) {
1159 snprintf(s, size,
"%s%u.%u:?%u?", (prefix ?
"_C" :
""), lcid.
c.vid_1,
1160 lcid.
c.vid_0, lcid.
c.cix);
1162 snprintf(s, size,
"%s%u.%u:%u", (prefix ?
"_C" :
""), lcid.
c.vid_1,
1163 lcid.
c.vid_0, lcid.
c.cix);
1194 if (ltid.
t.must_be_one == 0) {
1195 snprintf(s, size,
"%s%u.%u:0.%u.%u", (prefix ?
"_T" :
""), ltid.
c.vid_1,
1196 ltid.
c.vid_0, ltid.
c.cix, ltid.
c.bix);
1198 snprintf(s, size,
"%s%u.%u:1.%u.%u", (prefix ?
"_T" :
""), ltid.
t.vid_1,
1199 ltid.
t.vid_0, ltid.
t.tyg, ltid.
t.tix);
1218 snprintf(s, size,
"%s%u", (prefix ?
"_X" :
""), oix);
1238 if (aref->
Body != pwr_cNTypeId) {
1243 sprintf(tmp,
"[%d.%d]", aref->
Offset, aref->
Size);
1248 sprintf(s,
"%s", (prefix ?
"_A" :
""));
1249 strncat(s, ls, size - strlen(s));
1268 static char ls[200];
1293 static char ls[
sizeof(
"_N255.255.255.255:")];
1297 sprintf(ls,
"%s%u.%u.%u.%u%s", (prefix ?
"_N" :
""), lvid.
v.vid_3,
1298 lvid.
v.vid_2, lvid.
v.vid_1, lvid.
v.vid_0, (suffix ?
":" :
""));
1301 return strcat(s, ls);
1322 snprintf(s, size,
"%s%u.%u.%u.%u:%u", (prefix ?
"_O" :
""), loid.
o.
vid_3,
1323 loid.
o.vid_2, loid.
o.vid_1, loid.
o.vid_0, loid.
o.oix);
1343 static char ls[
sizeof(
"_O255.255.255.255:4294967295")];
1347 sprintf(ls,
"%s%u.%u.%u.%u:%u", (prefix ?
"_O" :
""), loid.
o.
vid_3,
1348 loid.
o.vid_2, loid.
o.vid_1, loid.
o.vid_0, loid.
o.oix);
1370 static char str[40];
1374 sprintf(str,
"%3.3u_%3.3u_%3.3u_%3.3u_%8.8x", loid.
o.
vid_3, loid.
o.vid_2,
1375 loid.
o.vid_1, loid.
o.vid_0, loid.
o.oix);
1378 return strcat(s, str);
1402 char* s,
int size,
pwr_tVolumeId vid,
int prefix,
int suffix)
1405 static char ls[
sizeof(
"_V255.255.255.255:")];
1410 snprintf(s, size,
"%s%u.%u.%u.%u%s", (prefix ?
"_V" :
""), lvid.
v.vid_3,
1411 lvid.
v.vid_2, lvid.
v.vid_1, lvid.
v.vid_0, (suffix ?
":" :
""));
1414 sprintf(ls,
"%s%u.%u.%u.%u%s", (prefix ?
"_V" :
""), lvid.
v.vid_3,
1415 lvid.
v.vid_2, lvid.
v.vid_1, lvid.
v.vid_0, (suffix ?
":" :
""));
1434 snprintf(s, size,
"%3.3u_%3.3u_%3.3u_%3.3u", lvid.
v.vid_3, lvid.
v.vid_2,
1435 lvid.
v.vid_1, lvid.
v.vid_0);
1456 snprintf(s, size,
"%s%u.%u.%u.%u:%u", (prefix ?
"_S" :
""), lrid.
r.vid_3,
1457 lrid.
r.vid_2, lrid.
r.vid_1, lrid.
r.vid_0, lrid.
r.rix);
1476 snprintf(s, size,
"%s%u.%u.%u.%u:%u", (prefix ?
"_D" :
""), lrid.
r.vid_3,
1477 lrid.
r.vid_2, lrid.
r.vid_1, lrid.
r.vid_0, lrid.
r.rix);
1482 cdh_ObjName(&f->name, name);
1492 str_ToUpper(on->norm, on->orig);
1493 on->pack.key = cdh_PackName(on->norm);
1527 static const char* cvttab[] = {
1529 ~+++++++++++++++++++++++++++++++\
1530 +*******************************\
1531 ********************************\
1532 ********************************\
1533 ++++++++++++++++++++++++++++++++\
1534 ********************************\
1535 ********************************\
1536 ********************************\
1540 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1541 !!!!!!!!*!!!!-.!0123456789:!!!!!\
1542 !A!CD!!!!!!!!!!O!!!ST!V!X!!!!!!_\
1543 !^!^^!!!!!!!!!!^!!!^^!^!^!!!!!!!\
1544 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1545 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1546 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1547 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1551 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1552 !!!!$!!!!!!!!!!!0123456789*!!!!!\
1553 !ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!_\
1554 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1555 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1556 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1557 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1558 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1562 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1563 !!!!$!!!!*!!!-!!0123456789!!!!!!\
1564 !ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!_\
1565 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1566 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1567 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1568 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1569 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1573 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1574 !!!!$!!!!!!!!!!!0123456789!!!!!!\
1575 !ABCDEFGHIJKLMNOPQRSTUVWXYZ*!!!_\
1576 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1577 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1578 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1579 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
1580 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!\
1584 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1585 !!!!!!!!!!!!!!!!0123456789!!!!!!\
1586 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!\
1587 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1588 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1589 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1590 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1591 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1595 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1596 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1597 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1598 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1599 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1600 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1601 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1602 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1606 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1607 !!!!!!!!!*!!!!.!0123456789:!!!!!\
1608 !!!!!!!!!!!!!!!!!!!!T!!!!!!!!!!_\
1609 !!!!!!!!!!!!!!!!!!!!^!!!!!!!!!!!\
1610 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1611 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1612 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1613 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1617 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1618 !!!!!!!!!!!!!!*!0123456789!!!!!!\
1619 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1620 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1621 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1622 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1623 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1624 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1628 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1629 !!!!!!!!!!!!!!!!0123456789!!!!!!\
1630 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!\
1631 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1632 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1633 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1634 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1635 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1639 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1640 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1641 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1642 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1643 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1644 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1645 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1646 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1650 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1651 !!!!$!!!!!!!!**!0123456789*!!!!!\
1652 !ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!_\
1653 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1654 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1655 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1656 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
1657 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!\
1661 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1662 !!!!$!!!!!!!!-*!0123456789!!!!!!\
1663 !ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!_\
1664 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1665 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1666 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1667 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
1668 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!\
1672 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1673 !!!!$!!!!!!!!!.!0123456789!!!!!!\
1674 !ABCDEFGHIJKLMNOPQRSTUVWXYZ*!!!_\
1675 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1676 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1677 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1678 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
1679 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!\
1683 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1684 !!!!!!!!!!!!!!!!0123456789!!!!!!\
1685 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!\
1686 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1687 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1688 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1689 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1690 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1694 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1695 !!!!!!!!!!!!!!*!!!!!!!!!!!!!!!!!\
1696 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1697 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1698 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1699 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1700 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1701 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1704 ~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1705 !!!!$!!!!!!!!-.!0123456789:!!!!!\
1706 !ABCDEFGHIJKLMNOPQRSTUVWXYZ[!]!_\
1707 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
1708 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1709 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1710 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
1711 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!"
1718 static const char ascii7tab[] = {
"\
1719 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1720 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1721 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1722 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1723 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1724 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
1725 AAAAAAACEEEEIIII!NOOOOOOOUUUUY!!\
1726 aaaaaaaceeeeiiii!nooooooouuuuy!!\
1730 if (len >=
sizeof(origName)) {
1731 *sts = CDH__NAMELEN;
1738 memset(pn, 0,
sizeof(*pn));
1742 pn->flags.
b.parent = 1;
1744 pn->parseFlags.m = flags;
1757 while (inp <= name + len) {
1759 if (cvttab[state][c] ==
'!') {
1760 printf(
"State: %d, %c\n", state, c);
1761 lsts = CDH__INVCHAR;
1763 }
else if (cvttab[state][c] ==
'^')
1766 c = cvttab[state][c];
1768 if (pn->parseFlags.
b.ascii_7 && ascii7tab[c] !=
'!') {
1778 }
else if (*inp ==
'.') {
1781 }
else if (pn->flags.
b.parent) {
1786 }
else if (c ==
'~') {
1789 }
else if (c ==
'+') {
1801 pn->flags.
b.idString = 1;
1824 lsts = cdh_StringToSubid(segp, &pn->uId.sid);
1828 lsts = cdh_StringToDlid(segp, &pn->uId.did);
1836 lsts = CDH__INVIDCHAR;
1844 }
else if (c ==
'*') {
1846 lsts = CDH__INVSYNTAX;
1851 pn->flags.
b.idString = 1;
1856 if (*(inp + 1) ==
'_')
1862 lsts = CDH__INVIDCHAR;
1871 }
else if (c ==
'-') {
1873 lsts = CDH__INVSYNTAX;
1878 pn->flags.
b.parent = 1;
1886 lsts = CDH__INVIDCHAR;
1904 lsts = CDH__INVTYPENAME;
1913 strcpy(pn->body[pn->nBody].name.orig, segcp);
1914 strcpy(pn->body[pn->nBody].name.norm, segp);
1915 pn->body[pn->nBody].name.pack.key = cdh_PackName(segp);
1931 lsts = CDH__INVTYPENAME;
1936 pn->flags.
b.bodyName = 1;
1941 strcpy(pn->body[pn->nBody].name.orig, segcp);
1942 strcpy(pn->body[pn->nBody].name.norm, segp);
1943 pn->body[pn->nBody].name.pack.key = cdh_PackName(segp);
1949 }
else if (c ==
'-') {
1951 lsts = CDH__INVTYPENAME;
1960 strcpy(pn->body[pn->nBody].name.orig, segcp);
1961 strcpy(pn->body[pn->nBody].name.norm, segp);
1962 pn->body[pn->nBody].name.pack.key = cdh_PackName(segp);
1979 pn->flags.
b.attribute = 1;
1984 strcpy(pn->attribute[0].name.orig, segcp);
1985 strcpy(pn->attribute[0].name.norm, segp);
1986 pn->attribute[0].name.pack.key = cdh_PackName(segp);
1991 }
else if (c ==
'*') {
1993 lsts = CDH__INVATTRNAME;
1998 pn->flags.
b.attribute = 1;
2003 strcpy(pn->attribute[0].name.orig, segcp);
2004 strcpy(pn->attribute[0].name.norm, segp);
2005 pn->attribute[0].name.pack.key = cdh_PackName(segp);
2028 pn->uId.aref.
Body = pn->bid;
2029 pn->flags.
b.bodyId = 1;
2033 if (*(inp + 1) ==
'[') {
2049 lsts = CDH__INVCHAR;
2054 pn->flags.
b.object = 1;
2059 strcpy(pn->object[pn->nObject].name.orig, segcp);
2060 strcpy(pn->object[pn->nObject].name.norm, segp);
2061 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2066 }
else if (c ==
'*') {
2068 lsts = CDH__INVCHAR;
2078 strcpy(pn->volume.name.orig, segcp);
2079 strcpy(pn->volume.name.norm, segp);
2080 pn->volume.name.pack.key = cdh_PackName(segp);
2081 pn->flags.
b.volume = 1;
2083 }
else if (*inp ==
'-') {
2084 pn->flags.
b.object = 1;
2089 strcpy(pn->object[pn->nObject].name.orig, segcp);
2090 strcpy(pn->object[pn->nObject].name.norm, segp);
2091 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2094 }
else if (*inp ==
'.') {
2095 pn->flags.
b.object = 1;
2100 strcpy(pn->object[pn->nObject].name.orig, segcp);
2101 strcpy(pn->object[pn->nObject].name.norm, segp);
2102 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2121 pn->flags.
b.object = 1;
2126 strcpy(pn->object[pn->nObject].name.orig, segcp);
2127 strcpy(pn->object[pn->nObject].name.norm, segp);
2128 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2134 }
else if (c ==
'*') {
2136 lsts = CDH__INVCHAR;
2141 pn->flags.
b.object = 1;
2146 strcpy(pn->object[pn->nObject].name.orig, segcp);
2147 strcpy(pn->object[pn->nObject].name.norm, segp);
2148 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2154 }
else if (c ==
'-') {
2156 lsts = CDH__INVCHAR;
2161 pn->flags.
b.object = 1;
2166 strcpy(pn->object[pn->nObject].name.orig, segcp);
2167 strcpy(pn->object[pn->nObject].name.norm, segp);
2168 pn->object[pn->nObject].name.pack.key = cdh_PackName(segp);
2183 lsts = CDH__INVATTRNAME;
2188 pn->flags.
b.attribute = 1;
2193 strcpy(pn->attribute[pn->nAttribute].name.orig, segcp);
2194 strcpy(pn->attribute[pn->nAttribute].name.norm, segp);
2195 pn->attribute[pn->nAttribute].name.pack.key = cdh_PackName(segp);
2200 }
else if (c ==
'*') {
2202 lsts = CDH__INVATTRNAME;
2207 pn->flags.
b.attribute = 1;
2212 strcpy(pn->attribute[pn->nAttribute].name.orig, segcp);
2213 strcpy(pn->attribute[pn->nAttribute].name.norm, segp);
2214 pn->attribute[pn->nAttribute].name.pack.key = cdh_PackName(segp);
2220 }
else if (c ==
'.') {
2222 lsts = CDH__INVATTRNAME;
2227 pn->flags.
b.attribute = 1;
2232 strcpy(pn->attribute[pn->nAttribute].name.orig, segcp);
2233 strcpy(pn->attribute[pn->nAttribute].name.norm, segp);
2234 pn->attribute[pn->nAttribute].name.pack.key = cdh_PackName(segp);
2254 pn->index[pn->nAttribute - 1] = number;
2255 pn->hasIndex[pn->nAttribute - 1] = 1;
2256 pn->flags.
b.index = 1;
2259 pn->offset = number;
2260 pn->uId.aref.
Offset = pn->offset;
2264 pn->uId.aref.
Size = pn->size;
2265 pn->flags.
b.index = 1;
2271 number = number * 10 + (c -
'0');
2272 if (number > 65535) {
2273 lsts = CDH__INVATTRINDEX;
2292 if (pn->nObject > 1)
2293 pn->flags.
b.path = 1;
2305 unsigned int len = strlen(name);
2306 const char* s = name;
2307 unsigned char hash = 0;
2310 hash = (hash * 3) ^ *s++;
2314 pack.
c.first = name[0];
2315 pack.
c.last = name[len - 1];
2328 static char buf[500];
2330 return str_ToLower(buf, s);
2343 static char str[32];
2346 case pwr_mOpSys_PPC_LINUX:
2347 strcpy(str,
"ppc_linux");
2349 case pwr_mOpSys_X86_LINUX:
2350 strcpy(str,
"x86_linux");
2352 case pwr_mOpSys_X86_64_LINUX:
2353 strcpy(str,
"x86_64_linux");
2355 case pwr_mOpSys_X86_64_MACOS:
2356 strcpy(str,
"x86_64_macos");
2358 case pwr_mOpSys_ARM_LINUX:
2359 strcpy(str,
"arm_linux");
2361 case pwr_mOpSys_ARM64_LINUX:
2362 strcpy(str,
"arm64_linux");
2364 case pwr_mOpSys_X86_64_FREEBSD:
2365 strcpy(str,
"x86_64_freebsd");
2367 case pwr_mOpSys_X86_64_OPENBSD:
2368 strcpy(str,
"x86_64_openbsd");
2370 case pwr_mOpSys_X86_CYGWIN:
2371 strcpy(str,
"x86_cygwin");
2389 static char str[80];
2392 case pwr_mOpSys_PPC_LINUX:
2393 strcpy(str,
"os_linux/hw_ppc");
2395 case pwr_mOpSys_X86_LINUX:
2396 strcpy(str,
"os_linux/hw_x86");
2398 case pwr_mOpSys_X86_64_LINUX:
2399 strcpy(str,
"os_linux/hw_x86_64");
2401 case pwr_mOpSys_X86_64_MACOS:
2402 strcpy(str,
"os_macos/hw_x86_64");
2404 case pwr_mOpSys_ARM_LINUX:
2405 strcpy(str,
"os_linux/hw_arm");
2407 case pwr_mOpSys_ARM64_LINUX:
2408 strcpy(str,
"os_linux/hw_arm64");
2410 case pwr_mOpSys_X86_64_FREEBSD:
2411 strcpy(str,
"os_freebsd/hw_x86_64");
2413 case pwr_mOpSys_X86_64_OPENBSD:
2414 strcpy(str,
"os_openbsd/hw_x86_64");
2416 case pwr_mOpSys_X86_CYGWIN:
2417 strcpy(str,
"os_cygwin/hw_x86");
2425 int cdh_IsClassVolume(
pwr_tVid vid)
2437 if (arp->
Flags.
b.DisableAttr)
2438 cast_aref.
Offset -= pwr_cAlignLW;
2439 cast_aref.
Offset -= pwr_cAlignLW;
2441 cast_aref.
Flags.
b.ObjectAttr = 0;
2442 cast_aref.
Flags.
b.CastAttr = 0;
2443 cast_aref.
Flags.
b.DisableAttr = 0;
2444 cast_aref.
Flags.
b.Indirect = 0;
2453 dis_aref.
Offset -= pwr_cAlignLW;
2455 dis_aref.
Flags.
b.ObjectAttr = 0;
2456 dis_aref.
Flags.
b.CastAttr = 0;
2457 dis_aref.
Flags.
b.DisableAttr = 0;
2470 void cdh_SuppressSuper(
char* out,
char* in)
2473 while (str_StartsWith(s,
"Super."))
2478 void cdh_SuppressSuperAll(
char* out,
char* in)
2482 for (s = in, t = out; *s;) {
2483 if (str_StartsWith(s,
"Super."))
2494 int cdh_TypeToMaxStrSize(pwr_eType type,
int attr_size,
int attr_elements)
2499 case pwr_eType_Boolean:
2502 case pwr_eType_Int64:
2505 case pwr_eType_UInt64:
2508 case pwr_eType_Enum:
2509 case pwr_eType_Mask:
2510 case pwr_eType_Status:
2511 case pwr_eType_NetStatus:
2512 case pwr_eType_Int32:
2515 case pwr_eType_UInt32:
2518 case pwr_eType_Int16:
2521 case pwr_eType_UInt16:
2524 case pwr_eType_Int8:
2527 case pwr_eType_UInt8:
2530 case pwr_eType_Char:
2533 case pwr_eType_Float32:
2536 case pwr_eType_Float64:
2539 case pwr_eType_Time:
2542 case pwr_eType_DeltaTime:
2545 case pwr_eType_AttrRef:
2548 case pwr_eType_TypeId:
2549 case pwr_eType_ClassId:
2550 case pwr_eType_Objid:
2553 case pwr_eType_VolumeId:
2556 case pwr_eType_String:
2557 case pwr_eType_Text:
2558 size = attr_size / attr_elements - 1;
2566 int cdh_TypeToSize(pwr_eType type)
2571 case pwr_eType_Boolean:
2574 case pwr_eType_Enum:
2577 case pwr_eType_Mask:
2580 case pwr_eType_Status:
2581 case pwr_eType_NetStatus:
2584 case pwr_eType_Int64:
2585 case pwr_eType_UInt64:
2586 size =
sizeof(pwr_tInt64);
2588 case pwr_eType_Int32:
2589 case pwr_eType_UInt32:
2592 case pwr_eType_Int16:
2593 case pwr_eType_UInt16:
2596 case pwr_eType_Int8:
2597 case pwr_eType_UInt8:
2600 case pwr_eType_Char:
2603 case pwr_eType_Float32:
2606 case pwr_eType_Float64:
2609 case pwr_eType_Time:
2610 size =
sizeof(pwr_tTime);
2612 case pwr_eType_DeltaTime:
2615 case pwr_eType_AttrRef:
2618 case pwr_eType_TypeId:
2621 case pwr_eType_ClassId:
2624 case pwr_eType_ObjectIx:
2627 case pwr_eType_RefId:
2630 case pwr_eType_CastId:
2633 case pwr_eType_DisableAttr:
2636 case pwr_eType_Objid:
2639 case pwr_eType_VolumeId:
2660 static const char valtab[] =
"\
2661 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
2662 !!!!$!!!!!!!!!!!0123456789!!!!!!\
2663 !ABCDEFGHIJKLMNOPQRSTUVWXYZ!!!!_\
2664 !^^^^^^^^^^^^^^^^^^^^^^^^^^!!!!!\
2665 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
2666 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\
2667 ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ!ÑÒÓÔÕÖרÙÚÛÜÝ!!\
2668 ^^^^^^^^^^^^^^^^!^^^^^^^^^^^^^!!";
2678 if (valtab[(
unsigned char)*s1] ==
'!') {
2706 int len = strlen(s);
2709 for (i = len - 1; i >= 0; i--) {
2710 if (isdigit(s[i]) == 0)
2716 strncpy(name, s, i + 1);
2717 sscanf(&s[i + 1],
"%d", &num);
2719 if (s[i + 1] ==
'0')
2720 sprintf(&name[i + 1],
"%0*d", len - i - 1, num);
2722 sprintf(&name[i + 1],
"%d", num);
2725 return CDH__NAMELEN;
2728 return CDH__SUCCESS;
2743 int i, j, last_i = 0;
2745 if (segments == 0) {
2746 strcpy(outname,
"");
2750 for (i = 0; i < segments; i++) {
2751 s[i] = strrchr(name,
'-');
2759 for (j = 0; j <= last_i; j++) {
2764 strcpy(outname, name);
2766 strcpy(outname, s[last_i] + 1);
2775 if (info->Flags & PWR_MASK_POINTER && !(info->Flags & PWR_MASK_PRIVATE))
2777 return sizeof(pwr_tUInt64) * info->Elements;
Include file for Cdh Class definition handler.
Include file for Time management.
#define cdh_cManufactClassVolMax
Largest value of volume identity for manufacturer classvolumes.
#define cdh_cManufactClassVolMin
Smallest value of volume identity for manufacturer classvolumes.
#define cdh_cSystemClassVolMin
Smallest value of volume identity for system classvolumes.
#define cdh_cUserClassVolMin
Smallest value of volume identity for user classvolumes.
#define cdh_cSystemClassVolMax
Largest value of volume identity for system classvolumes.
#define cdh_cUserClassVolMax
Largest value of volume identity for user classvolumes.
@ cdh_eId_objid
Object identity.
@ cdh_eId_objectIx
Object index.
@ cdh_eId_typeId
Type identity.
@ cdh_eId_volumeId
Volume identity.
@ cdh_eId_classId
Class identity.
@ cdh_eId_dlid
Direct link identity.
@ cdh_eId_aref
Attribute reference.
@ cdh_eId_subid
Subscription identity.
char * cdh_VolumeIdToString(char *s, int size, pwr_tVolumeId vid, int prefix, int suffix)
Converts a volume identifier, 'vid' to a string.
void cdh_DlidToString(char *s, int size, pwr_tDlid did, int prefix)
Converts a direct link identifier, 'did' to a string.
int cdh_ObjidIsNull(pwr_tObjid Objid)
Test if object identity is null.
char * cdh_ObjidToFnString(char *s, pwr_tOid oid)
Converts a object identifier, 'oid' to a filename string.
pwr_tStatus cdh_StringToAref(const char *s, pwr_tAttrRef *aref)
Convert AttrRef string to id.
void cdh_ObjectIxToString(char *s, int size, pwr_tObjectIx oix, int prefix)
Converts a object index, 'oix' to a string.
char * cdh_AttrRefToString(pwr_sAttrRef *aref, int prefix)
Converts an attribute reference , 'aref' to a string.
int cdh_ObjidIsNotNull(pwr_tObjid Objid)
Test if object identity is not null.
char * cdh_VolumeIdToFnString(char *s, int size, pwr_tVolumeId vid)
Converts a volume identifier, 'vid' to a filename string.
pwr_tStatus cdh_StringToObjid(const char *s, pwr_tObjid *oid)
Convert Objid string to id.
char * cdh_OpSysToDirStr(pwr_mOpSys opsys)
Convert operating system to directory string.
pwr_tStatus cdh_AttrValueToString(pwr_eType Type, void *Value, char *String, int MaxSize)
Converts an attribute given in internal binary format to a text string.
pwr_tStatus cdh_StringToClassId(const char *s, pwr_tClassId *cid)
Convert ClassId string to id.
void cdh_CutNameSegments(char *outname, char *name, int segments)
Cut the leading segments of an object name.
char * cdh_Low(const char *s)
Convert string to lower case.
char * cdh_StringToObjectName(char *t, const char *s)
Convert string to valid object name.
pwr_tStatus cdh_StringToVolumeId(const char *s, pwr_tVolumeId *vid)
Convert VolumeId string to id.
void cdh_SubidToString(char *s, int size, pwr_tSubid sid, int prefix)
Converts a subscription identifier, 'sid' to a string.
pwr_tUInt32 cdh_AttrElemSize(pwr_sParInfo *info)
Get attribute array element size.
void cdh_MaskToBinaryString(unsigned int mask, int noofbits, char *str)
pwr_tStatus cdh_StringToObjectIx(const char *s, pwr_tObjectIx *oix)
Converts ObjectIx string to index.
void cdh_TypeIdToString(char *s, int size, pwr_tTypeId tid, int prefix)
Converts a type identifier, 'tid' to a string.
void cdh_OidToString(char *s, int size, pwr_tObjid oid, int prefix)
Converts a object identifier, 'oid' to a string.
void cdh_ClassIdToString(char *s, int size, pwr_tClassId cid, int prefix)
Converts a class identifier, 'cid' to a string.
pwr_tClassId cdh_ClassObjidToId(pwr_tObjid Objid)
Convert Objid to ClassId.
pwr_tStatus cdh_NextObjectName(char *t, const char *s)
Create an similar objectname from another object name.
pwr_tObjid cdh_ClassIdToObjid(pwr_tClassId Class)
Convert ClassId to Objid.
pwr_tTypeId cdh_TypeObjidToId(pwr_tObjid Objid)
Convert Objid to TypeId.
int cdh_ObjidCompare(pwr_tObjid Objid_1, pwr_tObjid Objid_2)
Compare two object identities.
pwr_tStatus cdh_StringToAttrValue(pwr_eType Type, const char *String, void *Value)
int cdh_ObjidIsEqual(pwr_tObjid Objid_1, pwr_tObjid Objid_2)
Test if two object identities are equal.
void cdh_ArefToString(char *s, int size, pwr_sAttrRef *aref, int prefix)
Converts an attribute reference , 'aref' to a string.
int cdh_ObjidIsNotEqual(pwr_tObjid Objid_1, pwr_tObjid Objid_2)
Test if two object identities are different.
char * cdh_OpSysToStr(pwr_mOpSys opsys)
Convert operating system to string.
pwr_sAttrRef cdh_ObjidToAref(pwr_tObjid Objid)
Converts an objid to an attrref.
pwr_tObjid cdh_TypeIdToObjid(pwr_tTypeId Type)
Convert TypeId to Objid.
pwr_tStatus cdh_StringToTypeId(const char *s, pwr_tTypeId *tid)
Convert TypeId string to id.
int cdh_TypeIdToIndex(pwr_tTypeId Type)
Convert TypeId to index.
char * cdh_NodeIdToString(char *s, pwr_tNodeId nid, int prefix, int suffix)
Converts a volume identifier, 'vid' to a string.
char * cdh_ObjidToString(pwr_tObjid oid, int prefix)
Converts a object identifier, 'oid' to a string.
pwr_tUInt32 cdh_AttrSize(pwr_sParInfo *info)
Get attribute size.
@ time_eFormat_DateAndTime
Display date and time, 01-JAN-1970 01:00:00.00.
pwr_tStatus time_AsciiToA(const char *, pwr_tTime *)
Convert ascii time to timespec.
pwr_tStatus time_AsciiToD(const char *, pwr_tDeltaTime *)
Convert ascii to timespec.
pwr_tStatus time_DtoAscii(pwr_tDeltaTime *, int, char *, int)
Convert a delta time to ascii string.
pwr_tStatus time_AtoAscii(pwr_tTime *, time_eFormat, char *, int)
Convert timespec to ascii.
#define EVEN(a)
Check if value is even.
unsigned int pwr_tUInt32
32-bit unsigned integer type.
char pwr_tAName[399+1]
Full Aref Name type.
double pwr_tFloat64
64-bit float.
char pwr_tChar
Character type.
pwr_tNid pwr_tNodeId
Node identity type.
unsigned int pwr_tVid
Volume identity type.
pwr_tOix pwr_tObjectIx
Object index type.
pwr_tTypeId pwr_tCastId
CastId type.
#define pwr_cNDlid
Zero direct link identity constant.
pwr_tTid pwr_tTypeId
Type identity type.
unsigned int pwr_tBoolean
Boolean type.
pwr_tCid pwr_tClassId
Class identity type.
char pwr_tInt8
8-bit integer type.
pwr_tRid pwr_tSubid
Subscription identity type.
pwr_tOid pwr_tObjid
Object identity type.
short pwr_tInt16
16-bit integer type.
int pwr_tInt32
32-bit integer type.
#define pwr_cNSubid
Zero subscription identity constant.
unsigned char pwr_tUInt8
8-bit unsigned integer type.
int pwr_tStatus
Status type.
pwr_tInt32 pwr_tEnum
Enumeration type.
pwr_tVid pwr_tVolumeId
Volume identity type.
pwr_tRid pwr_tDlid
Direct link identity type.
char pwr_tOName[199+1]
Full Object Name type.
#define ODD(a)
Check if value is odd.
pwr_tRid pwr_tRefId
Reference identity type.
unsigned int pwr_tDisableAttr
DisableAttr type.
unsigned short pwr_tUInt16
16-bit unsigned integer type.
char pwr_tObjName[31+1]
Object name type.
pwr_tUInt32 pwr_tMask
Mask type.
float pwr_tFloat32
32-bit float.
unsigned int vid_3
Object index.
pwr_tUInt32 Size
Attribute size.
pwr_tCid Body
Typeid of attribute, body or class.
pwr_tOid Objid
Object identity.
pwr_mAttrRef Flags
Attribute flags.
pwr_tUInt32 Offset
Offset in body.
struct cdh_mName::@4 b
Bit mask representation.
struct cdh_mParseName::@3 b
Bitmask representation.
Type for representions of object identity.
cdh_mClassObjid c
ClassDef object representation.
cdh_mObjid o
Common object representation.
pwr_tOid pwr
Extern representation.
cdh_mTypeObjid t
TypeDef object representation.
struct cdh_uPackName::@2 c
Name structure.
Type for representations of reference identity.
cdh_mRid r
Intern representation.
pwr_tRid pwr
Extern representation.
Type for representation of type identity.
cdh_mCid c
Class identity representation.
cdh_mTid t
Type identity representation.
pwr_tCid pwr
Extern representation.
Type for representation of volume identity.
cdh_mVid v
Intern representation.
pwr_tVid pwr
Extern representation.
struct pwr_mAttrRef::@1 b
Bitmask representation.