#pragma once typedef enum lm_error { LM_ERR_NoError = 0, LM_ERR_URLBadChar = 1, LM_ERR_URLBadProtocol = 2, LM_ERR_URLTooLarge = 3, LM_ERR_URLHostLarge = 4, LM_ERR_URLPathLarge = 5, LM_ERR_URLBadHost = 6, LM_ERR_URLBadPort = 7, LM_ERR_URLBadPath = 8, LM_ERR_URLPortUnknown = 9, LM_ERR_BadPort = 10, LM_ERR_BadHost = 11, LM_ERR_PoolNoSupport = 12, LM_ERR_URLEnd = 13, LM_ERR_MPTPBadVersion = 14, LM_ERR_MPTPBadCode = 15, LM_ERR_MPTPBadUrl = 16, LM_ERR_MPTPHostFail = 17, LM_ERR_MPTPSocketFail = 18, LM_ERR_MPTPConnectFail = 19, LM_ERR_MPTPRecvFail = 20, LM_ERR_MPTPSendFail = 21, LM_ERR_MPTPBadData = 22, LM_ERR_MPTPBadHost = 23, LM_ERR_MPTPSetsockopt = 24, LM_ERR_MPTPTimeout = 25, LM_ERR_MPTPBindFail = 26, LM_ERR_ArgNULL = 27, LM_ERR_MPTPNotResponse = 28, LM_ERR_MPTPNotRequest = 29, LM_ERR_MPTPNotLast = 30, LM_ERR_NoPort = 31, LM_ERR_PoolInfoBad = 32, LM_ERR_ArcWBlockFail = 33, LM_ERR_ArcRBlockFail = 34, LM_ERR_ArcOpenFail = 35, LM_ERR_ArcWHeaderFail = 36, LM_ERR_ArcWEntryFail = 37, LM_ERR_ArcNewFail = 38, LM_ERR_ArcNextHeaderFail = 39, LM_ERR_GetCwdFail = 39, LM_ERR_PoolListDirFail = 40, LM_ERR_PoolListCantRead = 41, LM_ERR_PoolInfoCantRead = 42, LM_ERR_PkgBadName = 43, LM_ERR_PkgDataBad = 44, LM_ERR_CtxDataNULL = 45, LM_ERR_CtxTempFail = 46, LM_ERR_CtxTempNotDir = 47, LM_ERR_CtxTempNoWrite = 48, LM_ERR_CtxRootFail = 49, LM_ERR_CtxRootNotDir = 50, LM_ERR_CtxRootNoWrite = 51, LM_ERR_CtxDataNotDir = 52, LM_ERR_CtxDataNoWrite = 53, LM_ERR_CtxDataFailMkdir = 54, LM_ERR_ArcRealpathFail = 55, LM_ERR_PoolTestNotPong = 56, LM_ERR_PackagePathsEmpty = 57, LM_ERR_SendOpenFail = 58, LM_ERR_RecvDelFail = 59, LM_ERR_RecvOpenFail = 60, LM_ERR_RecvBadCode = 61, LM_ERR_RecvWriteFail = 62, LM_ERR_PkgNotFound = 63 } lm_error_t; typedef struct lm_error_desc { lm_error_t code; char *desc; } lm_error_desc_t; void lm_error_set(lm_error_t code); lm_error_t lm_error(); char *lm_strerror();