\r
The XenStore is ASCII string based, and has a structure and semantics\r
similar to a filesystem. There are files and directories, the directories\r
- able to contain files or other directories. The depth of the hierachy\r
+ able to contain files or other directories. The depth of the hierarchy\r
is only limited by the XenStore's maximum path length.\r
\r
The communication channel between the XenStore service and other\r
)\r
{\r
CHAR8 *Buf;\r
+ UINTN BufSize;\r
\r
/* +1 for '/' and +1 for '\0' */\r
- Buf = AllocateZeroPool (\r
- AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2);\r
- AsciiStrCat (Buf, DirectoryPath);\r
- if (Node[0] != '\0') {\r
- AsciiStrCat (Buf, "/");\r
- AsciiStrCat (Buf, Node);\r
+ BufSize = AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2;\r
+ Buf = AllocatePool (BufSize);\r
+ ASSERT (Buf != NULL);\r
+\r
+ if (Node[0] == '\0') {\r
+ AsciiSPrint (Buf, BufSize, "%a", DirectoryPath);\r
+ } else {\r
+ AsciiSPrint (Buf, BufSize, "%a/%a", DirectoryPath, Node);\r
}\r
\r
return Buf;\r
{ XENSTORE_STATUS_EISCONN, "EISCONN" },\r
{ XENSTORE_STATUS_E2BIG, "E2BIG" }\r
};\r
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))\r
\r
STATIC\r
XENSTORE_STATUS\r
{\r
CHAR8 AbortStr[2];\r
\r
- if (Abort) {\r
- AsciiStrCpy (AbortStr, "F");\r
- } else {\r
- AsciiStrCpy (AbortStr, "T");\r
- }\r
+ AbortStr[0] = Abort ? 'F' : 'T';\r
+ AbortStr[1] = '\0';\r
\r
return XenStoreSingle (Transaction, XS_TRANSACTION_END, AbortStr, NULL, NULL);\r
}\r