IM
Cale absolută cu drive în faţa: D:\AAA.EEE\BBB.EEE\FFF.EEE Catalog absolut cu drive în faţa: D:\AAA.EEE\BBB.EEE Cale absolută fără drive în faţa: \AAA.EEE\BBB.EEE\FFF.EEE Catalog absolut fără drive în faţa: \AAA.EEE\BBB.EEE Cale relativă BBB.EE\FFF.EEE Catalog relativ BBB.EE Cale cu revenire: ..\BBB.EEE\FFF.EEE Catalog cu revenire: ..\BBB.EEE
În programele HAMOR Soft numele de fişiere de date întotdeauna sunt cu majuscule. Ex. PLANCONT.DBF, FACTURI.DBF, etc.
Pot exista alte fişiere, de ex. .not, .txt la care numele este scris cu litere mici.
Toate fişierele: „*“ în Linux, „*.*“ în Windows.
Din acest motiv pentru teste, accesare se folosesc variantele Hamor ale funcţiilor: h_File(),
h_MemoRead(), etc.
La Windows A:, B:, C:, ….
La Linux nu există drive A:, B:, … este un catalog oarecare, pot exista linkuri simbolice cu numele de A:, B:, etc.
Caracterul despărţitor între segmentele din căile de acces este:
Windows \
Linux /
dar nu se foloseşte direct, există variabilă sistem h_OsPathS care la lansarea programului se setează
cf. sistemului de operare.
Întotdeauna se păstrează în format Windows (în Catalogul fişierelor), dar în fereastra de ajutor care se lansează se afişează cf. SO
Acceptă şi în format Linux!
Pentru traducere: h_OsPath(file→PATH)
Poate fi lansat şi pe Windows
În catalogul fişierelor se admit mapări de forma %s%cale numai la începutul căilor de acces, unde s
este o variabilă de mediu, şi trebuie să fie definită.
%A%\AAA\BBB sau %B%\AAA\BBB
%A% se înlocuieste cu valoarea din variabila de mediu A
A nu există –> eroare sau mesaj în funcţie de situaţie
Catalog comun sub Linux, SERVER ←→ STATIE
h_stPath() înlocuieşte partea de început printr-un drive dacă există o variabilă de mediudefinită care conţine partea de început din calea de acces
Variabila de mediu: H=\HAMOR\hamor
Transformare cale de acces: \\
''? h_StPath("\HAMOR\hamor\hGROUP\RO\DOC\hmarfa.htm")'' >> "H:\hGROUP\RO\DOC\hmarfa.htm"
În scripturi, programe nu se folosesc căi de acces explicite, dacă totuşi se folosesc, acestea se trec prinh_OsPath()
h_AbsPath() --> apelează h_OsPath() h_TruePath() --> apelează h_AbsPath() deci şi h_OsPath() h_AddPath() --> nu apelează, nu cred că trebuie pus
IM
Uzuale şi necesare în scripturi
h_OsPath() - traduce calea de acces cf. SO (\,/ şi %SS%)
eventual să rezolve şi numele generic de fişiere ?
h_StPath() - station path <segmentul_de_început> --> A,S,U,H
h_FileEx() - testează case sensitive existenţa unui fişier
h_MemoRead() - memoread case sensitive la nume de fişiere
Deja existent, nu este nou
h_Directory() - testează case sensitive existenţa unui catalog
h_AllF() - nume generic de fişier în funcţie de OS
IM
Interne, nu sunt necesare în scripturi
h_OsPathS - separatorul din căile de acces în funcţie de SO h_MapPath() - mapările de forma %Z% -numai de la început, fără imbricări ! h_TrPath() - traducere separatori cf.OS / --> \ sau \ --> / h_IsDir() - testează case sensitive, calea transmisă este un catalog ? h_SetFileCase() - nume de fişiere majuscule/mixt/litere mici
Funcţii existente care ţin cont de FileCase
h_MemoRead() h_Directory() h_DirChange()
Indiferent dacă a fost creată/modificată sub Linux sau Windows, baza de date poate fi utilizată sub ambele sisteme de operare, nu există diferenţe de structură. Deci o bază de date poate fi trecută de la un sistem de operare la altul fără probleme.
h_OsPath, nu se va folosi direct \
h_AllF(), nu *.* sau *
h_OsPath()
: în Linux poate să existe în numele de catalog, sau fişier
h_AddPath(), h_Path(), etc)
MemoRead(), File(), Directory() FileCases, din acest motiv se recomandă variantele h_
h_Build()
#IF "windows" $ Lower(h_Build()) #ENDIF
#IF "linux" $ Lower(h_Build()) #ENDIF
Drepturile de acces fişiere: Utilizatorii HAMOR trebuie să fie în aceeaşi grupă.
În Linux, indiferent cine este proprietarul, dacă membrii grupei au drept de scriere în folder, fişierele pot fi şterse.
Drepturile necesare pentru foldere:
Drepturile necesare pentru fişiere:
h_OsPathS
GetPrinter()
Citeşte lista imprimantelor pe calculatorul pe care se rulează.
Depune lista imprimantelor intr-un catalog PRINTERSss.TXT
Este o funcţie cu ajutorul căreia hSTART.exe citeşte imprimantele
de pe staţia de lucru.
GetShortFileName()
Dublat pentru Linux dar nu transformă numele de fişier,
sub Linux numele scurt nu are sens.
h_AllF()
Returnează:
- *.* -sub Windows,
- * - sub linux
Nu se mai foloseşte direct numele generic *.* sau *
h_Chmod()
Setează atributele unui fişier Linux
Sintaxa
h_Chmod(sfile,nattrib)
Parametri
-sfile -calea de acces către fişier
-nattrib -număr, reprezentând atributele fişierului
Returnează
Număr reprezentând atributele setate
Descriere
Setează atributele unui fişier.
Atributele sunt reprezentate sub forma de număr întreg.
Pentru facilitarea prelucrării poate fi folosită funcţia CtoN()
Exemple:
h_Chmod(h_OsPath("MARF.DEM"), CtoN("111111101",2))
h_Chmod("HMET2UP",CtoN("111111101",2))
Semnificatia sirului binar,
sunt 3 grupe de cate 3 cifre
111 111 101
Grupa 1: owner
Grupa 2: group
Grupa 3: public
Cifrele din group:
Cifra 1: Read
Cifra 2: Write
Cifra 3: Execute
h_Directory()
Identic cu Directory() dar case sensitive.
Activează setare pentru litere mari şi mici, la sf.repune,
în rest identic cu Directory()
Cu setarea implicită din hMET (uppercase)
Directory() nu ar lua în calcul cataloagele cu litere mici,
dacă este ultimul din segment
Ex. HAMOR/catalog
h_FileEx()
Testează existenţa unui fişier case sensitive.
Activează setarea pentru litere mari şi mici, la sf.repune,
în rest identic cu File()
Cu setarea implicită din hMET (uppercase)
File() nu ar lua în calcul fişierele cu litere mici,
dacă este ultimul din segment
h_IsDir()
Setează litere mixte ca să fie luate în calcul cataloagele cu litere
mari (ultimul din segment)
h_MapPath()
Rezolva mapările de forma %ZZZ%
h_MemoRead()
A existat şi până acum, doar că ţine cont de litere mari şi mici.
h_Os()
Returnează codul sist.de operare al calculatorului pe care rulează programul
h_Os(smode)
-smode -nil-nemodificat,l-litere mici,u-majuscule,
Returnează: Şir de caractere reprezentând sistemul de operare
Descriere:
Returnează codul sistemului de operare al calculatorului
pe care rulează programul (server, sau calculator individual)
Este codul sistemului de operare din punctul de vedere al
programelor hMET: Windows_NT, Linux_WP, ...
Implementat astfel:
-testează variabilă de sistem H_OS,
-dacă nu este definit, variabile sistem OS
Exemple:
If h_Os("l") = "linux_wp"
EndIf
h_OsPath()
Traducere cale de acces conform sistemului de operare.
De fapt apelează h_MapPath() şi h_TrPath()
h_Path()
Returnează partea de cale de acces, fără nume de fişier
dintr-o cale de acces,
h_ProgType()
Returnează tipul programului: W-Windows, D-DOS, L-Linux, U-necunoscut
Sintaxa
h_ProgType(sprog)
Parametri
sprog -cale de acces la fişierul în care este programul
Returnează
Tipul programului
Descriere
Stabileşte şi returnează tipul programului transmis prin
parametrul sprog
Exemplu
IF h_ProgType(sprog) $ "WD"
...
h_MesErr("Nu poate fi executat sub Linux !")
ENDIF
h_Rattrib()
Citeşte atributele unui fişier Linux sub Linux
Parametri
-sfile -calea de acces către fişier
Returnează
Număr reprezentând atributele fişierului
Descriere
Citeşte atributele fişierului transmis
în parametrul sfile. Valoarea returnată este un număr.
Funcţia NtoC() poate fi folosită pentru transformarea
numărului citit în şir de caractere, pentru o
prelucrare mai comodă.
Exemplu
Alert NtoC --> "1000000111110100"
h_RunhWTools()
Rutină pentru a rezolva aşteptarea după un task
adică să fie aşteptat un task lansat cu hWTools,
până când se termină, sau timeout,
h_StOs()
Returnează codul sistemului de operare al staţiei de lucru/
h_Os(smode)
-smode -nil-nemodificat,l-litere mici,u-majuscule,
Returnează: Şir de caractere reprezentând sistemul de operare de pe staţia de lucru
Descriere:
Returnează codul sistemului de operare al calculatorului
de pe staţia de lucru
Implementat astfel: testează variabilă sistem H_STOS. Dacă nu este definită
returnează ""
Exemple:
If h_StOs("l") = "windows"
EndIf
h_StPath() - Station path
calea de acces de pe server şi de pe staţia de lucru
(deşi indică acelaşi catalog) diferă.
Ex. documentaţia accesată de pe server şi staţie,
se accesează acelaşi catalog dar căile de acces diferă
pe cele doua calculatoare.
Implementat astfel:
-citeşte variabilele de mediu (A,S,U,H)
-dacă spath începe cu una dintre şirurile asociate de aceste variabila de mediu
porţiunea este înlocuită cu <variabilă_mediu>:
-ex. H=\HAMOR\hamor
S=\HAMOR\hamor\hGROUP
U=\HAMOR\hamor\hUSERS\$USER
A=\HAMOR\hamor\hUSERS\$USER\RW\A
? h_StPath("\HAMOR\hamor\hGROUP\RO\DOC\hmarfa.htm") --> "S:\RO\DOC\hmarfa.htm"
h_TrPath()
Traduce separatoarele dintr-o cale de acces,
în conformitate cu sistemul de operare (/ -- \ şi invers)
Parametrul 2 forţează rezultatul pt.SO dorit.
h_SetFileCase(ncase, lForce)
În variantele Windows şi Clipper are efect numai dacă lForce=.T.
Linux h_SetFileCase() sau h_SetFileCase() -majuscule,
setarea implicită în programele HAMOR Soft.
h_SetFileCase(0)-mixt,
h_SetFileCase(1)-litere mici,
h_SetFileCase(0,.T.) -mixt sub ambele sisteme de operare.
HMENUE DBMENU/DBMENU h+ acces la F8 în hMENU în mod multisession
Trebuie adăugat repo-ul epel6 în funcţia arhitecturii sistemului.
De instalat: xrdp tigervnc-server
KillDisconnected=1
X11DisplayOffset=1
MaxSessions=100
Configurare utilizator
/bin/bash în /etc/passwd
Sau dacă nu e vorba despre LINUX_WP, se creează prin: useradd nume_utilizator
* Parola utilizatorului trebuie să fie de min. 6 caractere. Cu utilizatorul creat
generăm parola deja dată şi pentru serverul VNC prin vncpasswd
OS=LINUX export H_EXEXLS="soffice --calc &> /dev/null"
xterm -fa 'Dejavu Sans Mono' -fs 15 -geometry 80×25+0+0 -e „cd /HAMOR/hamor/hGROUP/RW/HAMOR.DEM; ./HMENU.BAT“
file:///HAMOR/hamor/hUSERS/SNOTE3 U: hUSER file:///HAMOR/hamor/hGROUP S: hGROUP file:///HAMOR/hamor/ H: hDATA file:///home/SNOTE3/Documents file:///home/SNOTE3/Pictures file:///home/SNOTE3/Downloads
gconftool-2 --set --type=bool /apps/nautilus/desktop/computer_icon_visible false, home_…, trash
(if (is (application_name) „HMENU.BAT“) undecorate)