Page 1 sur 1

API Linux

Publié : sam. 07/mars/2009 15:27
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

Publié : sam. 07/mars/2009 15:28
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

Publié : sam. 07/mars/2009 16:28
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

Publié : sam. 07/mars/2009 17:18
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 


Publié : dim. 08/mars/2009 10:22
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 ;)

Publié : dim. 08/mars/2009 12:47
par Anonyme
Si tu pouvais trouver le retour à la ligne

#CR$ ?

Publié : dim. 08/mars/2009 16:08
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 ;)

Publié : dim. 08/mars/2009 18:48
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$

Publié : dim. 08/mars/2009 22:22
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 " ?

Publié : dim. 08/mars/2009 22:56
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
:)

Publié : dim. 08/mars/2009 23:55
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 !

Publié : lun. 09/mars/2009 7:32
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

Publié : lun. 09/mars/2009 10:19
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 ?

Publié : lun. 16/mars/2009 22:48
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...