Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » User abfragen, wenn statisch kompiliert

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
29.09.2006, 12:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, alle die nen internen puffer benutzen sind nicht threadsafe.

Ansonsten - hab mal etwas gegooglet. Die Warnung besagt das getpw*-Funktionen IMMER aus der glibc des lokalen hosts geladen werden müssen - irgendwo auch logisch da die ja entsprechend der konfiguration des hostsystems die userdaten abfragen müssen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
29.09.2006, 13:10 Uhr
flappinski



und warum braucht die getlogin() bzw. getlogin_r() - Funktion die glibc nicht?
und warum bekommt Virtual die Warnmeldung nicht?
Naja, vielleicht stelle ich zuviele Fragen, mit getlogin_r() funktioniert es und ich bin zumindest an diesem kleinen Punkt treadsafe. Vielleicht sollte ich da mal zufrieden sein!
Gruss,
Stephan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
29.09.2006, 13:25 Uhr
virtual
Sexiest Bit alive
(Operator)


Weil ich vermutlivch auf einem weentlichen äteren System gearbeitet habe. Ich habe das ganze gestern nochmal mit einer neueren libc probiert und bin auch steckengeblieben.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
29.09.2006, 15:41 Uhr
flappinski



jut, jetzt bin ich aber mal beruhigt. Ein sonniges Wochenende wünsche ich, vergesst den Laptop nicht, wenn ihr an den See fahrt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
29.09.2006, 16:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


getlogin/_r benutzt einen syscall um den namen abzufragen - woher der syscall dann die daten hat macht der kernel:


C++:
/* Cache the system call's return value.  */
char *__getlogin_cache;
/* The kernel never returns more than MAXLOGNAME bytes, therefore we don't
   need more than that either.  */

char __getlogin_cache_room[MAXLOGNAME];

extern int __syscall_getlogin (char *__name, size_t __name_len);

/* Return at most NAME_LEN characters of the login name of the user in NAME.
   If it cannot be determined or some other error occurred, return the error
   code.  Otherwise return 0.
   Note that the getlogin_r function in FreeBSD libc returns a 'char *',
   but SUSV2 wants a return type of 'int'.  */


int getlogin_r (char *name, size_t name_len)
{
  size_t len;

  if (__getlogin_cache == NULL)
    {
      if (INLINE_SYSCALL (getlogin, 2, __getlogin_cache_room, MAXLOGNAME) < 0)
    return -1;
      /* The system call should return a NULL terminated name.  */
      if (__memchr (__getlogin_cache_room, '\0', MAXLOGNAME) == NULL)
    abort ();
      __getlogin_cache = __getlogin_cache_room;
    }

  len = strlen (__getlogin_cache);
  if (__builtin_expect (len < name_len, 1))
    {
      memcpy (name, __getlogin_cache, len + 1);
      return 0;
    }
  else
    {
      __set_errno (ERANGE);
      return -1;
    }
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: