Application simple de l'utilisation de deux fichiers simultanément (un en lecture, l'autre en écriture) et de comparaison de chaîne, ce code permet de supprimer les lignes de commentaire (caractère # en début de ligne) des fichiers FreeRADIUS.
; programme de suppression de lignes de commentaires
Declare.s EnleveTab(ligne.s)
NomFichier$ = OpenFileRequester("Ouvrir un fichier avec commentaires", "C:\", "*.*", 0)
If NomFichier$ > ""
; on a un fichier a traiter
Chemin$ = GetPathPart(NomFichier$)
Extension$ = GetExtensionPart(NomFichier$)
Fichier$ = RemoveString(GetFilePart(NomFichier$), Extension$)
NewFichier$ = Left(Fichier$, Len(Fichier$)-1)+"_NoComment."+Extension$
Debug Fichier$+" | "+Extension$+" ==> "+NewFichier$
If ReadFile(0,NomFichier$)
OpenFile(1,Chemin$+NewFichier$)
UseFile(0) ; travaille sur le fichier en lecture (handle 0)
While Eof(0)=0
ligne$ = ReadString()
Debug "==>"+ligne$
If Left(EnleveTab(ligne$),1) = "#" ; on enlève les espaces devant et on vérifie si c'est un commentaire
; c'est un commentaire
ElseIf ligne$>""
; ce n'est pas un commentaire : on écrit la ligne en conservant son formatage
UseFile(1)
WriteStringN(ligne$)
UseFile(0)
Debug "<=="+ligne$
EndIf
Wend
EndIf
CloseFile(0)
CloseFile(1)
EndIf
Procedure.s EnleveTab(ligne$)
Repeat
a$ = Left(ligne$,1)
If a$ = " " Or a$ = Chr(9)
ligne$ = Right(ligne$, Len(ligne$)-1)
EndIf
Until a$ <> " " And a$ <> Chr(9)
ProcedureReturn ligne$
EndProcedure
Et oui... 802.1x, TTLS, Wi-FI et ennuis
Tu connais ???
Voici une mise à jour pour les fichiers sans extensions (y'avait un bug) et en plus on peut le lancer avec un paramètre (style boite DOS ou mieux : en mettant un raccourci dans C:\Documents and Settings\username\SendTo il devient possible cliquer avec le bouton droit sur le fichier et choisir "envoyer vers...")
; programme de suppression de lignes de commentaires
Declare.s EnleveTab(ligne.s)
;-- Passage de paramètres
Parametre$ = ProgramParameter()
If Parametre$ = ""
; s'il n'y a pas de paramètre passé au programme, on ouvre une boite de dialogue...
NomFichier$ = OpenFileRequester("Ouvrir un fichier avec commentaires", "C:\", "*.*", 0)
Else
; ... sinon on utilise le paramètre comme nom de fichier.
NomFichier$ = Parametre$
EndIf
If NomFichier$ > ""
; on a un fichier a traiter
Chemin$ = GetPathPart(NomFichier$)
Fichier$=GetFilePart(NomFichier$)
Extension$ = GetExtensionPart(NomFichier$)
If Extension$ = ""
; le fichier n'a pas d'extension
NewFichier$ = Fichier$+"_NoComment"
Else
Fichier$ = RemoveString(GetFilePart(NomFichier$), Extension$)
NewFichier$ = Left(Fichier$, Len(Fichier$)-1)+"_NoComment."+Extension$
EndIf
Debug Fichier$+" | "+Extension$+" ==> "+NewFichier$
If ReadFile(0,NomFichier$)
OpenFile(1,Chemin$+NewFichier$)
UseFile(0) ; travaille sur le fichier en lecture (handle 0)
While Eof(0)=0
ligne$ = ReadString()
Debug "==>"+ligne$
If Left(EnleveTab(ligne$),1) = "#" ; on enlève les espaces devant et on vérifie si c'est un commentaire
; c'est un commentaire
ElseIf ligne$>""
; ce n'est pas un commentaire : on écrit la ligne en conservant son formatage
UseFile(1)
WriteStringN(ligne$)
UseFile(0)
Debug "<=="+ligne$
EndIf
Wend
EndIf
CloseFile(0)
CloseFile(1)
MessageRequester("Commentaires #", "Toutes les lignes de commentaires (#) ont été enlevées.", #MB_OK|#MB_ICONINFORMATION)
EndIf
Procedure.s EnleveTab(ligne$)
Repeat
a$ = Left(ligne$,1)
If a$ = " " Or a$ = Chr(9)
ligne$ = Right(ligne$, Len(ligne$)-1)
EndIf
Until a$ <> " " And a$ <> Chr(9)
ProcedureReturn ligne$
EndProcedure
FreeRADIUS est un système AAA (Authenticate, Authorize and Account) : il peut gérer une liste d'utilisateurs et de mots de passe ou bien s'interconnecter avec un serveur LDAP, une base /etc/password (Unix), etc.
Quand tu te connectes en ADSL, ton FAI utilise probablement un serveur RADIUS pour t'authentifier. FreeRADIUS est le projet Open-source de ce protocole (RADIUS est un protocole à l'origine).
Voilà, c'était juste pour l'information générale. Les fichiers ont de nombreux commentaires et l'édition ou la comparaison sont pénibles alors mon petit programme supprime les lignes commencant par #