API Linux

Codes specifiques à Linux
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

API Linux

Message par Progi1984 »

Listing des groups :

Code : Tout sélectionner

Structure group
  gr_name.s        ; group name 
  gr_passwd.s      ; group password 
  gr_gid.l          ; group id 
  gr_mem.l        ; group members 
EndStructure

*infosgrpmem = AllocateMemory(SizeOf(group))
infosgrp.group

Repeat
  *infosgrpmem = getgrent_()
  If *infosgrpmem
    CopyMemory(*infosgrpmem, @infosgrp, SizeOf(group))
    Debug infosgrp\gr_name.s        ; group name 
    Debug infosgrp\gr_passwd.s      ; group password 
    Debug infosgrp\gr_gid.l          ; group id 
    Debug infosgrp\gr_mem.l        ; group members 
  EndIf
Until  *infosgrpmem = 0
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Informations sur un fichier

Code : Tout sélectionner

Structure stat
  st_dev.l
  _unused_1.l
  _unused_2.l
  st_ino.l
  st_mode.l
  st_nlink.l
  st_uid.l
  st_gid.l
  st_rdev.l
  _unused_3.l
  _unused_4.l
  st_size.l
  st_blksize.l
  st_blocks.l
  st_atime.l
  st_atime_nsec.l
  st_mtime.l
  st_mtime_nsec.l
  st_ctime.l
  st_ctime_nsec.l
  __unused4.l
  __unused5.l
EndStructure
Structure group
  gr_name.s        ; group name 
  gr_passwd.s      ; group password 
  gr_gid.l          ; group id 
  gr_mem.l        ; group members 
EndStructure
Structure passwd
  pw_name.s        ; user name 
  pw_passwd.s     ; user password 
  pw_uid.l         ; user id 
  pw_gid.l         ; group id 
  pw_gecos.s      ; real name 
  pw_dir.s        ; home directory 
  pw_shell.s      ; shell program 
EndStructure

infos.stat
*infosgrpmem = AllocateMemory(SizeOf(group))
*infosusermem = AllocateMemory(SizeOf(passwd))
infosgrp.group
infosuser.passwd

Debug "INFOS"
Debug stat_(@"/media/DISK/Projets/Proj_Moebius/Inc_Compile_Step2.pb", @infos)
Debug "DEV > "+Str(infos\st_dev)
Debug "INO > "+Str(infos\st_ino)        ; File serial number     
Debug "MODE > "+Str(infos\st_mode)       ; File mode                        
Debug "NLINK > "+Str(infos\st_nlink)      ; Number of links                  
Debug "UID > "+Str(infos\st_uid)        ; User ID of the owner of file     
Debug "GID > "+Str(infos\st_gid)        ; Group ID of the group of file    
;Debug "RDEV > "+Str(infos\st_rdev)
Debug "SIZE > "+Str(infos\st_size)       ; For regular files, the filesize in bytes                    
Debug "BLKSIZE > "+Str(infos\st_blksize)    ; Size of a block of the file      
Debug "BLOCKS > "+Str(infos\st_blocks)  
Debug "ATIME > "+Str(infos\st_atime)      ; Time of last access              
Debug "ATIME Format >" +FormatDate("%dd/%mm/%yyyy %hh:%ii:%ss", infos\st_atime)
Debug "ATIME_nsec > "+Str(infos\st_atime_nsec)      ; Time of last access              
Debug "MTIME > "+Str(infos\st_mtime)      ; Time of last Data modification   
Debug "MTIME Format >" +FormatDate("%dd/%mm/%yyyy %hh:%ii:%ss", infos\st_mtime)
Debug "MTIME_nsec > "+Str(infos\st_mtime_nsec)      ; Time of last Data modification   
Debug "CTIME > "+Str(infos\st_ctime)      ; Time of last file status change  
Debug "CTIME Format >" +FormatDate("%dd/%mm/%yyyy %hh:%ii:%ss", infos\st_ctime)
Debug "CTIME_nsec > "+Str(infos\st_ctime_nsec)      ; Time of last file status change  

Debug "USER"
*infosusermem = getpwuid_(infos\st_uid)
Debug *infosusermem
If *infosusermem
  CopyMemory(*infosusermem, @infosuser, SizeOf(passwd))
  Debug "NAME >"+infosuser\pw_name.s        ; user name 
  Debug "PASSWORD >"+infosuser\pw_passwd.s     ; user password 
  Debug "UID >"+Str(infosuser\pw_uid.l)         ; user id 
  Debug "GID >"+Str(infosuser\pw_gid.l)         ; group id 
  Debug "REALNAME >"+infosuser\pw_gecos.s      ; real name 
  Debug "HOMEDIR >"+infosuser\pw_dir.s        ; home directory 
  Debug "SHELLPGM >"+infosuser\pw_shell.s      ; shell program 
EndIf

Debug "GROUP"
*infosgrpmem = getgrgid_(infos\st_gid)
Debug *infosgrpmem
If *infosgrpmem
  CopyMemory(*infosgrpmem, @infosgrp, SizeOf(group))
  Debug "GRP_NAME > "+infosgrp\gr_name.s        ; group name 
  Debug "GRP_PASSWORD > "+infosgrp\gr_passwd.s      ; group password 
  Debug "GRP_ID > "+Str(infosgrp\gr_gid)          ; group id 
  Debug "GRP_MEMBERS > "+Str(infosgrp\gr_mem)        ; group members 
EndIf
Dernière modification par Progi1984 le sam. 07/mars/2009 16:36, modifié 2 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Listing des utilisateurs :

Code : Tout sélectionner

Structure passwd
  pw_name.s        ; user name 
  pw_passwd.s     ; user password 
  pw_uid.l         ; user id 
  pw_gid.l         ; group id 
  pw_gecos.s      ; real name 
  pw_dir.s        ; home directory 
  pw_shell.s      ; shell program 
EndStructure

*infospassmem = AllocateMemory(SizeOf(passwd))
infospass.passwd

Repeat
  *infospassmem = getpwent_()
  If *infospassmem
    CopyMemory(*infospassmem, @infospass, SizeOf(passwd))
  Debug infospass\pw_name.s        ; user name 
  Debug infospass\pw_passwd.s     ; user password 
  Debug infospass\pw_uid.l         ; user id 
  Debug infospass\pw_gid.l         ; group id 
  Debug infospass\pw_gecos.s      ; real name 
  Debug infospass\pw_dir.s        ; home directory 
  Debug infospass\pw_shell.s      ; shell program 
  EndIf
Until  *infospassmem = 0
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Informations sytèmes :

Code : Tout sélectionner

Debug "SYSTEM : Nombre de processeurs" + Str(get_nprocs_())

Debug "SYSTEM : mémoire total :  "+Str(getpagesize_()*get_phys_pages_())+" bytes"
Debug "SYSTEM : mémoire total :  "+Str(getpagesize_()*get_phys_pages_()/1000)+" kbytes"
Debug "SYSTEM : mémoire total :  "+Str(getpagesize_()*get_phys_pages_()/1000/1000)+" mbytes"
Debug "SYSTEM : mémoire total :  "+Str(getpagesize_()*get_phys_pages_()/1000/1000/1000)+" gbytes"
Debug "SYSTEM : mémoire dispo : "+Str(getpagesize_()*get_avphys_pages_())+" bytes"
Debug "SYSTEM : mémoire dispo : "+Str(getpagesize_()*get_avphys_pages_()/1000)+" kbytes"
Debug "SYSTEM : mémoire dispo : "+Str(getpagesize_()*get_avphys_pages_()/1000/1000)+" mbytes"
Debug "SYSTEM : mémoire dispo : "+Str(getpagesize_()*get_avphys_pages_()/1000/1000/1000)+" gbytes"

Debug "TIME Functions"
time_(@curtime)
Debug curtime
loctime=  localtime_(@curtime)
Debug loctime
Debug curtime
Debug PeekS(asctime_(@curtime))
Debug PeekS(asctime_(@loctime))

Debug "SYSTEM Informations"
hostname.s = Space(1024)
gethostname_(@Hostname, 1024)
Debug "FQDN > "+Hostname
Debug gethostid_()

#_UTSNAME_LENGTH = 65
Structure utsname
  sysname.s{#_UTSNAME_LENGTH}
  nodename.s{#_UTSNAME_LENGTH}
  release.s{#_UTSNAME_LENGTH}
  version.s{#_UTSNAME_LENGTH}
  machine.s{#_UTSNAME_LENGTH}
  domainname.s{#_UTSNAME_LENGTH}
EndStructure
name.utsname
Debug uname_(@name)
Debug name\sysname
Debug name\nodename
Debug name\release
Debug name\version
Debug name\machine
Debug name\domainname 

Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

Je t'aime Progi1984 ;)
Si tu pouvais trouver le retour à la ligne et bouger les scroll en auto pour l'éditeur gafget sous linxu cela serait niquel ;)
Anonyme

Message par Anonyme »

Si tu pouvais trouver le retour à la ligne

#CR$ ?
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

Cpl.Bator a écrit :
Si tu pouvais trouver le retour à la ligne

#CR$ ?
automatique ?
Parce que avec l'api windows, pour un chat fait à la va vite, le client reçois le message dans un editorgadget et cela se met à la ligne tout seul sans que je ne fasse rien ;)
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Cpl.Bator a écrit :
Si tu pouvais trouver le retour à la ligne

#CR$ ?
sa c'est pour mac sous nux c'est #LF$
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pour activer le wrap dans l'editorgadget :

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  
    EditorGadget(0, 8, 8, 306, 133) 
    gtk_text_view_set_wrap_mode_(GadgetID(0), #GTK_WRAP_WORD)
    For a = 0 To 5 
      AddGadgetItem(0, a, Space(15*a)+"Ligne "+Str(a)) 
    Next 
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf 
http://library.gnome.org/devel/gtk/stab ... -wrap-mode
http://library.gnome.org/devel/gtk/stab ... tkWrapMode

Par contre, peux tu expliquer un peu plus : " bouger les scroll en auto " ?
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

Progi1984 a écrit :Pour activer le wrap dans l'editorgadget :

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)  
    EditorGadget(0, 8, 8, 306, 133) 
    gtk_text_view_set_wrap_mode_(GadgetID(0), #GTK_WRAP_WORD)
    For a = 0 To 5 
      AddGadgetItem(0, a, Space(15*a)+"Ligne "+Str(a)) 
    Next 
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf 
http://library.gnome.org/devel/gtk/stab ... -wrap-mode
http://library.gnome.org/devel/gtk/stab ... tkWrapMode

Par contre, peux tu expliquer un peu plus : " bouger les scroll en auto " ?
En gros je recherche ça :
http://www.purebasic.fr/french/viewtopic.php?t=9083
:)
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Le psychopathe a écrit : En gros je recherche ça :
http://www.purebasic.fr/french/viewtopic.php?t=9083
:)
Le code pour l'editor gadget te convient il ?

Par contre, pour une listicon, un simple setgadgetstate fonctionne !
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

Progi1984 a écrit :
Le psychopathe a écrit : En gros je recherche ça :
http://www.purebasic.fr/french/viewtopic.php?t=9083
:)
Le code pour l'editor gadget te convient il ?

Par contre, pour une listicon, un simple setgadgetstate fonctionne !
Je te dis ça dès que je peux tester ;)
Sinon non pour la listicon, selectionner suffit pas, car cela ne descent pas ou monte pas le scroll ba sur l'élément sélectionné xD
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Le psychopathe a écrit :Je te dis ça dès que je peux tester ;)
Sinon non pour la listicon, selectionner suffit pas, car cela ne descent pas ou monte pas le scroll ba sur l'élément sélectionné xD
Peux tu me filer un code pour cette histoire de scrollbar qui amrcerait sous Windows ?
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

Progi1984 a écrit :
Le psychopathe a écrit :Je te dis ça dès que je peux tester ;)
Sinon non pour la listicon, selectionner suffit pas, car cela ne descent pas ou monte pas le scroll ba sur l'élément sélectionné xD
Peux tu me filer un code pour cette histoire de scrollbar qui amrcerait sous Windows ?
Voilà c'est ma procedure de recherche ;) Un annuaire sur informatique dans la caserne ;)

Code : Tout sélectionner

Procedure recherche2()
For ListiconElement = 0 To CountGadgetItems(#ListIcon_0)-1  
 
    fonction$ = GetGadgetItemText(#ListIcon_0, ListiconElement , 0)
    grade$ = GetGadgetItemText(#ListIcon_0, ListiconElement , 1)
    nom$ = GetGadgetItemText(#ListIcon_0, ListiconElement , 2)
    numeroPoste$ = GetGadgetItemText(#ListIcon_0, ListiconElement , 3) 
    telperso$ = GetGadgetItemText(#ListIcon_0, ListiconElement , 4)


chaine1$ = StringField(GetGadgetItemText(#Listview_recherche, GetGadgetState(#Listview_recherche)), 1, ":")
chaine2$ = StringField(GetGadgetItemText(#Listview_recherche, GetGadgetState(#Listview_recherche)), 2, ":")
chaine3$ = StringField(GetGadgetItemText(#Listview_recherche, GetGadgetState(#Listview_recherche)), 3, ":")
chaine4$ = StringField(GetGadgetItemText(#Listview_recherche, GetGadgetState(#Listview_recherche)), 4, ":")
chaine5$ = StringField(GetGadgetItemText(#Listview_recherche, GetGadgetState(#Listview_recherche)), 5, ":")
If fonction$ = chaine1$
If grade$ = chaine2$
If nom$ = chaine3$
If numeroPoste$ = chaine4$
If telperso$ = chaine5$
SendMessage_(ListIconID,  #LVM_ENSUREVISIBLE, ListiconElement, #Null) 
SetGadgetState(#ListIcon_0, ListiconElement)
SetActiveGadget(#ListIcon_0)
EndIf
EndIf
EndIf
EndIf
EndIf
Next ListiconElement 
EndProcedure
J'espère que le code est assez claire mais bon j'explique vite fais :
Donc on fait toutes la listicon, colonne par colonne pour trouver exactement ce que l'on veut. Ensuite l'api windows va bouger les scroll bar en automatique pour que l'on puisse voir l'élément et on va activer la selection pour vraiment le voir ;)
++
Je cherche à faire la même chose sous linux, vue que la Gendarmerie migre tous les PC sous linux...
Répondre