#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_GetCwdFail = 38, LM_ERR_PoolListDirFail = 39, LM_ERR_PoolListCantRead = 40, LM_ERR_PoolInfoCantRead = 41, LM_ERR_PkgBadName = 42, LM_ERR_PkgDataBad = 43, LM_ERR_CtxDataNULL = 44, LM_ERR_CtxTempFail = 45, LM_ERR_CtxTempNotDir = 46, LM_ERR_CtxTempNoWrite = 47, LM_ERR_CtxRootFail = 48, LM_ERR_CtxRootNotDir = 49, LM_ERR_CtxRootNoWrite = 50, LM_ERR_CtxDataNotDir = 51, LM_ERR_CtxDataNoWrite = 52, LM_ERR_CtxDataFailMkdir = 53, } 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();