Tratamento de pastas Windows / Linux

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Robson Davila
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Mai 2021 12:20
Localização: FORTALEZA - CE

Tratamento de pastas Windows / Linux

Mensagem por Robson Davila »

Boa tarde,
gostaria de saber se existe a possibilidade de tratamento de pastas de unidades, no caso, Windows.
ser reconhecido automaticamente no Linux.

Ex.:
no Windows: Q:\Teste\teste.txt

no Linux reconhecer dessa forma: /q/Teste/teste.txt

Claro, eu já teria essa pasta criada no servidor Linux, no caso, /q/Teste
Quando falo "reconhecer", digo o programa entender automaticamente o endereço da pasta, sem que eu tenha que alterar em todos os fontes.

Desde já agradeço pela atenção,

Robson D´Ávila
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Tratamento de pastas Windows / Linux

Mensagem por Itamar M. Lins Jr. »

Olá!

If lLinux
use /minha/pasta/meu/arquivo.dbf
else
use q:\minha\pasta\meu\arquivo.dbf
endif
Nos dois funciona.
Se vai usar 100% no Linux(compilar seu PRG) e 100% no Windows sem uso do SMB no Linux
Se usar LetoDBf
Basta if Leto_file("//localhost:2812/meuarquivo.txt") Tanto faz Linux ou Windows pq o servidor vai se virar para responder.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Tratamento de pastas Windows / Linux

Mensagem por Itamar M. Lins Jr. »

Olá!
Tem como unificar usando cPS := hb_ps() que coloca a barra "/" ou "\" ele cuida disso. "Path Separator"
Só tá pegando mesmo a letra pois no Linux não existe isso. a:,c:,d:,... isso não existe.
Pode usar outro comando para saber se tem ou não letra. cCD := CurDrive()+":" //Current Driver

Se usar WINE(emulador) basta usar só a sintaxe do windows mesmo. Fica bem rápido também. Mas o uso em rede com muitos usuários já não é a melhor opção.
Pode dai criar suas funções AbreDb("meudbf.dbf") ou if ExisteArq("arquivo.txt")

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Robson Davila
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Mai 2021 12:20
Localização: FORTALEZA - CE

Tratamento de pastas Windows / Linux

Mensagem por Robson Davila »

Boa tarde, muito obrigado pelas respostas.

É, pelo que vi, terei que alterar nos fontes mesmo a definição dos arquivos que estão em pastas diferentes e ou unidades.
Sei que as unidades do Windows não são vistas no Linux da mesma forma, mas quem sabe existiria uma funcionalidade que entendesse automaticamente a unidade do Windows como uma pasta no Linux.
Já que não tem, é alterar para deixar o reconhecimento dos caminhos dos arquivos compatível entre as plataformas.

E fazendo os testes aqui, no Windows reconhece o arquivo com a barra padrão Linux, ou seja, com "/"
Já o contrário, no Linux utilizando "\" não funciona.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Tratamento de pastas Windows / Linux

Mensagem por Itamar M. Lins Jr. »

Olá!
unidades do Windows não são vistas no Linux da mesma forma,
No Linux qualquer coisa é uma pasta.
No windows para compartilhar usa-se o protocolo SMB. Basta instalar no Linux o SAMBA para ver, ler, gravar as pastas do windows.
Inclusive pode usar o Linux como servidor de arquivos compartilhados via SAMBA. Eu mesmo não gosto pq SMB não tem segurança adequada, depois de compartilhada uma pasta no windows com um grupo qualquer pessoa do grupo pode apagar, alterar, danificar os arquivos.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder