Conforme comentado em outro tópico, no Linux a função Directory não retorna os arquivos ocultos. Sendo assim, fiz este pequeno patch para que torne isso possível.
Para tanto, salve o código abaixo com o nome direct-hidden-linux.001.path, encontre o arquivo direct.c dentro do diretório de fontes do Harbour, e aplique o patch:
Código: Selecionar todos
$ patch direct.c < direct-hidden-linux.001.patchCódigo: Selecionar todos
202a203,249
> #ifdef HB_OS_UNIX
> /*
> * Alterado por Stanis para considerar arquivos no formato (.*)
> * no Linux como se tivessem atributo de oculto, retornados por "H"
> */
> if( szAttributes && *szAttributes && strstr(szAttributes,"H") )
> {
> int i,j;
> char szDirSpecH[] = "";
> for ( j=strlen(szDirSpec); j >= 0; j-- )
> {
> if ( szDirSpec[j] == HB_OS_PATH_DELIM_CHR )
> {
> szDirSpecH[j] = HB_OS_PATH_DELIM_CHR;
> szDirSpecH[j+1] = '.';
> break;
> }
> else
> szDirSpecH[j+1] = szDirSpec[j];
> }
> szDirSpecH[strlen(szDirSpec)+1]='\0';
>
> for ( i=0; i < j ; i++ )
> szDirSpecH[i] = szDirSpec[i];
>
> if( ( ffind = hb_fsFindFirst( szDirSpecH, ulMask ) ) != NULL )
> {
> PHB_ITEM pSubarray = hb_itemNew( NULL );
> do
> {
> char buffer[ 32 ];
> hb_arrayNew( pSubarray, F_LEN );
> hb_arraySetC ( pSubarray, F_NAME, ffind->szName );
> hb_arraySetNInt( pSubarray, F_SIZE, ffind->size );
> hb_arraySetDL ( pSubarray, F_DATE, ffind->lDate );
> hb_arraySetC ( pSubarray, F_TIME, ffind->szTime );
> hb_arraySetC ( pSubarray, F_ATTR, hb_fsAttrDecode( ffind->attr, buffer ) );
> hb_arrayAddForward( pDir, pSubarray );
> }
> while( hb_fsFindNext( ffind ) );
>
> hb_itemRelease( pSubarray );
> hb_fsFindClose( ffind );
> }
> }
> #endif
>
208d254
<
IMPORTANTE: Válido somente para Harbour 2.0.0 (Rev. 13372). Demais versões devem ser corrigidas manualmente a menos que o direct.c seja idêntico ao desta versão. Verifique isso através do CHANGELOG.
