appwrite-cli 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/.github/workflows/npm-publish.yml +41 -0
  2. package/Formula/appwrite.rb +19 -0
  3. package/LICENSE.md +12 -0
  4. package/README.md +102 -0
  5. package/docs/examples/account/create-anonymous-session.md +1 -0
  6. package/docs/examples/account/create-j-w-t.md +1 -0
  7. package/docs/examples/account/create-magic-u-r-l-session.md +4 -0
  8. package/docs/examples/account/create-o-auth2session.md +5 -0
  9. package/docs/examples/account/create-recovery.md +3 -0
  10. package/docs/examples/account/create-session.md +3 -0
  11. package/docs/examples/account/create-verification.md +2 -0
  12. package/docs/examples/account/create.md +5 -0
  13. package/docs/examples/account/delete-session.md +2 -0
  14. package/docs/examples/account/delete-sessions.md +1 -0
  15. package/docs/examples/account/delete.md +1 -0
  16. package/docs/examples/account/get-logs.md +3 -0
  17. package/docs/examples/account/get-prefs.md +1 -0
  18. package/docs/examples/account/get-session.md +2 -0
  19. package/docs/examples/account/get-sessions.md +1 -0
  20. package/docs/examples/account/get.md +1 -0
  21. package/docs/examples/account/update-email.md +3 -0
  22. package/docs/examples/account/update-magic-u-r-l-session.md +3 -0
  23. package/docs/examples/account/update-name.md +2 -0
  24. package/docs/examples/account/update-password.md +3 -0
  25. package/docs/examples/account/update-prefs.md +2 -0
  26. package/docs/examples/account/update-recovery.md +5 -0
  27. package/docs/examples/account/update-session.md +2 -0
  28. package/docs/examples/account/update-verification.md +3 -0
  29. package/docs/examples/avatars/get-browser.md +5 -0
  30. package/docs/examples/avatars/get-credit-card.md +5 -0
  31. package/docs/examples/avatars/get-favicon.md +2 -0
  32. package/docs/examples/avatars/get-flag.md +5 -0
  33. package/docs/examples/avatars/get-image.md +4 -0
  34. package/docs/examples/avatars/get-initials.md +6 -0
  35. package/docs/examples/avatars/get-q-r.md +5 -0
  36. package/docs/examples/database/create-boolean-attribute.md +6 -0
  37. package/docs/examples/database/create-collection.md +6 -0
  38. package/docs/examples/database/create-document.md +6 -0
  39. package/docs/examples/database/create-email-attribute.md +6 -0
  40. package/docs/examples/database/create-enum-attribute.md +7 -0
  41. package/docs/examples/database/create-float-attribute.md +8 -0
  42. package/docs/examples/database/create-index.md +6 -0
  43. package/docs/examples/database/create-integer-attribute.md +8 -0
  44. package/docs/examples/database/create-ip-attribute.md +6 -0
  45. package/docs/examples/database/create-string-attribute.md +7 -0
  46. package/docs/examples/database/create-url-attribute.md +6 -0
  47. package/docs/examples/database/delete-attribute.md +3 -0
  48. package/docs/examples/database/delete-collection.md +2 -0
  49. package/docs/examples/database/delete-document.md +3 -0
  50. package/docs/examples/database/delete-index.md +3 -0
  51. package/docs/examples/database/get-attribute.md +3 -0
  52. package/docs/examples/database/get-collection-usage.md +3 -0
  53. package/docs/examples/database/get-collection.md +2 -0
  54. package/docs/examples/database/get-document.md +3 -0
  55. package/docs/examples/database/get-index.md +3 -0
  56. package/docs/examples/database/get-usage.md +2 -0
  57. package/docs/examples/database/list-attributes.md +2 -0
  58. package/docs/examples/database/list-collection-logs.md +4 -0
  59. package/docs/examples/database/list-collections.md +7 -0
  60. package/docs/examples/database/list-document-logs.md +5 -0
  61. package/docs/examples/database/list-documents.md +9 -0
  62. package/docs/examples/database/list-indexes.md +2 -0
  63. package/docs/examples/database/update-collection.md +7 -0
  64. package/docs/examples/database/update-document.md +6 -0
  65. package/docs/examples/functions/create-deployment.md +5 -0
  66. package/docs/examples/functions/create-execution.md +4 -0
  67. package/docs/examples/functions/create.md +9 -0
  68. package/docs/examples/functions/delete-deployment.md +3 -0
  69. package/docs/examples/functions/delete.md +2 -0
  70. package/docs/examples/functions/get-deployment.md +3 -0
  71. package/docs/examples/functions/get-execution.md +3 -0
  72. package/docs/examples/functions/get-usage.md +3 -0
  73. package/docs/examples/functions/get.md +2 -0
  74. package/docs/examples/functions/list-deployments.md +8 -0
  75. package/docs/examples/functions/list-executions.md +7 -0
  76. package/docs/examples/functions/list-runtimes.md +1 -0
  77. package/docs/examples/functions/list.md +7 -0
  78. package/docs/examples/functions/retry-build.md +4 -0
  79. package/docs/examples/functions/update-deployment.md +3 -0
  80. package/docs/examples/functions/update.md +8 -0
  81. package/docs/examples/health/get-antivirus.md +1 -0
  82. package/docs/examples/health/get-cache.md +1 -0
  83. package/docs/examples/health/get-d-b.md +1 -0
  84. package/docs/examples/health/get-queue-certificates.md +1 -0
  85. package/docs/examples/health/get-queue-functions.md +1 -0
  86. package/docs/examples/health/get-queue-logs.md +1 -0
  87. package/docs/examples/health/get-queue-usage.md +1 -0
  88. package/docs/examples/health/get-queue-webhooks.md +1 -0
  89. package/docs/examples/health/get-storage-local.md +1 -0
  90. package/docs/examples/health/get-time.md +1 -0
  91. package/docs/examples/health/get.md +1 -0
  92. package/docs/examples/locale/get-continents.md +1 -0
  93. package/docs/examples/locale/get-countries-e-u.md +1 -0
  94. package/docs/examples/locale/get-countries-phones.md +1 -0
  95. package/docs/examples/locale/get-countries.md +1 -0
  96. package/docs/examples/locale/get-currencies.md +1 -0
  97. package/docs/examples/locale/get-languages.md +1 -0
  98. package/docs/examples/locale/get.md +1 -0
  99. package/docs/examples/projects/create-domain.md +3 -0
  100. package/docs/examples/projects/create-key.md +4 -0
  101. package/docs/examples/projects/create-platform.md +7 -0
  102. package/docs/examples/projects/create-webhook.md +8 -0
  103. package/docs/examples/projects/create.md +13 -0
  104. package/docs/examples/projects/delete-domain.md +3 -0
  105. package/docs/examples/projects/delete-key.md +3 -0
  106. package/docs/examples/projects/delete-platform.md +3 -0
  107. package/docs/examples/projects/delete-webhook.md +3 -0
  108. package/docs/examples/projects/delete.md +3 -0
  109. package/docs/examples/projects/get-domain.md +3 -0
  110. package/docs/examples/projects/get-key.md +3 -0
  111. package/docs/examples/projects/get-platform.md +3 -0
  112. package/docs/examples/projects/get-usage.md +3 -0
  113. package/docs/examples/projects/get-webhook.md +3 -0
  114. package/docs/examples/projects/get.md +2 -0
  115. package/docs/examples/projects/list-domains.md +2 -0
  116. package/docs/examples/projects/list-keys.md +2 -0
  117. package/docs/examples/projects/list-platforms.md +2 -0
  118. package/docs/examples/projects/list-webhooks.md +2 -0
  119. package/docs/examples/projects/list.md +7 -0
  120. package/docs/examples/projects/update-auth-limit.md +3 -0
  121. package/docs/examples/projects/update-auth-status.md +4 -0
  122. package/docs/examples/projects/update-domain-verification.md +3 -0
  123. package/docs/examples/projects/update-key.md +5 -0
  124. package/docs/examples/projects/update-o-auth2.md +5 -0
  125. package/docs/examples/projects/update-platform.md +7 -0
  126. package/docs/examples/projects/update-service-status.md +4 -0
  127. package/docs/examples/projects/update-webhook.md +9 -0
  128. package/docs/examples/projects/update.md +12 -0
  129. package/docs/examples/storage/create-bucket.md +11 -0
  130. package/docs/examples/storage/create-file.md +6 -0
  131. package/docs/examples/storage/delete-bucket.md +2 -0
  132. package/docs/examples/storage/delete-file.md +3 -0
  133. package/docs/examples/storage/get-bucket-usage.md +3 -0
  134. package/docs/examples/storage/get-bucket.md +2 -0
  135. package/docs/examples/storage/get-file-download.md +3 -0
  136. package/docs/examples/storage/get-file-preview.md +14 -0
  137. package/docs/examples/storage/get-file-view.md +3 -0
  138. package/docs/examples/storage/get-file.md +3 -0
  139. package/docs/examples/storage/get-usage.md +2 -0
  140. package/docs/examples/storage/list-buckets.md +7 -0
  141. package/docs/examples/storage/list-files.md +8 -0
  142. package/docs/examples/storage/update-bucket.md +11 -0
  143. package/docs/examples/storage/update-file.md +5 -0
  144. package/docs/examples/teams/create-membership.md +6 -0
  145. package/docs/examples/teams/create.md +4 -0
  146. package/docs/examples/teams/delete-membership.md +3 -0
  147. package/docs/examples/teams/delete.md +2 -0
  148. package/docs/examples/teams/get-membership.md +3 -0
  149. package/docs/examples/teams/get-memberships.md +8 -0
  150. package/docs/examples/teams/get.md +2 -0
  151. package/docs/examples/teams/list.md +7 -0
  152. package/docs/examples/teams/update-membership-roles.md +4 -0
  153. package/docs/examples/teams/update-membership-status.md +5 -0
  154. package/docs/examples/teams/update.md +3 -0
  155. package/docs/examples/users/create.md +5 -0
  156. package/docs/examples/users/delete-session.md +3 -0
  157. package/docs/examples/users/delete-sessions.md +2 -0
  158. package/docs/examples/users/delete.md +2 -0
  159. package/docs/examples/users/get-logs.md +4 -0
  160. package/docs/examples/users/get-prefs.md +2 -0
  161. package/docs/examples/users/get-sessions.md +2 -0
  162. package/docs/examples/users/get-usage.md +3 -0
  163. package/docs/examples/users/get.md +2 -0
  164. package/docs/examples/users/list.md +7 -0
  165. package/docs/examples/users/update-email.md +3 -0
  166. package/docs/examples/users/update-name.md +3 -0
  167. package/docs/examples/users/update-password.md +3 -0
  168. package/docs/examples/users/update-prefs.md +3 -0
  169. package/docs/examples/users/update-status.md +3 -0
  170. package/docs/examples/users/update-verification.md +3 -0
  171. package/index.js +49 -0
  172. package/install.sh +165 -0
  173. package/ldid/COPYING +661 -0
  174. package/ldid/Makefile +51 -0
  175. package/ldid/control +12 -0
  176. package/ldid/control.sh +5 -0
  177. package/ldid/deb.sh +10 -0
  178. package/ldid/ios.sh +2 -0
  179. package/ldid/ldid.cpp +3253 -0
  180. package/ldid/ldid.hpp +164 -0
  181. package/ldid/libplist/.github/workflows/build.yml +62 -0
  182. package/ldid/libplist/.github/workflows/codeql-analysis.yml +71 -0
  183. package/ldid/libplist/AUTHORS +28 -0
  184. package/ldid/libplist/COPYING +340 -0
  185. package/ldid/libplist/COPYING.LESSER +502 -0
  186. package/ldid/libplist/Makefile.am +20 -0
  187. package/ldid/libplist/NEWS +252 -0
  188. package/ldid/libplist/README.md +114 -0
  189. package/ldid/libplist/aclocal.m4 +1729 -0
  190. package/ldid/libplist/autogen.sh +26 -0
  191. package/ldid/libplist/configure.ac +292 -0
  192. package/ldid/libplist/cython/Makefile.am +53 -0
  193. package/ldid/libplist/cython/plist.pxd +78 -0
  194. package/ldid/libplist/cython/plist.pyx +947 -0
  195. package/ldid/libplist/cython/plist_util.c +40 -0
  196. package/ldid/libplist/cython/plist_util.h +5 -0
  197. package/ldid/libplist/docs/Makefile.am +3 -0
  198. package/ldid/libplist/docs/plistutil.1 +62 -0
  199. package/ldid/libplist/fuzz/Makefile.am +43 -0
  200. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-4766291097288704 +0 -0
  201. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-4930725262393344 +0 -0
  202. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-5421965105954816 +0 -0
  203. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-5556177727389696 +0 -0
  204. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-6557963011489792 +0 -0
  205. package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-6605859144597504 +0 -0
  206. package/ldid/libplist/fuzz/bplist-crashes/crash-0ce4dd483b645bc05ec45a97d285dcf1933ee840 +0 -0
  207. package/ldid/libplist/fuzz/bplist-crashes/crash-0d59cdcb5c3416c2790612b78a631ce9f5622800 +0 -0
  208. package/ldid/libplist/fuzz/bplist-crashes/crash-17d635ab460fef74df1ac7561f1253533a6359c5 +0 -0
  209. package/ldid/libplist/fuzz/bplist-crashes/crash-33a67313fa7864cd627ef92d12017a127d342f28 +0 -0
  210. package/ldid/libplist/fuzz/bplist-crashes/crash-39f1347115f8fe9ac25cdc9332e3fc5cd32c7f7b +0 -0
  211. package/ldid/libplist/fuzz/bplist-crashes/crash-4bd78175fe01d07c5ee90104fbc68d95dd092210 +0 -0
  212. package/ldid/libplist/fuzz/bplist-crashes/crash-4c5404453bb7425aef9b953a5f6f3f0afcc48392 +0 -0
  213. package/ldid/libplist/fuzz/bplist-crashes/crash-52775e25f6af20af351cd616834e602fc988a032 +0 -0
  214. package/ldid/libplist/fuzz/bplist-crashes/crash-6d1399685b745d3d49fadc91072fabcdde8d16fa +0 -0
  215. package/ldid/libplist/fuzz/bplist-crashes/crash-94b3725900d63c6258448fd757559c81002de9c9 +0 -0
  216. package/ldid/libplist/fuzz/bplist-crashes/crash-a47195acbabc3f5b2cda9c6ebda42f2afc1cc5af +0 -0
  217. package/ldid/libplist/fuzz/bplist-crashes/crash-ce852bae6aeeffc4698a93660236f1b995ce966e +0 -0
  218. package/ldid/libplist/fuzz/bplist-crashes/crash-daddb6e82e3d1ed76e20e4131462f5247a6fb131 +0 -0
  219. package/ldid/libplist/fuzz/bplist-crashes/crash-f21be4ebce7f9c337bf96b93cec7e252f5c75a21 +0 -0
  220. package/ldid/libplist/fuzz/bplist-crashes/crash-f779dafccc0164684d1a264976e56037188b40e2 +0 -0
  221. package/ldid/libplist/fuzz/bplist-leaks/leak-96fb453b3ba18d31e164831795a708183b5a0dac +0 -0
  222. package/ldid/libplist/fuzz/bplist-leaks/leak-acb3c00a83d7635638a476a4e70fc1f1caa1a5b1 +0 -0
  223. package/ldid/libplist/fuzz/bplist-leaks/leak-fe2cd4b1f67e0c9b21e6225a4fb4ca19eab80074 +0 -0
  224. package/ldid/libplist/fuzz/bplist.dict +1 -0
  225. package/ldid/libplist/fuzz/bplist_fuzzer.cc +32 -0
  226. package/ldid/libplist/fuzz/bplist_fuzzer.options +3 -0
  227. package/ldid/libplist/fuzz/fuzzers.test +8 -0
  228. package/ldid/libplist/fuzz/init-fuzzers.sh +23 -0
  229. package/ldid/libplist/fuzz/test-fuzzers.sh +33 -0
  230. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-4516959125241856 +0 -0
  231. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-4663876528373760 +5 -0
  232. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-5799076113154048 +45 -0
  233. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-5922404220010496 +0 -0
  234. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6015098361479168 +0 -0
  235. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6043836860071936 +0 -0
  236. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6047509906456576 +10050 -0
  237. package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6482601374121984 +0 -0
  238. package/ldid/libplist/fuzz/xplist-crashes/crash-09788d7acb46b4b177422f9c4ee54556a3ad1f17 +53 -0
  239. package/ldid/libplist/fuzz/xplist-crashes/crash-155c60d5c4b2778110fb4a633caa7d64eb9b99c1 +9 -0
  240. package/ldid/libplist/fuzz/xplist-crashes/crash-348c909a0b3532977185f551eb5d2ed04e694883 +11 -0
  241. package/ldid/libplist/fuzz/xplist-crashes/crash-7bc172e27a2b1d4fcaf031f59d1f08fb83081e4a +8 -0
  242. package/ldid/libplist/fuzz/xplist-crashes/crash-80c28b0e2a446665e68927dd4441c10c9a68e64e +0 -0
  243. package/ldid/libplist/fuzz/xplist-crashes/crash-8acf177da60ecf13c36d0da1b8e25de891980ea6 +5 -0
  244. package/ldid/libplist/fuzz/xplist-crashes/crash-94276cf69a50e78dd6cdf079c208cb80f357cd33 +0 -0
  245. package/ldid/libplist/fuzz/xplist-crashes/crash-9ddb891a0ec42401eb4629e6b99e01aef7909eb9 +0 -0
  246. package/ldid/libplist/fuzz/xplist-crashes/crash-a8b44e1f5be4f75f00a937016ec5405bce77a0f9 +0 -0
  247. package/ldid/libplist/fuzz/xplist-crashes/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
  248. package/ldid/libplist/fuzz/xplist-crashes/crash-f03c680ee1c4d84c28e731752df77a61e213a24d +72 -0
  249. package/ldid/libplist/fuzz/xplist-leaks/clusterfuzz-testcase-4634751103139840 +187 -0
  250. package/ldid/libplist/fuzz/xplist-leaks/clusterfuzz-testcase-6056412121661440 +12 -0
  251. package/ldid/libplist/fuzz/xplist-leaks/leak-47b0a9f21d3affab6cfc898e5140bb53265ada07 +0 -0
  252. package/ldid/libplist/fuzz/xplist-leaks/leak-4c81aae70b20d9b9408b78d40999a54205bdcfb7 +0 -0
  253. package/ldid/libplist/fuzz/xplist-leaks/leak-53bc466851eda790bd891733da5db0a7482886bf +6 -0
  254. package/ldid/libplist/fuzz/xplist.dict +51 -0
  255. package/ldid/libplist/fuzz/xplist_fuzzer.cc +32 -0
  256. package/ldid/libplist/fuzz/xplist_fuzzer.options +3 -0
  257. package/ldid/libplist/include/Makefile.am +15 -0
  258. package/ldid/libplist/include/plist/Array.h +55 -0
  259. package/ldid/libplist/include/plist/Boolean.h +48 -0
  260. package/ldid/libplist/include/plist/Data.h +49 -0
  261. package/ldid/libplist/include/plist/Date.h +50 -0
  262. package/ldid/libplist/include/plist/Dictionary.h +68 -0
  263. package/ldid/libplist/include/plist/Integer.h +48 -0
  264. package/ldid/libplist/include/plist/Key.h +49 -0
  265. package/ldid/libplist/include/plist/Node.h +57 -0
  266. package/ldid/libplist/include/plist/Real.h +48 -0
  267. package/ldid/libplist/include/plist/String.h +49 -0
  268. package/ldid/libplist/include/plist/Structure.h +59 -0
  269. package/ldid/libplist/include/plist/Uid.h +48 -0
  270. package/ldid/libplist/include/plist/plist++.h +39 -0
  271. package/ldid/libplist/include/plist/plist.h +953 -0
  272. package/ldid/libplist/libcnary/COPYING +502 -0
  273. package/ldid/libplist/libcnary/Makefile.am +15 -0
  274. package/ldid/libplist/libcnary/README +5 -0
  275. package/ldid/libplist/libcnary/cnary.c +46 -0
  276. package/ldid/libplist/libcnary/include/node.h +65 -0
  277. package/ldid/libplist/libcnary/include/node_list.h +47 -0
  278. package/ldid/libplist/libcnary/include/object.h +41 -0
  279. package/ldid/libplist/libcnary/node.c +216 -0
  280. package/ldid/libplist/libcnary/node_list.c +157 -0
  281. package/ldid/libplist/m4/ac_pkg_cython.m4 +67 -0
  282. package/ldid/libplist/m4/as-compiler-flag.m4 +62 -0
  283. package/ldid/libplist/m4/ax_pthread.m4 +485 -0
  284. package/ldid/libplist/m4/ax_python_devel.m4 +327 -0
  285. package/ldid/libplist/m4/cython_python.m4 +7 -0
  286. package/ldid/libplist/src/Array.cpp +148 -0
  287. package/ldid/libplist/src/Boolean.cpp +73 -0
  288. package/ldid/libplist/src/Data.cpp +79 -0
  289. package/ldid/libplist/src/Date.cpp +76 -0
  290. package/ldid/libplist/src/Dictionary.cpp +182 -0
  291. package/ldid/libplist/src/Integer.cpp +73 -0
  292. package/ldid/libplist/src/Key.cpp +80 -0
  293. package/ldid/libplist/src/Makefile.am +63 -0
  294. package/ldid/libplist/src/Node.cpp +166 -0
  295. package/ldid/libplist/src/Real.cpp +73 -0
  296. package/ldid/libplist/src/String.cpp +80 -0
  297. package/ldid/libplist/src/Structure.cpp +123 -0
  298. package/ldid/libplist/src/Uid.cpp +73 -0
  299. package/ldid/libplist/src/base64.c +119 -0
  300. package/ldid/libplist/src/base64.h +28 -0
  301. package/ldid/libplist/src/bplist.c +1381 -0
  302. package/ldid/libplist/src/bytearray.c +61 -0
  303. package/ldid/libplist/src/bytearray.h +36 -0
  304. package/ldid/libplist/src/hashtable.c +140 -0
  305. package/ldid/libplist/src/hashtable.h +50 -0
  306. package/ldid/libplist/src/plist.c +1356 -0
  307. package/ldid/libplist/src/plist.h +74 -0
  308. package/ldid/libplist/src/ptrarray.c +96 -0
  309. package/ldid/libplist/src/ptrarray.h +40 -0
  310. package/ldid/libplist/src/strbuf.h +34 -0
  311. package/ldid/libplist/src/time64.c +814 -0
  312. package/ldid/libplist/src/time64.h +81 -0
  313. package/ldid/libplist/src/time64_limits.h +97 -0
  314. package/ldid/libplist/src/xplist.c +1435 -0
  315. package/ldid/libplist/test/Makefile.am +93 -0
  316. package/ldid/libplist/test/amp.test +14 -0
  317. package/ldid/libplist/test/bigarray.test +15 -0
  318. package/ldid/libplist/test/cdata.test +12 -0
  319. package/ldid/libplist/test/data/1.plist +35 -0
  320. package/ldid/libplist/test/data/2.plist +100 -0
  321. package/ldid/libplist/test/data/3.plist +420 -0
  322. package/ldid/libplist/test/data/4.plist +5037 -0
  323. package/ldid/libplist/test/data/5.plist +55053 -0
  324. package/ldid/libplist/test/data/6.plist +4006 -0
  325. package/ldid/libplist/test/data/7.plist +14 -0
  326. package/ldid/libplist/test/data/amp.plist +6 -0
  327. package/ldid/libplist/test/data/cdata.plist +6 -0
  328. package/ldid/libplist/test/data/dictref1byte.bplist +0 -0
  329. package/ldid/libplist/test/data/dictref2bytes.bplist +0 -0
  330. package/ldid/libplist/test/data/dictref3bytes.bplist +0 -0
  331. package/ldid/libplist/test/data/dictref4bytes.bplist +0 -0
  332. package/ldid/libplist/test/data/dictref5bytes.bplist +0 -0
  333. package/ldid/libplist/test/data/dictref6bytes.bplist +0 -0
  334. package/ldid/libplist/test/data/dictref7bytes.bplist +0 -0
  335. package/ldid/libplist/test/data/dictref8bytes.bplist +0 -0
  336. package/ldid/libplist/test/data/empty_keys.plist +8 -0
  337. package/ldid/libplist/test/data/entities.plist +57 -0
  338. package/ldid/libplist/test/data/hex.plist +5 -0
  339. package/ldid/libplist/test/data/invalid_tag.plist +6 -0
  340. package/ldid/libplist/test/data/malformed_dict.bplist +0 -0
  341. package/ldid/libplist/test/data/off1byte.bplist +0 -0
  342. package/ldid/libplist/test/data/off2bytes.bplist +0 -0
  343. package/ldid/libplist/test/data/off3bytes.bplist +0 -0
  344. package/ldid/libplist/test/data/off4bytes.bplist +0 -0
  345. package/ldid/libplist/test/data/off5bytes.bplist +0 -0
  346. package/ldid/libplist/test/data/off6bytes.bplist +0 -0
  347. package/ldid/libplist/test/data/off7bytes.bplist +0 -0
  348. package/ldid/libplist/test/data/off8bytes.bplist +0 -0
  349. package/ldid/libplist/test/data/offxml.plist +8 -0
  350. package/ldid/libplist/test/data/order.bplist +0 -0
  351. package/ldid/libplist/test/data/order.plist +27 -0
  352. package/ldid/libplist/test/data/recursion.bplist +0 -0
  353. package/ldid/libplist/test/data/signed.bplist +0 -0
  354. package/ldid/libplist/test/data/signed.plist +5 -0
  355. package/ldid/libplist/test/data/signedunsigned.bplist +0 -0
  356. package/ldid/libplist/test/data/signedunsigned.plist +11 -0
  357. package/ldid/libplist/test/data/unsigned.bplist +0 -0
  358. package/ldid/libplist/test/data/unsigned.plist +5 -0
  359. package/ldid/libplist/test/dates.test +15 -0
  360. package/ldid/libplist/test/empty.test +15 -0
  361. package/ldid/libplist/test/empty_keys.test +12 -0
  362. package/ldid/libplist/test/entities.test +12 -0
  363. package/ldid/libplist/test/hex.test +12 -0
  364. package/ldid/libplist/test/huge.test +15 -0
  365. package/ldid/libplist/test/invalid_tag.test +14 -0
  366. package/ldid/libplist/test/large.test +15 -0
  367. package/ldid/libplist/test/malformed_dict.test +11 -0
  368. package/ldid/libplist/test/medium.test +15 -0
  369. package/ldid/libplist/test/offsetsize.test +12 -0
  370. package/ldid/libplist/test/order.test +13 -0
  371. package/ldid/libplist/test/plist_cmp.c +158 -0
  372. package/ldid/libplist/test/plist_test.c +135 -0
  373. package/ldid/libplist/test/recursion.test +11 -0
  374. package/ldid/libplist/test/refsize.test +12 -0
  375. package/ldid/libplist/test/signedunsigned1.test +23 -0
  376. package/ldid/libplist/test/signedunsigned2.test +23 -0
  377. package/ldid/libplist/test/signedunsigned3.test +23 -0
  378. package/ldid/libplist/test/small.test +15 -0
  379. package/ldid/libplist/test/timezone1.test +17 -0
  380. package/ldid/libplist/test/timezone2.test +21 -0
  381. package/ldid/libplist/tools/Makefile.am +10 -0
  382. package/ldid/libplist/tools/plistutil.c +299 -0
  383. package/ldid/lookup2.c +416 -0
  384. package/ldid/make.sh +90 -0
  385. package/ldid/minimal/hexdump.h +76 -0
  386. package/ldid/minimal/mapping.h +72 -0
  387. package/ldid/minimal/sqlite3.h +71 -0
  388. package/ldid/minimal/stdlib.h +129 -0
  389. package/ldid/minimal/string.h +51 -0
  390. package/ldid/plist.sh +2 -0
  391. package/ldid/sha1.h +64 -0
  392. package/ldid/sysroot.sh +31 -0
  393. package/ldid/version.sh +2 -0
  394. package/lib/client.js +243 -0
  395. package/lib/commands/account.js +785 -0
  396. package/lib/commands/avatars.js +349 -0
  397. package/lib/commands/database.js +1238 -0
  398. package/lib/commands/deploy.js +477 -0
  399. package/lib/commands/functions.js +689 -0
  400. package/lib/commands/generic.js +106 -0
  401. package/lib/commands/health.js +269 -0
  402. package/lib/commands/init.js +148 -0
  403. package/lib/commands/locale.js +177 -0
  404. package/lib/commands/projects.js +1191 -0
  405. package/lib/commands/storage.js +743 -0
  406. package/lib/commands/teams.js +435 -0
  407. package/lib/commands/users.js +542 -0
  408. package/lib/config.js +264 -0
  409. package/lib/exception.js +9 -0
  410. package/lib/parser.js +179 -0
  411. package/lib/questions.js +223 -0
  412. package/lib/sdks.js +82 -0
  413. package/package.json +41 -0
@@ -0,0 +1,135 @@
1
+ /*
2
+ * backup_test.c
3
+ * source libplist regression test
4
+ *
5
+ * Copyright (c) 2009 Jonathan Beck All Rights Reserved.
6
+ *
7
+ * This library is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * This library is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with this library; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
+ */
21
+
22
+
23
+ #include "plist/plist.h"
24
+
25
+ #include <stdio.h>
26
+ #include <stdlib.h>
27
+ #include <string.h>
28
+ #include <sys/stat.h>
29
+
30
+ #ifdef _MSC_VER
31
+ #pragma warning(disable:4996)
32
+ #endif
33
+
34
+
35
+ int main(int argc, char *argv[])
36
+ {
37
+ FILE *iplist = NULL;
38
+ plist_t root_node1 = NULL;
39
+ plist_t root_node2 = NULL;
40
+ char *plist_xml = NULL;
41
+ char *plist_xml2 = NULL;
42
+ char *plist_bin = NULL;
43
+ int size_in = 0;
44
+ uint32_t size_out = 0;
45
+ uint32_t size_out2 = 0;
46
+ char *file_in = NULL;
47
+ char *file_out = NULL;
48
+ struct stat *filestats = (struct stat *) malloc(sizeof(struct stat));
49
+ if (argc != 3)
50
+ {
51
+ printf("Wrong input\n");
52
+ return 1;
53
+ }
54
+
55
+ file_in = argv[1];
56
+ file_out = argv[2];
57
+ //read input file
58
+ iplist = fopen(file_in, "rb");
59
+
60
+ if (!iplist)
61
+ {
62
+ printf("File does not exists\n");
63
+ return 2;
64
+ }
65
+ printf("File %s is open\n", file_in);
66
+ stat(file_in, filestats);
67
+ size_in = filestats->st_size;
68
+ plist_xml = (char *) malloc(sizeof(char) * (size_in + 1));
69
+ fread(plist_xml, sizeof(char), size_in, iplist);
70
+ fclose(iplist);
71
+
72
+
73
+ //convert one format to another
74
+ plist_from_xml(plist_xml, size_in, &root_node1);
75
+ if (!root_node1)
76
+ {
77
+ printf("PList XML parsing failed\n");
78
+ return 3;
79
+ }
80
+ else
81
+ printf("PList XML parsing succeeded\n");
82
+
83
+ plist_to_bin(root_node1, &plist_bin, &size_out);
84
+ if (!plist_bin)
85
+ {
86
+ printf("PList BIN writing failed\n");
87
+ return 4;
88
+ }
89
+ else
90
+ printf("PList BIN writing succeeded\n");
91
+
92
+ plist_from_bin(plist_bin, size_out, &root_node2);
93
+ if (!root_node2)
94
+ {
95
+ printf("PList BIN parsing failed\n");
96
+ return 5;
97
+ }
98
+ else
99
+ printf("PList BIN parsing succeeded\n");
100
+
101
+ plist_to_xml(root_node2, &plist_xml2, &size_out2);
102
+ if (!plist_xml2)
103
+ {
104
+ printf("PList XML writing failed\n");
105
+ return 8;
106
+ }
107
+ else
108
+ printf("PList XML writing succeeded\n");
109
+
110
+ if (plist_xml2)
111
+ {
112
+ FILE *oplist = NULL;
113
+ oplist = fopen(file_out, "wb");
114
+ fwrite(plist_xml2, size_out2, sizeof(char), oplist);
115
+ fclose(oplist);
116
+ }
117
+
118
+ plist_free(root_node1);
119
+ plist_free(root_node2);
120
+ free(plist_bin);
121
+ free(plist_xml);
122
+ free(plist_xml2);
123
+ free(filestats);
124
+
125
+ if ((uint32_t)size_in != size_out2)
126
+ {
127
+ printf("Size of input and output is different\n");
128
+ printf("Input size : %i\n", size_in);
129
+ printf("Output size : %i\n", size_out2);
130
+ }
131
+
132
+ //success
133
+ return 0;
134
+ }
135
+
@@ -0,0 +1,11 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE=recursion.bplist
7
+ DATAIN0=$DATASRC/$TESTFILE
8
+ DATAOUT0=$top_builddir/test/data/$TESTFILE.out
9
+
10
+ $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
11
+
@@ -0,0 +1,12 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILES="dictref1byte.bplist dictref2bytes.bplist dictref3bytes.bplist dictref4bytes.bplist dictref5bytes.bplist dictref6bytes.bplist dictref7bytes.bplist dictref8bytes.bplist"
7
+ CMPFILE=offxml.plist
8
+
9
+ for I in $TESTFILES; do
10
+ echo "* checking $I"
11
+ $top_builddir/test/plist_cmp $DATASRC/$I $DATASRC/$CMPFILE
12
+ done
@@ -0,0 +1,23 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE0=signed.plist
7
+ TESTFILE1=unsigned.plist
8
+ DATAIN0=$DATASRC/$TESTFILE0
9
+ DATAIN1=$DATASRC/$TESTFILE1
10
+
11
+ CMPFILE0=signed.bplist
12
+ CMPFILE1=unsigned.bplist
13
+ DATACMP0=$DATASRC/$CMPFILE0
14
+ DATACMP1=$DATASRC/$CMPFILE1
15
+
16
+ DATAOUT0=$top_builddir/test/data/$TESTFILE0.bin
17
+ DATAOUT1=$top_builddir/test/data/$TESTFILE1.bin
18
+
19
+ $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
20
+ $top_builddir/tools/plistutil -i $DATAIN1 -o $DATAOUT1
21
+
22
+ diff --strip-trailing-cr $DATACMP0 $DATAOUT0
23
+ diff --strip-trailing-cr $DATACMP1 $DATAOUT1
@@ -0,0 +1,23 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE0=signed.bplist
7
+ TESTFILE1=unsigned.bplist
8
+ DATAIN0=$DATASRC/$TESTFILE0
9
+ DATAIN1=$DATASRC/$TESTFILE1
10
+
11
+ CMPFILE0=signed.plist
12
+ CMPFILE1=unsigned.plist
13
+ DATACMP0=$DATASRC/$CMPFILE0
14
+ DATACMP1=$DATASRC/$CMPFILE1
15
+
16
+ DATAOUT0=$top_builddir/test/data/$TESTFILE0.bin
17
+ DATAOUT1=$top_builddir/test/data/$TESTFILE1.bin
18
+
19
+ $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
20
+ $top_builddir/tools/plistutil -i $DATAIN1 -o $DATAOUT1
21
+
22
+ diff --strip-trailing-cr $DATACMP0 $DATAOUT0
23
+ diff --strip-trailing-cr $DATACMP1 $DATAOUT1
@@ -0,0 +1,23 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE0=signedunsigned.plist
7
+ TESTFILE1=signedunsigned.bplist
8
+ DATAIN0=$DATASRC/$TESTFILE0
9
+ DATAIN1=$DATASRC/$TESTFILE1
10
+
11
+ CMPFILE0=signedunsigned.bplist
12
+ CMPFILE1=signedunsigned.plist
13
+ DATACMP0=$DATASRC/$CMPFILE0
14
+ DATACMP1=$DATASRC/$CMPFILE1
15
+
16
+ DATAOUT0=$top_builddir/test/data/$TESTFILE0.bin
17
+ DATAOUT1=$top_builddir/test/data/$TESTFILE1.xml
18
+
19
+ $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
20
+ $top_builddir/tools/plistutil -i $DATAIN1 -o $DATAOUT1
21
+
22
+ diff --strip-trailing-cr $DATACMP0 $DATAOUT0
23
+ diff --strip-trailing-cr $DATACMP1 $DATAOUT1
@@ -0,0 +1,15 @@
1
+ ## -*- sh -*-
2
+
3
+ DATASRC=$top_srcdir/test/data
4
+ DATAOUT=$top_builddir/test/data
5
+ TESTFILE=2.plist
6
+
7
+ if ! test -d "$DATAOUT"; then
8
+ mkdir -p $DATAOUT
9
+ fi
10
+
11
+ echo "Converting"
12
+ $top_builddir/test/plist_test $DATASRC/$TESTFILE $DATAOUT/$TESTFILE.out
13
+
14
+ echo "Comparing"
15
+ $top_builddir/test/plist_cmp $DATASRC/$TESTFILE $DATAOUT/$TESTFILE.out
@@ -0,0 +1,17 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE=7.plist
7
+ DATAIN0=$DATASRC/$TESTFILE
8
+ DATAOUT0=$top_builddir/test/data/$TESTFILE.tz0.bin
9
+ DATAOUT1=$top_builddir/test/data/$TESTFILE.tz1.bin
10
+ DATAOUT2=$top_builddir/test/data/$TESTFILE.tz2.bin
11
+
12
+ TZ=UTC $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
13
+ TZ=Asia/Singapore $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT1
14
+ TZ=US/Pacific $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT2
15
+
16
+ $top_builddir/test/plist_cmp $DATAOUT0 $DATAOUT1
17
+ $top_builddir/test/plist_cmp $DATAOUT0 $DATAOUT2
@@ -0,0 +1,21 @@
1
+ ## -*- sh -*-
2
+
3
+ set -e
4
+
5
+ DATASRC=$top_srcdir/test/data
6
+ TESTFILE=7.plist
7
+ DATAIN0=$DATASRC/$TESTFILE
8
+ DATAOUT0=$top_builddir/test/data/$TESTFILE.bin
9
+ DATAOUT1=$top_builddir/test/data/$TESTFILE.tz0.xml
10
+ DATAOUT2=$top_builddir/test/data/$TESTFILE.tz1.xml
11
+ DATAOUT3=$top_builddir/test/data/$TESTFILE.tz2.xml
12
+
13
+ TZ=UTC $top_builddir/tools/plistutil -i $DATAIN0 -o $DATAOUT0
14
+
15
+ TZ=UTC $top_builddir/tools/plistutil -i $DATAOUT0 -o $DATAOUT1
16
+ TZ=Asia/Singapore $top_builddir/tools/plistutil -i $DATAOUT0 -o $DATAOUT2
17
+ TZ=US/Pacific $top_builddir/tools/plistutil -i $DATAOUT0 -o $DATAOUT3
18
+
19
+ $top_builddir/test/plist_cmp $DATAIN0 $DATAOUT1
20
+ $top_builddir/test/plist_cmp $DATAIN0 $DATAOUT2
21
+ $top_builddir/test/plist_cmp $DATAIN0 $DATAOUT3
@@ -0,0 +1,10 @@
1
+ AM_CFLAGS = \
2
+ $(GLOBAL_CFLAGS) \
3
+ -I$(top_srcdir)/include
4
+
5
+ AM_LDFLAGS =
6
+
7
+ bin_PROGRAMS = plistutil
8
+
9
+ plistutil_SOURCES = plistutil.c
10
+ plistutil_LDADD = $(top_builddir)/src/libplist-2.0.la
@@ -0,0 +1,299 @@
1
+ /*
2
+ * plistutil.c
3
+ * Simple tool to convert a plist into different formats
4
+ *
5
+ * Copyright (c) 2009-2020 Martin Szulecki All Rights Reserved.
6
+ * Copyright (c) 2013-2020 Nikias Bassen, All Rights Reserved.
7
+ * Copyright (c) 2008 Zach C., All Rights Reserved.
8
+ *
9
+ * This library is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 2.1 of the License, or (at your option) any later version.
13
+ *
14
+ * This library is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with this library; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ */
23
+
24
+ #ifdef HAVE_CONFIG_H
25
+ #include <config.h>
26
+ #endif
27
+
28
+ #include "plist/plist.h"
29
+
30
+ #include <stdio.h>
31
+ #include <stdlib.h>
32
+ #include <string.h>
33
+ #include <sys/stat.h>
34
+ #include <errno.h>
35
+ #include <unistd.h>
36
+
37
+ #define BUF_SIZE 2048 // Seems to be a decent start to cover most stdin files
38
+
39
+ #ifdef _MSC_VER
40
+ #pragma warning(disable:4996)
41
+ #endif
42
+
43
+ typedef struct _options
44
+ {
45
+ char *in_file, *out_file;
46
+ uint8_t debug, in_fmt, out_fmt; // fmts 0 = undef, 1 = bin, 2 = xml, 3 = json someday
47
+ } options_t;
48
+
49
+ static void print_usage(int argc, char *argv[])
50
+ {
51
+ char *name = NULL;
52
+ name = strrchr(argv[0], '/');
53
+ printf("Usage: %s [OPTIONS] [-i FILE] [-o FILE]\n", (name ? name + 1: argv[0]));
54
+ printf("\n");
55
+ printf("Convert a plist FILE from binary to XML format or vice-versa.\n");
56
+ printf("\n");
57
+ printf("OPTIONS:\n");
58
+ printf(" -i, --infile FILE Optional FILE to convert from or stdin if - or not used\n");
59
+ printf(" -o, --outfile FILE Optional FILE to convert to or stdout if - or not used\n");
60
+ printf(" -f, --format [bin|xml] Force output format, regardless of input type\n");
61
+ printf(" -d, --debug Enable extended debug output\n");
62
+ printf(" -v, --version Print version information\n");
63
+ printf("\n");
64
+ printf("Homepage: <" PACKAGE_URL ">\n");
65
+ printf("Bug Reports: <" PACKAGE_BUGREPORT ">\n");
66
+ }
67
+
68
+ static options_t *parse_arguments(int argc, char *argv[])
69
+ {
70
+ int i = 0;
71
+
72
+ options_t *options = (options_t *) malloc(sizeof(options_t));
73
+ memset(options, 0, sizeof(options_t));
74
+ options->out_fmt = 0;
75
+
76
+ for (i = 1; i < argc; i++)
77
+ {
78
+ if (!strcmp(argv[i], "--infile") || !strcmp(argv[i], "-i"))
79
+ {
80
+ if ((i + 1) == argc)
81
+ {
82
+ free(options);
83
+ return NULL;
84
+ }
85
+ options->in_file = argv[i + 1];
86
+ i++;
87
+ continue;
88
+ }
89
+ else if (!strcmp(argv[i], "--outfile") || !strcmp(argv[i], "-o"))
90
+ {
91
+ if ((i + 1) == argc)
92
+ {
93
+ free(options);
94
+ return NULL;
95
+ }
96
+ options->out_file = argv[i + 1];
97
+ i++;
98
+ continue;
99
+ }
100
+ else if (!strcmp(argv[i], "--format") || !strcmp(argv[i], "-f"))
101
+ {
102
+ if ((i + 1) == argc)
103
+ {
104
+ free(options);
105
+ return NULL;
106
+ }
107
+ if (!strncmp(argv[i+1], "bin", 3)) {
108
+ options->out_fmt = 1;
109
+ } else if (!strncmp(argv[i+1], "xml", 3)) {
110
+ options->out_fmt = 2;
111
+ } else {
112
+ printf("ERROR: Unsupported output format\n");
113
+ free(options);
114
+ return NULL;
115
+ }
116
+ i++;
117
+ continue;
118
+ }
119
+ else if (!strcmp(argv[i], "--debug") || !strcmp(argv[i], "-d"))
120
+ {
121
+ options->debug = 1;
122
+ }
123
+ else if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h"))
124
+ {
125
+ free(options);
126
+ return NULL;
127
+ }
128
+ else if (!strcmp(argv[i], "--version") || !strcmp(argv[i], "-v"))
129
+ {
130
+ printf("plistutil %s\n", PACKAGE_VERSION);
131
+ exit(EXIT_SUCCESS);
132
+ }
133
+ else
134
+ {
135
+ printf("ERROR: Invalid option '%s'\n", argv[i]);
136
+ free(options);
137
+ return NULL;
138
+ }
139
+ }
140
+
141
+ return options;
142
+ }
143
+
144
+ int main(int argc, char *argv[])
145
+ {
146
+ FILE *iplist = NULL;
147
+ plist_t root_node = NULL;
148
+ char *plist_out = NULL;
149
+ uint32_t size = 0;
150
+ int read_size = 0;
151
+ char *plist_entire = NULL;
152
+ struct stat filestats;
153
+ options_t *options = parse_arguments(argc, argv);
154
+
155
+ if (!options)
156
+ {
157
+ print_usage(argc, argv);
158
+ return 0;
159
+ }
160
+
161
+ if (!options->in_file || !strcmp(options->in_file, "-"))
162
+ {
163
+ read_size = 0;
164
+ plist_entire = malloc(sizeof(char) * BUF_SIZE);
165
+ if(plist_entire == NULL)
166
+ {
167
+ printf("ERROR: Failed to allocate buffer to read from stdin");
168
+ free(options);
169
+ return 1;
170
+ }
171
+ plist_entire[read_size] = '\0';
172
+ char ch;
173
+ while(read(STDIN_FILENO, &ch, 1) > 0)
174
+ {
175
+ if (read_size >= BUF_SIZE) {
176
+ char *old = plist_entire;
177
+ plist_entire = realloc(plist_entire, sizeof(char) * (read_size + 1));
178
+ if (plist_entire == NULL)
179
+ {
180
+ printf("ERROR: Failed to reallocate stdin buffer\n");
181
+ free(old);
182
+ free(options);
183
+ return 1;
184
+ }
185
+ }
186
+ plist_entire[read_size] = ch;
187
+ read_size++;
188
+ }
189
+ plist_entire[read_size] = '\0';
190
+
191
+ // Not positive we need this, but it doesnt seem to hurt lol
192
+ if(ferror(stdin))
193
+ {
194
+ printf("ERROR: reading from stdin.\n");
195
+ free(plist_entire);
196
+ free(options);
197
+ return 1;
198
+ }
199
+
200
+ if (read_size < 8) {
201
+ printf("ERROR: Input file is too small to contain valid plist data.\n");
202
+ free(plist_entire);
203
+ free(options);
204
+ return 1;
205
+ }
206
+ }
207
+ else
208
+ {
209
+ // read input file
210
+ iplist = fopen(options->in_file, "rb");
211
+ if (!iplist) {
212
+ printf("ERROR: Could not open input file '%s': %s\n", options->in_file, strerror(errno));
213
+ free(options);
214
+ return 1;
215
+ }
216
+
217
+ memset(&filestats, '\0', sizeof(struct stat));
218
+ fstat(fileno(iplist), &filestats);
219
+
220
+ if (filestats.st_size < 8) {
221
+ printf("ERROR: Input file is too small to contain valid plist data.\n");
222
+ free(options);
223
+ fclose(iplist);
224
+ return -1;
225
+ }
226
+
227
+ plist_entire = (char *) malloc(sizeof(char) * (filestats.st_size + 1));
228
+ read_size = fread(plist_entire, sizeof(char), filestats.st_size, iplist);
229
+ fclose(iplist);
230
+ }
231
+
232
+ if (options->out_fmt == 0) {
233
+ // convert from binary to xml or vice-versa<br>
234
+ if (plist_is_binary(plist_entire, read_size))
235
+ {
236
+ plist_from_bin(plist_entire, read_size, &root_node);
237
+ plist_to_xml(root_node, &plist_out, &size);
238
+ }
239
+ else
240
+ {
241
+ plist_from_xml(plist_entire, read_size, &root_node);
242
+ plist_to_bin(root_node, &plist_out, &size);
243
+ }
244
+ }
245
+ else
246
+ {
247
+ if (options->out_fmt == 1) {
248
+ if (plist_is_binary(plist_entire, read_size))
249
+ {
250
+ plist_out = malloc(sizeof(char) * read_size);
251
+ memcpy(plist_out, plist_entire, read_size);
252
+ size = read_size;
253
+ }
254
+ else
255
+ {
256
+ plist_from_xml(plist_entire, read_size, &root_node);
257
+ plist_to_bin(root_node, &plist_out, &size);
258
+ }
259
+ } else if (options->out_fmt == 2) {
260
+ if (plist_is_binary(plist_entire, read_size)) {
261
+ plist_from_bin(plist_entire, read_size, &root_node);
262
+ plist_to_xml(root_node, &plist_out, &size);
263
+ }
264
+ else
265
+ {
266
+ plist_out = malloc(sizeof(char) * read_size);
267
+ memcpy(plist_out, plist_entire, read_size);
268
+ size = read_size;
269
+ }
270
+ }
271
+ }
272
+ plist_free(root_node);
273
+ free(plist_entire);
274
+
275
+ if (plist_out)
276
+ {
277
+ if (options->out_file != NULL && strcmp(options->out_file, "-"))
278
+ {
279
+ FILE *oplist = fopen(options->out_file, "wb");
280
+ if (!oplist) {
281
+ printf("ERROR: Could not open output file '%s': %s\n", options->out_file, strerror(errno));
282
+ free(options);
283
+ return 1;
284
+ }
285
+ fwrite(plist_out, size, sizeof(char), oplist);
286
+ fclose(oplist);
287
+ }
288
+ // if no output file specified, write to stdout
289
+ else
290
+ fwrite(plist_out, size, sizeof(char), stdout);
291
+
292
+ free(plist_out);
293
+ }
294
+ else
295
+ printf("ERROR: Failed to convert input file.\n");
296
+
297
+ free(options);
298
+ return 0;
299
+ }