diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 34d262e..ae7a113 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -548,6 +548,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -615,6 +616,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_Test = .F. l_ShowErrors = .T. n_ShowProgressbar = 1 + n_ForceWriteIfReadOnly = 0 l_AllowMultiConfig = .T. l_DropNullCharsFromCode = .T. l_Recompile = .T. @@ -1053,12 +1055,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM #DEFINE FILE_ATTRIBUTE_COMPRESSED 2048 TRY - LOCAL loEx AS EXCEPTION, dwFileAttributes + LOCAL loEx AS EXCEPTION, dwFileAttributes, dwFileAttributes_Orig, lnRet DECLARE SHORT 'SetFileAttributes' IN kernel32 AS fb2p_SetFileAttributes STRING tcFileName, INTEGER dwFileAttributes DECLARE INTEGER 'GetFileAttributes' IN kernel32 AS fb2p_GetFileAttributes STRING tcFileName * read current attributes for this file - dwFileAttributes = fb2p_GetFileAttributes(tcFileName) + dwFileAttributes = fb2p_GetFileAttributes(tcFileName) + dwFileAttributes_Orig = dwFileAttributes IF dwFileAttributes = -1 * the file does not exist @@ -1117,18 +1120,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF * setting selected attributes - =fb2p_SetFileAttributes(tcFileName, dwFileAttributes) + lnRet = fb2p_SetFileAttributes(tcFileName, dwFileAttributes) ENDIF CATCH TO loEx THROW FINALLY + THIS.writeLog( LOWER(PROGRAM()) + ' >> [' + tcFileName + '] lnRet = ' + TRANSFORM(lnRet) + ', dwFileAttributes_Orig = ' + TRANSFORM(dwFileAttributes_Orig) ) CLEAR DLLS fb2p_SetFileAttributes, fb2p_GetFileAttributes RELEASE tcFileName, tcAttrib, dwFileAttributes ENDTRY - RETURN + RETURN lnRet ENDPROC @@ -2472,7 +2476,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM TRY LOCAL lnCodError, lcErrorInfo, laDirFile(1,5), lcExtension, lnFileCount, laFiles(1,1), I ; - , ltFilestamp, lcExtA, lcExtB, laEvents(1,1) ; + , ltFilestamp, lcExtA, lcExtB, laEvents(1,1), lcForceAttribs ; , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ; , loConversor as C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG' ; , loFSO AS Scripting.FileSystemObject @@ -2481,6 +2485,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' loFSO = .o_FSO loLang = _SCREEN.o_FoxBin2Prg_Lang + lcForceAttribs = '+N' .c_InputFile = FULLPATH( tc_InputFile ) lcExtension = UPPER( JUSTEXT(.c_InputFile) ) .writeLog( REPLICATE( '*', 100 ) ) @@ -2496,6 +2501,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- VERIFICO SI HAY ARCHIVO DE CONFIGURACIÓN SECUNDARIO .EvaluarConfiguracion() + + IF .n_ForceWriteIfReadOnly = 1 THEN + lcForceAttribs = lcForceAttribs + '-R' + ENDIF *-- OPTIMIZACIÓN VC2/SC2: VERIFICO SI EL ARCHIVO BASE FUE PROCESADO PARA DESCARTAR REPROCESOS @@ -2553,7 +2562,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_VC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_VC2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_VC2 ), lcForceAttribs ) CASE lcExtension = 'SCX' IF NOT INLIST(.SCX_Conversion_Support, 1, 2) @@ -2561,7 +2570,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_SC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_SC2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_SC2 ), lcForceAttribs ) CASE lcExtension = 'PJX' IF NOT INLIST(.PJX_Conversion_Support, 1, 2) @@ -2569,7 +2578,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), lcForceAttribs ) CASE lcExtension = 'PJM' IF NOT INLIST(.PJX_Conversion_Support, 1, 2) @@ -2577,7 +2586,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjm_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), lcForceAttribs ) CASE lcExtension = 'FRX' IF NOT INLIST(.FRX_Conversion_Support, 1, 2) @@ -2585,7 +2594,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_FR2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_FR2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_FR2 ), lcForceAttribs ) CASE lcExtension = 'LBX' IF NOT INLIST(.LBX_Conversion_Support, 1, 2) @@ -2593,7 +2602,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_LB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_LB2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_LB2 ), lcForceAttribs ) CASE lcExtension = 'DBF' IF NOT INLIST(.DBF_Conversion_Support, 1, 2, 4) @@ -2601,7 +2610,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_DB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DB2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DB2 ), lcForceAttribs ) CASE lcExtension = 'DBC' IF NOT INLIST(.DBC_Conversion_Support, 1, 2) @@ -2609,7 +2618,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_DC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DC2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DC2 ), lcForceAttribs ) CASE lcExtension = 'MNX' IF NOT INLIST(.MNX_Conversion_Support, 1, 2) @@ -2617,7 +2626,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, .c_MN2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_MN2 ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_MN2 ), lcForceAttribs ) CASE lcExtension = .c_VC2 IF .VCX_Conversion_Support <> 2 @@ -2625,8 +2634,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'VCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCT' ), lcForceAttribs ) CASE lcExtension = .c_SC2 IF .SCX_Conversion_Support <> 2 @@ -2634,8 +2643,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'SCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCT' ), lcForceAttribs ) CASE lcExtension = .c_PJ2 IF .PJX_Conversion_Support <> 2 @@ -2643,8 +2652,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'PJX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJT' ), lcForceAttribs ) CASE lcExtension = .c_FR2 IF .FRX_Conversion_Support <> 2 @@ -2652,8 +2661,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'FRX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRT' ), lcForceAttribs ) CASE lcExtension = .c_LB2 IF .LBX_Conversion_Support <> 2 @@ -2661,8 +2670,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'LBX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBT' ), lcForceAttribs ) CASE lcExtension = .c_DB2 IF .DBF_Conversion_Support <> 2 @@ -2670,9 +2679,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'DBF' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBF' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FPT' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'CDX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBF' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FPT' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'CDX' ), lcForceAttribs ) CASE lcExtension = .c_DC2 IF .DBC_Conversion_Support <> 2 @@ -2680,9 +2689,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'DBC' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBC' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBC' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCT' ), lcForceAttribs ) CASE lcExtension = .c_MN2 IF .MNX_Conversion_Support <> 2 @@ -2690,8 +2699,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF .c_OutputFile = FORCEEXT( .c_InputFile, 'MNX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNX' ), '+N' ) - .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNX' ), lcForceAttribs ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNT' ), lcForceAttribs ) OTHERWISE *ERROR 'El archivo [' + .c_InputFile + '] no está soportado' @@ -3069,10 +3078,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcLog, laFile(1,5) ; , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' - *THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' ) loLang = _SCREEN.o_FoxBin2Prg_Lang THIS.writeLog( TEXTMERGE(loLang.C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) ) - THIS.ChangeFileAttribute( tcFileName, '+N' ) + *THIS.ChangeFileAttribute( tcFileName, '+N' ) lcLog = '' THIS.o_FNC.Capitalize( tcFileName, '', 'F', lcLog, tlRelanzarError, '1' ) THIS.writeLog( lcLog )