Bugzilla – Attachment 257521 Details for
Bug 455812
gcc internal error (4.3.1 20080507 prerelease)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Forgot Password
preprocessed source file (via gcc -E)
XrdSecProtocolpwd_preprocessed.cc (text/plain), 682.71 KB, created by
Alexandr Malusek
on 2008-12-02 23:04:52 UTC
(
hide
)
Description:
preprocessed source file (via gcc -E)
Filename:
MIME Type:
Creator:
Alexandr Malusek
Created:
2008-12-02 23:04:52 UTC
Size:
682.71 KB
patch
obsolete
># 1 "XrdSecProtocolpwd.cc" ># 1 "<built-in>" ># 1 "<command-line>" ># 1 "XrdSecProtocolpwd.cc" ># 12 "XrdSecProtocolpwd.cc" ># 1 "/usr/include/unistd.h" 1 3 4 ># 26 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/features.h" 1 3 4 ># 330 "/usr/include/features.h" 3 4 ># 1 "/usr/include/sys/cdefs.h" 1 3 4 ># 348 "/usr/include/sys/cdefs.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 349 "/usr/include/sys/cdefs.h" 2 3 4 ># 331 "/usr/include/features.h" 2 3 4 ># 354 "/usr/include/features.h" 3 4 ># 1 "/usr/include/gnu/stubs.h" 1 3 4 > > > ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 5 "/usr/include/gnu/stubs.h" 2 3 4 > > > > ># 1 "/usr/include/gnu/stubs-64.h" 1 3 4 ># 10 "/usr/include/gnu/stubs.h" 2 3 4 ># 355 "/usr/include/features.h" 2 3 4 ># 27 "/usr/include/unistd.h" 2 3 4 > >extern "C" { ># 173 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/bits/posix_opt.h" 1 3 4 ># 174 "/usr/include/unistd.h" 2 3 4 > > > ># 1 "/usr/include/bits/environments.h" 1 3 4 ># 23 "/usr/include/bits/environments.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 24 "/usr/include/bits/environments.h" 2 3 4 ># 178 "/usr/include/unistd.h" 2 3 4 ># 188 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/bits/types.h" 1 3 4 ># 28 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/usr/include/bits/types.h" 2 3 4 > > >typedef unsigned char __u_char; >typedef unsigned short int __u_short; >typedef unsigned int __u_int; >typedef unsigned long int __u_long; > > >typedef signed char __int8_t; >typedef unsigned char __uint8_t; >typedef signed short int __int16_t; >typedef unsigned short int __uint16_t; >typedef signed int __int32_t; >typedef unsigned int __uint32_t; > >typedef signed long int __int64_t; >typedef unsigned long int __uint64_t; > > > > > > > >typedef long int __quad_t; >typedef unsigned long int __u_quad_t; ># 131 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/typesizes.h" 1 3 4 ># 132 "/usr/include/bits/types.h" 2 3 4 > > >typedef unsigned long int __dev_t; >typedef unsigned int __uid_t; >typedef unsigned int __gid_t; >typedef unsigned long int __ino_t; >typedef unsigned long int __ino64_t; >typedef unsigned int __mode_t; >typedef unsigned long int __nlink_t; >typedef long int __off_t; >typedef long int __off64_t; >typedef int __pid_t; >typedef struct { int __val[2]; } __fsid_t; >typedef long int __clock_t; >typedef unsigned long int __rlim_t; >typedef unsigned long int __rlim64_t; >typedef unsigned int __id_t; >typedef long int __time_t; >typedef unsigned int __useconds_t; >typedef long int __suseconds_t; > >typedef int __daddr_t; >typedef long int __swblk_t; >typedef int __key_t; > > >typedef int __clockid_t; > > >typedef void * __timer_t; > > >typedef long int __blksize_t; > > > > >typedef long int __blkcnt_t; >typedef long int __blkcnt64_t; > > >typedef unsigned long int __fsblkcnt_t; >typedef unsigned long int __fsblkcnt64_t; > > >typedef unsigned long int __fsfilcnt_t; >typedef unsigned long int __fsfilcnt64_t; > >typedef long int __ssize_t; > > > >typedef __off64_t __loff_t; >typedef __quad_t *__qaddr_t; >typedef char *__caddr_t; > > >typedef long int __intptr_t; > > >typedef unsigned int __socklen_t; ># 189 "/usr/include/unistd.h" 2 3 4 > > >typedef __ssize_t ssize_t; > > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 214 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 3 4 >typedef long unsigned int size_t; ># 198 "/usr/include/unistd.h" 2 3 4 > > > > > >typedef __gid_t gid_t; > > > > >typedef __uid_t uid_t; > > > > > > > >typedef __off64_t off_t; > > > > >typedef __off64_t off64_t; > > > > >typedef __useconds_t useconds_t; > > > > >typedef __pid_t pid_t; > > > > > > >typedef __intptr_t intptr_t; > > > > > > >typedef __socklen_t socklen_t; ># 258 "/usr/include/unistd.h" 3 4 >extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int euidaccess (__const char *__name, int __type) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int eaccess (__const char *__name, int __type) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int faccessat (int __fd, __const char *__file, int __type, int __flag) > throw () __attribute__ ((__nonnull__ (2))) ; ># 304 "/usr/include/unistd.h" 3 4 >extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) throw () __asm__ ("" "lseek64"); > > > > > > > >extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) > throw (); > > > > > > >extern int close (int __fd); > > > > > > >extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ; > > > > > >extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; ># 355 "/usr/include/unistd.h" 3 4 >extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") ; > > >extern ssize_t pwrite (int __fd, __const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") ; ># 371 "/usr/include/unistd.h" 3 4 >extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, > __off64_t __offset) ; > > >extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, > __off64_t __offset) ; > > > > > > > >extern int pipe (int __pipedes[2]) throw () ; ># 393 "/usr/include/unistd.h" 3 4 >extern unsigned int alarm (unsigned int __seconds) throw (); ># 405 "/usr/include/unistd.h" 3 4 >extern unsigned int sleep (unsigned int __seconds); > > > > > > >extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) > throw (); > > > > > > >extern int usleep (__useconds_t __useconds); ># 429 "/usr/include/unistd.h" 3 4 >extern int pause (void); > > > >extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) > throw () __attribute__ ((__nonnull__ (1))) ; > > > >extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ; > > > > >extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > > >extern int fchownat (int __fd, __const char *__file, __uid_t __owner, > __gid_t __group, int __flag) > throw () __attribute__ ((__nonnull__ (2))) ; > > > >extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ; > > > >extern int fchdir (int __fd) throw () ; ># 471 "/usr/include/unistd.h" 3 4 >extern char *getcwd (char *__buf, size_t __size) throw () ; > > > > > >extern char *get_current_dir_name (void) throw (); > > > > > > >extern char *getwd (char *__buf) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ; > > > > >extern int dup (int __fd) throw () ; > > >extern int dup2 (int __fd, int __fd2) throw (); > > >extern char **__environ; > >extern char **environ; > > > > > >extern int execve (__const char *__path, char *__const __argv[], > char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) > throw (); > > > > >extern int execv (__const char *__path, char *__const __argv[]) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int execle (__const char *__path, __const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int execl (__const char *__path, __const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int execvp (__const char *__file, char *__const __argv[]) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int execlp (__const char *__file, __const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int nice (int __inc) throw () ; > > > > >extern void _exit (int __status) __attribute__ ((__noreturn__)); > > > > > ># 1 "/usr/include/bits/confname.h" 1 3 4 ># 26 "/usr/include/bits/confname.h" 3 4 >enum > { > _PC_LINK_MAX, > > _PC_MAX_CANON, > > _PC_MAX_INPUT, > > _PC_NAME_MAX, > > _PC_PATH_MAX, > > _PC_PIPE_BUF, > > _PC_CHOWN_RESTRICTED, > > _PC_NO_TRUNC, > > _PC_VDISABLE, > > _PC_SYNC_IO, > > _PC_ASYNC_IO, > > _PC_PRIO_IO, > > _PC_SOCK_MAXBUF, > > _PC_FILESIZEBITS, > > _PC_REC_INCR_XFER_SIZE, > > _PC_REC_MAX_XFER_SIZE, > > _PC_REC_MIN_XFER_SIZE, > > _PC_REC_XFER_ALIGN, > > _PC_ALLOC_SIZE_MIN, > > _PC_SYMLINK_MAX, > > _PC_2_SYMLINKS > > }; > > >enum > { > _SC_ARG_MAX, > > _SC_CHILD_MAX, > > _SC_CLK_TCK, > > _SC_NGROUPS_MAX, > > _SC_OPEN_MAX, > > _SC_STREAM_MAX, > > _SC_TZNAME_MAX, > > _SC_JOB_CONTROL, > > _SC_SAVED_IDS, > > _SC_REALTIME_SIGNALS, > > _SC_PRIORITY_SCHEDULING, > > _SC_TIMERS, > > _SC_ASYNCHRONOUS_IO, > > _SC_PRIORITIZED_IO, > > _SC_SYNCHRONIZED_IO, > > _SC_FSYNC, > > _SC_MAPPED_FILES, > > _SC_MEMLOCK, > > _SC_MEMLOCK_RANGE, > > _SC_MEMORY_PROTECTION, > > _SC_MESSAGE_PASSING, > > _SC_SEMAPHORES, > > _SC_SHARED_MEMORY_OBJECTS, > > _SC_AIO_LISTIO_MAX, > > _SC_AIO_MAX, > > _SC_AIO_PRIO_DELTA_MAX, > > _SC_DELAYTIMER_MAX, > > _SC_MQ_OPEN_MAX, > > _SC_MQ_PRIO_MAX, > > _SC_VERSION, > > _SC_PAGESIZE, > > > _SC_RTSIG_MAX, > > _SC_SEM_NSEMS_MAX, > > _SC_SEM_VALUE_MAX, > > _SC_SIGQUEUE_MAX, > > _SC_TIMER_MAX, > > > > > _SC_BC_BASE_MAX, > > _SC_BC_DIM_MAX, > > _SC_BC_SCALE_MAX, > > _SC_BC_STRING_MAX, > > _SC_COLL_WEIGHTS_MAX, > > _SC_EQUIV_CLASS_MAX, > > _SC_EXPR_NEST_MAX, > > _SC_LINE_MAX, > > _SC_RE_DUP_MAX, > > _SC_CHARCLASS_NAME_MAX, > > > _SC_2_VERSION, > > _SC_2_C_BIND, > > _SC_2_C_DEV, > > _SC_2_FORT_DEV, > > _SC_2_FORT_RUN, > > _SC_2_SW_DEV, > > _SC_2_LOCALEDEF, > > > _SC_PII, > > _SC_PII_XTI, > > _SC_PII_SOCKET, > > _SC_PII_INTERNET, > > _SC_PII_OSI, > > _SC_POLL, > > _SC_SELECT, > > _SC_UIO_MAXIOV, > > _SC_IOV_MAX = _SC_UIO_MAXIOV, > > _SC_PII_INTERNET_STREAM, > > _SC_PII_INTERNET_DGRAM, > > _SC_PII_OSI_COTS, > > _SC_PII_OSI_CLTS, > > _SC_PII_OSI_M, > > _SC_T_IOV_MAX, > > > > _SC_THREADS, > > _SC_THREAD_SAFE_FUNCTIONS, > > _SC_GETGR_R_SIZE_MAX, > > _SC_GETPW_R_SIZE_MAX, > > _SC_LOGIN_NAME_MAX, > > _SC_TTY_NAME_MAX, > > _SC_THREAD_DESTRUCTOR_ITERATIONS, > > _SC_THREAD_KEYS_MAX, > > _SC_THREAD_STACK_MIN, > > _SC_THREAD_THREADS_MAX, > > _SC_THREAD_ATTR_STACKADDR, > > _SC_THREAD_ATTR_STACKSIZE, > > _SC_THREAD_PRIORITY_SCHEDULING, > > _SC_THREAD_PRIO_INHERIT, > > _SC_THREAD_PRIO_PROTECT, > > _SC_THREAD_PROCESS_SHARED, > > > _SC_NPROCESSORS_CONF, > > _SC_NPROCESSORS_ONLN, > > _SC_PHYS_PAGES, > > _SC_AVPHYS_PAGES, > > _SC_ATEXIT_MAX, > > _SC_PASS_MAX, > > > _SC_XOPEN_VERSION, > > _SC_XOPEN_XCU_VERSION, > > _SC_XOPEN_UNIX, > > _SC_XOPEN_CRYPT, > > _SC_XOPEN_ENH_I18N, > > _SC_XOPEN_SHM, > > > _SC_2_CHAR_TERM, > > _SC_2_C_VERSION, > > _SC_2_UPE, > > > _SC_XOPEN_XPG2, > > _SC_XOPEN_XPG3, > > _SC_XOPEN_XPG4, > > > _SC_CHAR_BIT, > > _SC_CHAR_MAX, > > _SC_CHAR_MIN, > > _SC_INT_MAX, > > _SC_INT_MIN, > > _SC_LONG_BIT, > > _SC_WORD_BIT, > > _SC_MB_LEN_MAX, > > _SC_NZERO, > > _SC_SSIZE_MAX, > > _SC_SCHAR_MAX, > > _SC_SCHAR_MIN, > > _SC_SHRT_MAX, > > _SC_SHRT_MIN, > > _SC_UCHAR_MAX, > > _SC_UINT_MAX, > > _SC_ULONG_MAX, > > _SC_USHRT_MAX, > > > _SC_NL_ARGMAX, > > _SC_NL_LANGMAX, > > _SC_NL_MSGMAX, > > _SC_NL_NMAX, > > _SC_NL_SETMAX, > > _SC_NL_TEXTMAX, > > > _SC_XBS5_ILP32_OFF32, > > _SC_XBS5_ILP32_OFFBIG, > > _SC_XBS5_LP64_OFF64, > > _SC_XBS5_LPBIG_OFFBIG, > > > _SC_XOPEN_LEGACY, > > _SC_XOPEN_REALTIME, > > _SC_XOPEN_REALTIME_THREADS, > > > _SC_ADVISORY_INFO, > > _SC_BARRIERS, > > _SC_BASE, > > _SC_C_LANG_SUPPORT, > > _SC_C_LANG_SUPPORT_R, > > _SC_CLOCK_SELECTION, > > _SC_CPUTIME, > > _SC_THREAD_CPUTIME, > > _SC_DEVICE_IO, > > _SC_DEVICE_SPECIFIC, > > _SC_DEVICE_SPECIFIC_R, > > _SC_FD_MGMT, > > _SC_FIFO, > > _SC_PIPE, > > _SC_FILE_ATTRIBUTES, > > _SC_FILE_LOCKING, > > _SC_FILE_SYSTEM, > > _SC_MONOTONIC_CLOCK, > > _SC_MULTI_PROCESS, > > _SC_SINGLE_PROCESS, > > _SC_NETWORKING, > > _SC_READER_WRITER_LOCKS, > > _SC_SPIN_LOCKS, > > _SC_REGEXP, > > _SC_REGEX_VERSION, > > _SC_SHELL, > > _SC_SIGNALS, > > _SC_SPAWN, > > _SC_SPORADIC_SERVER, > > _SC_THREAD_SPORADIC_SERVER, > > _SC_SYSTEM_DATABASE, > > _SC_SYSTEM_DATABASE_R, > > _SC_TIMEOUTS, > > _SC_TYPED_MEMORY_OBJECTS, > > _SC_USER_GROUPS, > > _SC_USER_GROUPS_R, > > _SC_2_PBS, > > _SC_2_PBS_ACCOUNTING, > > _SC_2_PBS_LOCATE, > > _SC_2_PBS_MESSAGE, > > _SC_2_PBS_TRACK, > > _SC_SYMLOOP_MAX, > > _SC_STREAMS, > > _SC_2_PBS_CHECKPOINT, > > > _SC_V6_ILP32_OFF32, > > _SC_V6_ILP32_OFFBIG, > > _SC_V6_LP64_OFF64, > > _SC_V6_LPBIG_OFFBIG, > > > _SC_HOST_NAME_MAX, > > _SC_TRACE, > > _SC_TRACE_EVENT_FILTER, > > _SC_TRACE_INHERIT, > > _SC_TRACE_LOG, > > > _SC_LEVEL1_ICACHE_SIZE, > > _SC_LEVEL1_ICACHE_ASSOC, > > _SC_LEVEL1_ICACHE_LINESIZE, > > _SC_LEVEL1_DCACHE_SIZE, > > _SC_LEVEL1_DCACHE_ASSOC, > > _SC_LEVEL1_DCACHE_LINESIZE, > > _SC_LEVEL2_CACHE_SIZE, > > _SC_LEVEL2_CACHE_ASSOC, > > _SC_LEVEL2_CACHE_LINESIZE, > > _SC_LEVEL3_CACHE_SIZE, > > _SC_LEVEL3_CACHE_ASSOC, > > _SC_LEVEL3_CACHE_LINESIZE, > > _SC_LEVEL4_CACHE_SIZE, > > _SC_LEVEL4_CACHE_ASSOC, > > _SC_LEVEL4_CACHE_LINESIZE, > > > > _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, > > _SC_RAW_SOCKETS > > }; > > >enum > { > _CS_PATH, > > > _CS_V6_WIDTH_RESTRICTED_ENVS, > > > > _CS_GNU_LIBC_VERSION, > > _CS_GNU_LIBPTHREAD_VERSION, > > > _CS_LFS_CFLAGS = 1000, > > _CS_LFS_LDFLAGS, > > _CS_LFS_LIBS, > > _CS_LFS_LINTFLAGS, > > _CS_LFS64_CFLAGS, > > _CS_LFS64_LDFLAGS, > > _CS_LFS64_LIBS, > > _CS_LFS64_LINTFLAGS, > > > _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, > > _CS_XBS5_ILP32_OFF32_LDFLAGS, > > _CS_XBS5_ILP32_OFF32_LIBS, > > _CS_XBS5_ILP32_OFF32_LINTFLAGS, > > _CS_XBS5_ILP32_OFFBIG_CFLAGS, > > _CS_XBS5_ILP32_OFFBIG_LDFLAGS, > > _CS_XBS5_ILP32_OFFBIG_LIBS, > > _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, > > _CS_XBS5_LP64_OFF64_CFLAGS, > > _CS_XBS5_LP64_OFF64_LDFLAGS, > > _CS_XBS5_LP64_OFF64_LIBS, > > _CS_XBS5_LP64_OFF64_LINTFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_CFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, > > _CS_XBS5_LPBIG_OFFBIG_LIBS, > > _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, > > > _CS_POSIX_V6_ILP32_OFF32_CFLAGS, > > _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, > > _CS_POSIX_V6_ILP32_OFF32_LIBS, > > _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, > > _CS_POSIX_V6_ILP32_OFFBIG_LIBS, > > _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, > > _CS_POSIX_V6_LP64_OFF64_CFLAGS, > > _CS_POSIX_V6_LP64_OFF64_LDFLAGS, > > _CS_POSIX_V6_LP64_OFF64_LIBS, > > _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, > > _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS > > }; ># 555 "/usr/include/unistd.h" 2 3 4 > > >extern long int pathconf (__const char *__path, int __name) > throw () __attribute__ ((__nonnull__ (1))); > > >extern long int fpathconf (int __fd, int __name) throw (); > > >extern long int sysconf (int __name) throw (); > > > >extern size_t confstr (int __name, char *__buf, size_t __len) throw (); > > > > >extern __pid_t getpid (void) throw (); > > >extern __pid_t getppid (void) throw (); > > > > >extern __pid_t getpgrp (void) throw (); ># 591 "/usr/include/unistd.h" 3 4 >extern __pid_t __getpgid (__pid_t __pid) throw (); > >extern __pid_t getpgid (__pid_t __pid) throw (); > > > > > > >extern int setpgid (__pid_t __pid, __pid_t __pgid) throw (); ># 617 "/usr/include/unistd.h" 3 4 >extern int setpgrp (void) throw (); ># 634 "/usr/include/unistd.h" 3 4 >extern __pid_t setsid (void) throw (); > > > >extern __pid_t getsid (__pid_t __pid) throw (); > > > >extern __uid_t getuid (void) throw (); > > >extern __uid_t geteuid (void) throw (); > > >extern __gid_t getgid (void) throw (); > > >extern __gid_t getegid (void) throw (); > > > > >extern int getgroups (int __size, __gid_t __list[]) throw () ; > > > >extern int group_member (__gid_t __gid) throw (); > > > > > > >extern int setuid (__uid_t __uid) throw (); > > > > >extern int setreuid (__uid_t __ruid, __uid_t __euid) throw (); > > > > >extern int seteuid (__uid_t __uid) throw (); > > > > > > >extern int setgid (__gid_t __gid) throw (); > > > > >extern int setregid (__gid_t __rgid, __gid_t __egid) throw (); > > > > >extern int setegid (__gid_t __gid) throw (); > > > > > >extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) > throw (); > > > >extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) > throw (); > > > >extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) > throw (); > > > >extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) > throw (); > > > > > > >extern __pid_t fork (void) throw (); > > > > > > >extern __pid_t vfork (void) throw (); > > > > > >extern char *ttyname (int __fd) throw (); > > > >extern int ttyname_r (int __fd, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))) ; > > > >extern int isatty (int __fd) throw (); > > > > > >extern int ttyslot (void) throw (); > > > > >extern int link (__const char *__from, __const char *__to) > throw () __attribute__ ((__nonnull__ (1, 2))) ; > > > > >extern int linkat (int __fromfd, __const char *__from, int __tofd, > __const char *__to, int __flags) > throw () __attribute__ ((__nonnull__ (2, 4))) ; > > > > >extern int symlink (__const char *__from, __const char *__to) > throw () __attribute__ ((__nonnull__ (1, 2))) ; > > > > >extern ssize_t readlink (__const char *__restrict __path, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (1, 2))) ; > > > > >extern int symlinkat (__const char *__from, int __tofd, > __const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) ; > > >extern ssize_t readlinkat (int __fd, __const char *__restrict __path, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (2, 3))) ; > > > >extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1))); > > > >extern int unlinkat (int __fd, __const char *__name, int __flag) > throw () __attribute__ ((__nonnull__ (2))); > > > >extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))); > > > >extern __pid_t tcgetpgrp (int __fd) throw (); > > >extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); > > > > > > >extern char *getlogin (void); > > > > > > > >extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); > > > > >extern int setlogin (__const char *__name) throw () __attribute__ ((__nonnull__ (1))); ># 837 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/getopt.h" 1 3 4 ># 50 "/usr/include/getopt.h" 3 4 >extern "C" { ># 59 "/usr/include/getopt.h" 3 4 >extern char *optarg; ># 73 "/usr/include/getopt.h" 3 4 >extern int optind; > > > > >extern int opterr; > > > >extern int optopt; ># 152 "/usr/include/getopt.h" 3 4 >extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) > throw (); ># 171 "/usr/include/getopt.h" 3 4 >} ># 838 "/usr/include/unistd.h" 2 3 4 > > > > > > > >extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int sethostname (__const char *__name, size_t __len) > throw () __attribute__ ((__nonnull__ (1))) ; > > > >extern int sethostid (long int __id) throw () ; > > > > > >extern int getdomainname (char *__name, size_t __len) > throw () __attribute__ ((__nonnull__ (1))) ; >extern int setdomainname (__const char *__name, size_t __len) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > >extern int vhangup (void) throw (); > > >extern int revoke (__const char *__file) throw () __attribute__ ((__nonnull__ (1))) ; > > > > > > > >extern int profil (unsigned short int *__sample_buffer, size_t __size, > size_t __offset, unsigned int __scale) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int acct (__const char *__name) throw (); > > > >extern char *getusershell (void) throw (); >extern void endusershell (void) throw (); >extern void setusershell (void) throw (); > > > > > >extern int daemon (int __nochdir, int __noclose) throw () ; > > > > > > >extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ; > > > >extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1))); ># 923 "/usr/include/unistd.h" 3 4 >extern int fsync (int __fd); > > > > > > >extern long int gethostid (void); > > >extern void sync (void) throw (); > > > > >extern int getpagesize (void) throw () __attribute__ ((__const__)); > > > > >extern int getdtablesize (void) throw (); ># 952 "/usr/include/unistd.h" 3 4 >extern int truncate (__const char *__file, __off64_t __length) throw () __asm__ ("" "truncate64") __attribute__ ((__nonnull__ (1))) ; > > > > > > > >extern int truncate64 (__const char *__file, __off64_t __length) > throw () __attribute__ ((__nonnull__ (1))) ; ># 973 "/usr/include/unistd.h" 3 4 >extern int ftruncate (int __fd, __off64_t __length) throw () __asm__ ("" "ftruncate64") ; > > > > > > >extern int ftruncate64 (int __fd, __off64_t __length) throw () ; ># 990 "/usr/include/unistd.h" 3 4 >extern int brk (void *__addr) throw () ; > > > > > >extern void *sbrk (intptr_t __delta) throw (); ># 1011 "/usr/include/unistd.h" 3 4 >extern long int syscall (long int __sysno, ...) throw (); ># 1037 "/usr/include/unistd.h" 3 4 >extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") ; > > > > > > >extern int lockf64 (int __fd, int __cmd, __off64_t __len) ; ># 1065 "/usr/include/unistd.h" 3 4 >extern int fdatasync (int __fildes); > > > > > > > >extern char *crypt (__const char *__key, __const char *__salt) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern void swab (__const void *__restrict __from, void *__restrict __to, > ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > > > >extern char *ctermid (char *__s) throw (); ># 1103 "/usr/include/unistd.h" 3 4 >} ># 13 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/ctype.h" 1 3 4 ># 30 "/usr/include/ctype.h" 3 4 >extern "C" { ># 41 "/usr/include/ctype.h" 3 4 ># 1 "/usr/include/endian.h" 1 3 4 ># 37 "/usr/include/endian.h" 3 4 ># 1 "/usr/include/bits/endian.h" 1 3 4 ># 38 "/usr/include/endian.h" 2 3 4 ># 42 "/usr/include/ctype.h" 2 3 4 > > > > > > >enum >{ > _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), > _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), > _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), > _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), > _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), > _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), > _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), > _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), > _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), > _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), > _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), > _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) >}; ># 81 "/usr/include/ctype.h" 3 4 >extern __const unsigned short int **__ctype_b_loc (void) > throw () __attribute__ ((__const)); >extern __const __int32_t **__ctype_tolower_loc (void) > throw () __attribute__ ((__const)); >extern __const __int32_t **__ctype_toupper_loc (void) > throw () __attribute__ ((__const)); ># 96 "/usr/include/ctype.h" 3 4 > > > > > > >extern int isalnum (int) throw (); >extern int isalpha (int) throw (); >extern int iscntrl (int) throw (); >extern int isdigit (int) throw (); >extern int islower (int) throw (); >extern int isgraph (int) throw (); >extern int isprint (int) throw (); >extern int ispunct (int) throw (); >extern int isspace (int) throw (); >extern int isupper (int) throw (); >extern int isxdigit (int) throw (); > > > >extern int tolower (int __c) throw (); > > >extern int toupper (int __c) throw (); > > > > > > > > >extern int isblank (int) throw (); > > > > > > >extern int isctype (int __c, int __mask) throw (); > > > > > > >extern int isascii (int __c) throw (); > > > >extern int toascii (int __c) throw (); > > > >extern int _toupper (int) throw (); >extern int _tolower (int) throw (); ># 233 "/usr/include/ctype.h" 3 4 ># 1 "/usr/include/xlocale.h" 1 3 4 ># 28 "/usr/include/xlocale.h" 3 4 >typedef struct __locale_struct >{ > > struct locale_data *__locales[13]; > > > const unsigned short int *__ctype_b; > const int *__ctype_tolower; > const int *__ctype_toupper; > > > const char *__names[13]; >} *__locale_t; ># 234 "/usr/include/ctype.h" 2 3 4 ># 247 "/usr/include/ctype.h" 3 4 >extern int isalnum_l (int, __locale_t) throw (); >extern int isalpha_l (int, __locale_t) throw (); >extern int iscntrl_l (int, __locale_t) throw (); >extern int isdigit_l (int, __locale_t) throw (); >extern int islower_l (int, __locale_t) throw (); >extern int isgraph_l (int, __locale_t) throw (); >extern int isprint_l (int, __locale_t) throw (); >extern int ispunct_l (int, __locale_t) throw (); >extern int isspace_l (int, __locale_t) throw (); >extern int isupper_l (int, __locale_t) throw (); >extern int isxdigit_l (int, __locale_t) throw (); > >extern int isblank_l (int, __locale_t) throw (); > > > >extern int __tolower_l (int __c, __locale_t __l) throw (); >extern int tolower_l (int __c, __locale_t __l) throw (); > > >extern int __toupper_l (int __c, __locale_t __l) throw (); >extern int toupper_l (int __c, __locale_t __l) throw (); ># 323 "/usr/include/ctype.h" 3 4 >} ># 14 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/errno.h" 1 3 4 ># 32 "/usr/include/errno.h" 3 4 >extern "C" { > > > ># 1 "/usr/include/bits/errno.h" 1 3 4 ># 25 "/usr/include/bits/errno.h" 3 4 ># 1 "/usr/include/linux/errno.h" 1 3 4 > > > ># 1 "/usr/include/asm/errno.h" 1 3 4 ># 1 "/usr/include/asm-generic/errno.h" 1 3 4 > > > ># 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 ># 5 "/usr/include/asm-generic/errno.h" 2 3 4 ># 1 "/usr/include/asm/errno.h" 2 3 4 ># 5 "/usr/include/linux/errno.h" 2 3 4 ># 26 "/usr/include/bits/errno.h" 2 3 4 ># 43 "/usr/include/bits/errno.h" 3 4 >extern int *__errno_location (void) throw () __attribute__ ((__const__)); ># 37 "/usr/include/errno.h" 2 3 4 ># 55 "/usr/include/errno.h" 3 4 >extern char *program_invocation_name, *program_invocation_short_name; > > > >} ># 69 "/usr/include/errno.h" 3 4 >typedef int error_t; ># 15 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/stdlib.h" 1 3 4 ># 33 "/usr/include/stdlib.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 34 "/usr/include/stdlib.h" 2 3 4 > >extern "C" { > > > > > > ># 1 "/usr/include/bits/waitflags.h" 1 3 4 ># 43 "/usr/include/stdlib.h" 2 3 4 ># 1 "/usr/include/bits/waitstatus.h" 1 3 4 ># 67 "/usr/include/bits/waitstatus.h" 3 4 >union wait > { > int w_status; > struct > { > > unsigned int __w_termsig:7; > unsigned int __w_coredump:1; > unsigned int __w_retcode:8; > unsigned int:16; > > > > > > > > } __wait_terminated; > struct > { > > unsigned int __w_stopval:8; > unsigned int __w_stopsig:8; > unsigned int:16; > > > > > > > } __wait_stopped; > }; ># 44 "/usr/include/stdlib.h" 2 3 4 ># 96 "/usr/include/stdlib.h" 3 4 > > >typedef struct > { > int quot; > int rem; > } div_t; > > > >typedef struct > { > long int quot; > long int rem; > } ldiv_t; > > > > > > > >__extension__ typedef struct > { > long long int quot; > long long int rem; > } lldiv_t; > > ># 140 "/usr/include/stdlib.h" 3 4 >extern size_t __ctype_get_mb_cur_max (void) throw () ; > > > > >extern double atof (__const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; > >extern int atoi (__const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; > >extern long int atol (__const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; > > > > > >__extension__ extern long long int atoll (__const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; > > > > > >extern double strtod (__const char *__restrict __nptr, > char **__restrict __endptr) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > >extern float strtof (__const char *__restrict __nptr, > char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) ; > >extern long double strtold (__const char *__restrict __nptr, > char **__restrict __endptr) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > >extern long int strtol (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > >extern unsigned long int strtoul (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > >__extension__ >extern long long int strtoq (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > >__extension__ >extern unsigned long long int strtouq (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > >__extension__ >extern long long int strtoll (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > >__extension__ >extern unsigned long long int strtoull (__const char *__restrict __nptr, > char **__restrict __endptr, int __base) > throw () __attribute__ ((__nonnull__ (1))) ; > ># 240 "/usr/include/stdlib.h" 3 4 >extern long int strtol_l (__const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))) ; > >extern unsigned long int strtoul_l (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))) ; > >__extension__ >extern long long int strtoll_l (__const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))) ; > >__extension__ >extern unsigned long long int strtoull_l (__const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))) ; > >extern double strtod_l (__const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))) ; > >extern float strtof_l (__const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))) ; > >extern long double strtold_l (__const char *__restrict __nptr, > char **__restrict __endptr, > __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))) ; > > > > > >extern __inline __attribute__ ((__gnu_inline__)) double >atof (__const char *__nptr) throw () >{ > return strtod (__nptr, (char **) __null); >} >extern __inline __attribute__ ((__gnu_inline__)) int >atoi (__const char *__nptr) throw () >{ > return (int) strtol (__nptr, (char **) __null, 10); >} >extern __inline __attribute__ ((__gnu_inline__)) long int >atol (__const char *__nptr) throw () >{ > return strtol (__nptr, (char **) __null, 10); >} > > > > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int >atoll (__const char *__nptr) throw () >{ > return strtoll (__nptr, (char **) __null, 10); >} > ># 311 "/usr/include/stdlib.h" 3 4 >extern char *l64a (long int __n) throw () ; > > >extern long int a64l (__const char *__s) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; > > > > ># 1 "/usr/include/sys/types.h" 1 3 4 ># 29 "/usr/include/sys/types.h" 3 4 >extern "C" { > > > > > >typedef __u_char u_char; >typedef __u_short u_short; >typedef __u_int u_int; >typedef __u_long u_long; >typedef __quad_t quad_t; >typedef __u_quad_t u_quad_t; >typedef __fsid_t fsid_t; > > > > >typedef __loff_t loff_t; > > > > > >typedef __ino64_t ino_t; > > > > >typedef __ino64_t ino64_t; > > > > >typedef __dev_t dev_t; ># 72 "/usr/include/sys/types.h" 3 4 >typedef __mode_t mode_t; > > > > >typedef __nlink_t nlink_t; ># 105 "/usr/include/sys/types.h" 3 4 >typedef __id_t id_t; ># 116 "/usr/include/sys/types.h" 3 4 >typedef __daddr_t daddr_t; >typedef __caddr_t caddr_t; > > > > > >typedef __key_t key_t; ># 133 "/usr/include/sys/types.h" 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 59 "/usr/include/time.h" 3 4 > > >typedef __clock_t clock_t; > > > ># 75 "/usr/include/time.h" 3 4 > > >typedef __time_t time_t; > > > ># 93 "/usr/include/time.h" 3 4 >typedef __clockid_t clockid_t; ># 105 "/usr/include/time.h" 3 4 >typedef __timer_t timer_t; ># 134 "/usr/include/sys/types.h" 2 3 4 > > > > > > > >typedef __suseconds_t suseconds_t; > > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 148 "/usr/include/sys/types.h" 2 3 4 > > > >typedef unsigned long int ulong; >typedef unsigned short int ushort; >typedef unsigned int uint; ># 195 "/usr/include/sys/types.h" 3 4 >typedef int int8_t __attribute__ ((__mode__ (__QI__))); >typedef int int16_t __attribute__ ((__mode__ (__HI__))); >typedef int int32_t __attribute__ ((__mode__ (__SI__))); >typedef int int64_t __attribute__ ((__mode__ (__DI__))); > > >typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); >typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); >typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); >typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); > >typedef int register_t __attribute__ ((__mode__ (__word__))); ># 220 "/usr/include/sys/types.h" 3 4 ># 1 "/usr/include/sys/select.h" 1 3 4 ># 31 "/usr/include/sys/select.h" 3 4 ># 1 "/usr/include/bits/select.h" 1 3 4 ># 32 "/usr/include/sys/select.h" 2 3 4 > > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 24 "/usr/include/bits/sigset.h" 3 4 >typedef int __sig_atomic_t; > > > > >typedef struct > { > unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; > } __sigset_t; ># 35 "/usr/include/sys/select.h" 2 3 4 > > > >typedef __sigset_t sigset_t; > > > > > ># 1 "/usr/include/time.h" 1 3 4 ># 121 "/usr/include/time.h" 3 4 >struct timespec > { > __time_t tv_sec; > long int tv_nsec; > }; ># 45 "/usr/include/sys/select.h" 2 3 4 > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 69 "/usr/include/bits/time.h" 3 4 >struct timeval > { > __time_t tv_sec; > __suseconds_t tv_usec; > }; ># 47 "/usr/include/sys/select.h" 2 3 4 ># 55 "/usr/include/sys/select.h" 3 4 >typedef long int __fd_mask; ># 67 "/usr/include/sys/select.h" 3 4 >typedef struct > { > > > > __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; > > > > > > } fd_set; > > > > > > >typedef __fd_mask fd_mask; ># 99 "/usr/include/sys/select.h" 3 4 >extern "C" { ># 109 "/usr/include/sys/select.h" 3 4 >extern int select (int __nfds, fd_set *__restrict __readfds, > fd_set *__restrict __writefds, > fd_set *__restrict __exceptfds, > struct timeval *__restrict __timeout); ># 121 "/usr/include/sys/select.h" 3 4 >extern int pselect (int __nfds, fd_set *__restrict __readfds, > fd_set *__restrict __writefds, > fd_set *__restrict __exceptfds, > const struct timespec *__restrict __timeout, > const __sigset_t *__restrict __sigmask); > > >} ># 221 "/usr/include/sys/types.h" 2 3 4 > > ># 1 "/usr/include/sys/sysmacros.h" 1 3 4 ># 30 "/usr/include/sys/sysmacros.h" 3 4 >__extension__ >extern unsigned int gnu_dev_major (unsigned long long int __dev) > throw (); >__extension__ >extern unsigned int gnu_dev_minor (unsigned long long int __dev) > throw (); >__extension__ >extern unsigned long long int gnu_dev_makedev (unsigned int __major, > unsigned int __minor) > throw (); > > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int >gnu_dev_major (unsigned long long int __dev) throw () >{ > return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); >} > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int >gnu_dev_minor (unsigned long long int __dev) throw () >{ > return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); >} > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned long long int >gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw () >{ > return ((__minor & 0xff) | ((__major & 0xfff) << 8) > | (((unsigned long long int) (__minor & ~0xff)) << 12) > | (((unsigned long long int) (__major & ~0xfff)) << 32)); >} ># 224 "/usr/include/sys/types.h" 2 3 4 > > > > >typedef __blksize_t blksize_t; ># 248 "/usr/include/sys/types.h" 3 4 >typedef __blkcnt64_t blkcnt_t; > > > >typedef __fsblkcnt64_t fsblkcnt_t; > > > >typedef __fsfilcnt64_t fsfilcnt_t; > > > > > >typedef __blkcnt64_t blkcnt64_t; >typedef __fsblkcnt64_t fsblkcnt64_t; >typedef __fsfilcnt64_t fsfilcnt64_t; > > > > > ># 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 ># 23 "/usr/include/bits/pthreadtypes.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 24 "/usr/include/bits/pthreadtypes.h" 2 3 4 ># 50 "/usr/include/bits/pthreadtypes.h" 3 4 >typedef unsigned long int pthread_t; > > >typedef union >{ > char __size[56]; > long int __align; >} pthread_attr_t; > > > >typedef struct __pthread_internal_list >{ > struct __pthread_internal_list *__prev; > struct __pthread_internal_list *__next; >} __pthread_list_t; ># 76 "/usr/include/bits/pthreadtypes.h" 3 4 >typedef union >{ > struct __pthread_mutex_s > { > int __lock; > unsigned int __count; > int __owner; > > unsigned int __nusers; > > > > int __kind; > > int __spins; > __pthread_list_t __list; ># 101 "/usr/include/bits/pthreadtypes.h" 3 4 > } __data; > char __size[40]; > long int __align; >} pthread_mutex_t; > >typedef union >{ > char __size[4]; > int __align; >} pthread_mutexattr_t; > > > > >typedef union >{ > struct > { > int __lock; > unsigned int __futex; > __extension__ unsigned long long int __total_seq; > __extension__ unsigned long long int __wakeup_seq; > __extension__ unsigned long long int __woken_seq; > void *__mutex; > unsigned int __nwaiters; > unsigned int __broadcast_seq; > } __data; > char __size[48]; > __extension__ long long int __align; >} pthread_cond_t; > >typedef union >{ > char __size[4]; > int __align; >} pthread_condattr_t; > > > >typedef unsigned int pthread_key_t; > > > >typedef int pthread_once_t; > > > > > >typedef union >{ > > struct > { > int __lock; > unsigned int __nr_readers; > unsigned int __readers_wakeup; > unsigned int __writer_wakeup; > unsigned int __nr_readers_queued; > unsigned int __nr_writers_queued; > int __writer; > int __shared; > unsigned long int __pad1; > unsigned long int __pad2; > > > unsigned int __flags; > } __data; ># 187 "/usr/include/bits/pthreadtypes.h" 3 4 > char __size[56]; > long int __align; >} pthread_rwlock_t; > >typedef union >{ > char __size[8]; > long int __align; >} pthread_rwlockattr_t; > > > > > >typedef volatile int pthread_spinlock_t; > > > > >typedef union >{ > char __size[32]; > long int __align; >} pthread_barrier_t; > >typedef union >{ > char __size[4]; > int __align; >} pthread_barrierattr_t; ># 271 "/usr/include/sys/types.h" 2 3 4 > > >} ># 321 "/usr/include/stdlib.h" 2 3 4 > > > > > > >extern long int random (void) throw (); > > >extern void srandom (unsigned int __seed) throw (); > > > > > >extern char *initstate (unsigned int __seed, char *__statebuf, > size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); > > > >extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >struct random_data > { > int32_t *fptr; > int32_t *rptr; > int32_t *state; > int rand_type; > int rand_deg; > int rand_sep; > int32_t *end_ptr; > }; > >extern int random_r (struct random_data *__restrict __buf, > int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); > >extern int srandom_r (unsigned int __seed, struct random_data *__buf) > throw () __attribute__ ((__nonnull__ (2))); > >extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, > size_t __statelen, > struct random_data *__restrict __buf) > throw () __attribute__ ((__nonnull__ (2, 4))); > >extern int setstate_r (char *__restrict __statebuf, > struct random_data *__restrict __buf) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern int rand (void) throw (); > >extern void srand (unsigned int __seed) throw (); > > > > >extern int rand_r (unsigned int *__seed) throw (); > > > > > > > >extern double drand48 (void) throw (); >extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); > > >extern long int lrand48 (void) throw (); >extern long int nrand48 (unsigned short int __xsubi[3]) > throw () __attribute__ ((__nonnull__ (1))); > > >extern long int mrand48 (void) throw (); >extern long int jrand48 (unsigned short int __xsubi[3]) > throw () __attribute__ ((__nonnull__ (1))); > > >extern void srand48 (long int __seedval) throw (); >extern unsigned short int *seed48 (unsigned short int __seed16v[3]) > throw () __attribute__ ((__nonnull__ (1))); >extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); > > > > > >struct drand48_data > { > unsigned short int __x[3]; > unsigned short int __old_x[3]; > unsigned short int __c; > unsigned short int __init; > unsigned long long int __a; > }; > > >extern int drand48_r (struct drand48_data *__restrict __buffer, > double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); >extern int erand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int lrand48_r (struct drand48_data *__restrict __buffer, > long int *__restrict __result) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern int nrand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > long int *__restrict __result) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int mrand48_r (struct drand48_data *__restrict __buffer, > long int *__restrict __result) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern int jrand48_r (unsigned short int __xsubi[3], > struct drand48_data *__restrict __buffer, > long int *__restrict __result) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int srand48_r (long int __seedval, struct drand48_data *__buffer) > throw () __attribute__ ((__nonnull__ (2))); > >extern int seed48_r (unsigned short int __seed16v[3], > struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); > >extern int lcong48_r (unsigned short int __param[7], > struct drand48_data *__buffer) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > > > > > >extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ; > >extern void *calloc (size_t __nmemb, size_t __size) > throw () __attribute__ ((__malloc__)) ; > > > > > > > > > > >extern void *realloc (void *__ptr, size_t __size) > throw () __attribute__ ((__warn_unused_result__)); > >extern void free (void *__ptr) throw (); > > > > >extern void cfree (void *__ptr) throw (); > > > ># 1 "/usr/include/alloca.h" 1 3 4 ># 25 "/usr/include/alloca.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 26 "/usr/include/alloca.h" 2 3 4 > >extern "C" { > > > > > >extern void *alloca (size_t __size) throw (); > > > > > >} ># 498 "/usr/include/stdlib.h" 2 3 4 > > > > >extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ; > > > > >extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > >extern void abort (void) throw () __attribute__ ((__noreturn__)); > > > >extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern void exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > >extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > >extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ; > > > > >extern char *__secure_getenv (__const char *__name) > throw () __attribute__ ((__nonnull__ (1))) ; > > > > > >extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int setenv (__const char *__name, __const char *__value, int __replace) > throw () __attribute__ ((__nonnull__ (2))); > > >extern int unsetenv (__const char *__name) throw (); > > > > > > >extern int clearenv (void) throw (); ># 583 "/usr/include/stdlib.h" 3 4 >extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; ># 597 "/usr/include/stdlib.h" 3 4 >extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") > __attribute__ ((__nonnull__ (1))) ; > > > > > >extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; ># 614 "/usr/include/stdlib.h" 3 4 >extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; ># 628 "/usr/include/stdlib.h" 3 4 >extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") > __attribute__ ((__nonnull__ (1))) ; > > > > > >extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ; > > > > > > > > > >extern int system (__const char *__command) ; > > > > > > >extern char *canonicalize_file_name (__const char *__name) > throw () __attribute__ ((__nonnull__ (1))) ; ># 662 "/usr/include/stdlib.h" 3 4 >extern char *realpath (__const char *__restrict __name, > char *__restrict __resolved) throw () ; > > > > > > >typedef int (*__compar_fn_t) (__const void *, __const void *); > > >typedef __compar_fn_t comparison_fn_t; > > > >typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *); > > > > > >extern void *bsearch (__const void *__key, __const void *__base, > size_t __nmemb, size_t __size, __compar_fn_t __compar) > __attribute__ ((__nonnull__ (1, 2, 5))) ; > > > >extern void qsort (void *__base, size_t __nmemb, size_t __size, > __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); > >extern void qsort_r (void *__base, size_t __nmemb, size_t __size, > __compar_d_fn_t __compar, void *__arg) > __attribute__ ((__nonnull__ (1, 4))); > > > > >extern int abs (int __x) throw () __attribute__ ((__const__)) ; >extern long int labs (long int __x) throw () __attribute__ ((__const__)) ; > > > >__extension__ extern long long int llabs (long long int __x) > throw () __attribute__ ((__const__)) ; > > > > > > > >extern div_t div (int __numer, int __denom) > throw () __attribute__ ((__const__)) ; >extern ldiv_t ldiv (long int __numer, long int __denom) > throw () __attribute__ ((__const__)) ; > > > > >__extension__ extern lldiv_t lldiv (long long int __numer, > long long int __denom) > throw () __attribute__ ((__const__)) ; > ># 735 "/usr/include/stdlib.h" 3 4 >extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; > > > > >extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ; > > > > >extern char *gcvt (double __value, int __ndigit, char *__buf) > throw () __attribute__ ((__nonnull__ (3))) ; > > > > >extern char *qecvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) > throw () __attribute__ ((__nonnull__ (3, 4))) ; >extern char *qfcvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) > throw () __attribute__ ((__nonnull__ (3, 4))) ; >extern char *qgcvt (long double __value, int __ndigit, char *__buf) > throw () __attribute__ ((__nonnull__ (3))) ; > > > > >extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign, char *__restrict __buf, > size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); >extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign, char *__restrict __buf, > size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); > >extern int qecvt_r (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (3, 4, 5))); >extern int qfcvt_r (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (3, 4, 5))); > > > > > > > >extern int mblen (__const char *__s, size_t __n) throw () ; > > >extern int mbtowc (wchar_t *__restrict __pwc, > __const char *__restrict __s, size_t __n) throw () ; > > >extern int wctomb (char *__s, wchar_t __wchar) throw () ; > > > >extern size_t mbstowcs (wchar_t *__restrict __pwcs, > __const char *__restrict __s, size_t __n) throw (); > >extern size_t wcstombs (char *__restrict __s, > __const wchar_t *__restrict __pwcs, size_t __n) > throw (); > > > > > > > > >extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) ; ># 823 "/usr/include/stdlib.h" 3 4 >extern int getsubopt (char **__restrict __optionp, > char *__const *__restrict __tokens, > char **__restrict __valuep) > throw () __attribute__ ((__nonnull__ (1, 2, 3))) ; > > > > > >extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int posix_openpt (int __oflag) ; > > > > > > > >extern int grantpt (int __fd) throw (); > > > >extern int unlockpt (int __fd) throw (); > > > > >extern char *ptsname (int __fd) throw () ; > > > > > > >extern int ptsname_r (int __fd, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))); > > >extern int getpt (void); > > > > > > >extern int getloadavg (double __loadavg[], int __nelem) > throw () __attribute__ ((__nonnull__ (1))); ># 891 "/usr/include/stdlib.h" 3 4 >} ># 16 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/strings.h" 1 3 4 ># 29 "/usr/include/strings.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 30 "/usr/include/strings.h" 2 3 4 > >extern "C" { > > >extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern void bcopy (__const void *__src, void *__dest, size_t __n) throw (); > > >extern void bzero (void *__s, size_t __n) throw (); > > > >extern int ffs (int __i) throw () __attribute__ ((const)); > > >extern char *index (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > >extern char *rindex (__const char *__s, int __c) throw () __attribute__ ((__pure__)); > > >extern int strcasecmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)); > > >extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > >} ># 17 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/stdio.h" 1 3 4 ># 30 "/usr/include/stdio.h" 3 4 >extern "C" { > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 35 "/usr/include/stdio.h" 2 3 4 ># 45 "/usr/include/stdio.h" 3 4 >struct _IO_FILE; > > > >typedef struct _IO_FILE FILE; > > > > > ># 65 "/usr/include/stdio.h" 3 4 >typedef struct _IO_FILE __FILE; ># 75 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/libio.h" 1 3 4 ># 32 "/usr/include/libio.h" 3 4 ># 1 "/usr/include/_G_config.h" 1 3 4 ># 15 "/usr/include/_G_config.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 16 "/usr/include/_G_config.h" 2 3 4 > > > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 78 "/usr/include/wchar.h" 3 4 >typedef struct >{ > int __count; > union > { > > unsigned int __wch; > > > > char __wchb[4]; > } __value; >} __mbstate_t; ># 21 "/usr/include/_G_config.h" 2 3 4 > >typedef struct >{ > __off_t __pos; > __mbstate_t __state; >} _G_fpos_t; >typedef struct >{ > __off64_t __pos; > __mbstate_t __state; >} _G_fpos64_t; ># 53 "/usr/include/_G_config.h" 3 4 >typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); >typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); >typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); >typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); ># 33 "/usr/include/libio.h" 2 3 4 ># 53 "/usr/include/libio.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 1 3 4 ># 43 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 3 4 >typedef __builtin_va_list __gnuc_va_list; ># 54 "/usr/include/libio.h" 2 3 4 ># 170 "/usr/include/libio.h" 3 4 >struct _IO_jump_t; struct _IO_FILE; ># 180 "/usr/include/libio.h" 3 4 >typedef void _IO_lock_t; > > > > > >struct _IO_marker { > struct _IO_marker *_next; > struct _IO_FILE *_sbuf; > > > > int _pos; ># 203 "/usr/include/libio.h" 3 4 >}; > > >enum __codecvt_result >{ > __codecvt_ok, > __codecvt_partial, > __codecvt_error, > __codecvt_noconv >}; ># 271 "/usr/include/libio.h" 3 4 >struct _IO_FILE { > int _flags; > > > > > char* _IO_read_ptr; > char* _IO_read_end; > char* _IO_read_base; > char* _IO_write_base; > char* _IO_write_ptr; > char* _IO_write_end; > char* _IO_buf_base; > char* _IO_buf_end; > > char *_IO_save_base; > char *_IO_backup_base; > char *_IO_save_end; > > struct _IO_marker *_markers; > > struct _IO_FILE *_chain; > > int _fileno; > > > > int _flags2; > > __off_t _old_offset; > > > > unsigned short _cur_column; > signed char _vtable_offset; > char _shortbuf[1]; > > > > _IO_lock_t *_lock; ># 319 "/usr/include/libio.h" 3 4 > __off64_t _offset; ># 328 "/usr/include/libio.h" 3 4 > void *__pad1; > void *__pad2; > void *__pad3; > void *__pad4; > size_t __pad5; > > int _mode; > > char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; > >}; > > > > > >struct _IO_FILE_plus; > >extern struct _IO_FILE_plus _IO_2_1_stdin_; >extern struct _IO_FILE_plus _IO_2_1_stdout_; >extern struct _IO_FILE_plus _IO_2_1_stderr_; ># 364 "/usr/include/libio.h" 3 4 >typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); > > > > > > > >typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, > size_t __n); > > > > > > > >typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); > > >typedef int __io_close_fn (void *__cookie); > > > > >typedef __io_read_fn cookie_read_function_t; >typedef __io_write_fn cookie_write_function_t; >typedef __io_seek_fn cookie_seek_function_t; >typedef __io_close_fn cookie_close_function_t; > > >typedef struct >{ > __io_read_fn *read; > __io_write_fn *write; > __io_seek_fn *seek; > __io_close_fn *close; >} _IO_cookie_io_functions_t; >typedef _IO_cookie_io_functions_t cookie_io_functions_t; > >struct _IO_cookie_file; > > >extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, > void *__cookie, _IO_cookie_io_functions_t __fns); > > > > >extern "C" { > > >extern int __underflow (_IO_FILE *); >extern int __uflow (_IO_FILE *); >extern int __overflow (_IO_FILE *, int); ># 458 "/usr/include/libio.h" 3 4 >extern int _IO_getc (_IO_FILE *__fp); >extern int _IO_putc (int __c, _IO_FILE *__fp); >extern int _IO_feof (_IO_FILE *__fp) throw (); >extern int _IO_ferror (_IO_FILE *__fp) throw (); > >extern int _IO_peekc_locked (_IO_FILE *__fp); > > > > > >extern void _IO_flockfile (_IO_FILE *) throw (); >extern void _IO_funlockfile (_IO_FILE *) throw (); >extern int _IO_ftrylockfile (_IO_FILE *) throw (); ># 488 "/usr/include/libio.h" 3 4 >extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, > __gnuc_va_list, int *__restrict); >extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, > __gnuc_va_list); >extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t); >extern size_t _IO_sgetn (_IO_FILE *, void *, size_t); > >extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int); >extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int); > >extern void _IO_free_backup_area (_IO_FILE *) throw (); ># 550 "/usr/include/libio.h" 3 4 >} ># 76 "/usr/include/stdio.h" 2 3 4 > > > > >typedef __gnuc_va_list va_list; ># 89 "/usr/include/stdio.h" 3 4 > > > > >typedef _G_fpos64_t fpos_t; > > > >typedef _G_fpos64_t fpos64_t; ># 141 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 142 "/usr/include/stdio.h" 2 3 4 > > > >extern struct _IO_FILE *stdin; >extern struct _IO_FILE *stdout; >extern struct _IO_FILE *stderr; > > > > > > > > > >extern int remove (__const char *__filename) throw (); > >extern int rename (__const char *__old, __const char *__new) throw (); > > > > >extern int renameat (int __oldfd, __const char *__old, int __newfd, > __const char *__new) throw (); > > > ># 177 "/usr/include/stdio.h" 3 4 >extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ; > > > > > > >extern FILE *tmpfile64 (void) ; > > > >extern char *tmpnam (char *__s) throw () ; > > > > > >extern char *tmpnam_r (char *__s) throw () ; ># 206 "/usr/include/stdio.h" 3 4 >extern char *tempnam (__const char *__dir, __const char *__pfx) > throw () __attribute__ ((__malloc__)) ; > > > > > > > > >extern int fclose (FILE *__stream); > > > > >extern int fflush (FILE *__stream); > ># 231 "/usr/include/stdio.h" 3 4 >extern int fflush_unlocked (FILE *__stream); ># 241 "/usr/include/stdio.h" 3 4 >extern int fcloseall (void); > > > > ># 262 "/usr/include/stdio.h" 3 4 >extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64") > > ; >extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") > > > ; > > > > > > > >extern FILE *fopen64 (__const char *__restrict __filename, > __const char *__restrict __modes) ; >extern FILE *freopen64 (__const char *__restrict __filename, > __const char *__restrict __modes, > FILE *__restrict __stream) ; > > > > >extern FILE *fdopen (int __fd, __const char *__modes) throw () ; > > > > > >extern FILE *fopencookie (void *__restrict __magic_cookie, > __const char *__restrict __modes, > _IO_cookie_io_functions_t __io_funcs) throw () ; > > >extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) > throw () ; > > > > >extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ; > > > > > > >extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); > > > >extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, > int __modes, size_t __n) throw (); > > > > > >extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, > size_t __size) throw (); > > >extern void setlinebuf (FILE *__stream) throw (); > > > > > > > > >extern int fprintf (FILE *__restrict __stream, > __const char *__restrict __format, ...); > > > > >extern int printf (__const char *__restrict __format, ...); > >extern int sprintf (char *__restrict __s, > __const char *__restrict __format, ...) throw (); > > > > > >extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg); > > > > >extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); > >extern int vsprintf (char *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg) throw (); > > > > > >extern int snprintf (char *__restrict __s, size_t __maxlen, > __const char *__restrict __format, ...) > throw () __attribute__ ((__format__ (__printf__, 3, 4))); > >extern int vsnprintf (char *__restrict __s, size_t __maxlen, > __const char *__restrict __format, __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__printf__, 3, 0))); > > > > > > >extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, > __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__printf__, 2, 0))) ; >extern int __asprintf (char **__restrict __ptr, > __const char *__restrict __fmt, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; >extern int asprintf (char **__restrict __ptr, > __const char *__restrict __fmt, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; > > > > > > > >extern int vdprintf (int __fd, __const char *__restrict __fmt, > __gnuc_va_list __arg) > __attribute__ ((__format__ (__printf__, 2, 0))); >extern int dprintf (int __fd, __const char *__restrict __fmt, ...) > __attribute__ ((__format__ (__printf__, 2, 3))); > > > > > > > > >extern int fscanf (FILE *__restrict __stream, > __const char *__restrict __format, ...) ; > > > > >extern int scanf (__const char *__restrict __format, ...) ; > >extern int sscanf (__const char *__restrict __s, > __const char *__restrict __format, ...) throw (); ># 443 "/usr/include/stdio.h" 3 4 > > > > > > > > >extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, > __gnuc_va_list __arg) > __attribute__ ((__format__ (__scanf__, 2, 0))) ; > > > > > >extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) > __attribute__ ((__format__ (__scanf__, 1, 0))) ; > > >extern int vsscanf (__const char *__restrict __s, > __const char *__restrict __format, __gnuc_va_list __arg) > throw () __attribute__ ((__format__ (__scanf__, 2, 0))); ># 502 "/usr/include/stdio.h" 3 4 > > > > > > > > > >extern int fgetc (FILE *__stream); >extern int getc (FILE *__stream); > > > > > >extern int getchar (void); > ># 530 "/usr/include/stdio.h" 3 4 >extern int getc_unlocked (FILE *__stream); >extern int getchar_unlocked (void); ># 541 "/usr/include/stdio.h" 3 4 >extern int fgetc_unlocked (FILE *__stream); > > > > > > > > > > > >extern int fputc (int __c, FILE *__stream); >extern int putc (int __c, FILE *__stream); > > > > > >extern int putchar (int __c); > ># 574 "/usr/include/stdio.h" 3 4 >extern int fputc_unlocked (int __c, FILE *__stream); > > > > > > > >extern int putc_unlocked (int __c, FILE *__stream); >extern int putchar_unlocked (int __c); > > > > > > >extern int getw (FILE *__stream); > > >extern int putw (int __w, FILE *__stream); > > > > > > > > >extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) > ; > > > > > > >extern char *gets (char *__s) ; > ># 620 "/usr/include/stdio.h" 3 4 >extern char *fgets_unlocked (char *__restrict __s, int __n, > FILE *__restrict __stream) ; ># 636 "/usr/include/stdio.h" 3 4 >extern __ssize_t __getdelim (char **__restrict __lineptr, > size_t *__restrict __n, int __delimiter, > FILE *__restrict __stream) ; >extern __ssize_t getdelim (char **__restrict __lineptr, > size_t *__restrict __n, int __delimiter, > FILE *__restrict __stream) ; > > > > > > > >extern __ssize_t getline (char **__restrict __lineptr, > size_t *__restrict __n, > FILE *__restrict __stream) ; > > > > > > > > >extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); > > > > > >extern int puts (__const char *__s); > > > > > > >extern int ungetc (int __c, FILE *__stream); > > > > > > >extern size_t fread (void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream) ; > > > > >extern size_t fwrite (__const void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __s) ; > ># 697 "/usr/include/stdio.h" 3 4 >extern int fputs_unlocked (__const char *__restrict __s, > FILE *__restrict __stream); ># 708 "/usr/include/stdio.h" 3 4 >extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream) ; >extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, > size_t __n, FILE *__restrict __stream) ; > > > > > > > > >extern int fseek (FILE *__stream, long int __off, int __whence); > > > > >extern long int ftell (FILE *__stream) ; > > > > >extern void rewind (FILE *__stream); > ># 752 "/usr/include/stdio.h" 3 4 >extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64"); > > >extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64"); > > > > > > > > ># 777 "/usr/include/stdio.h" 3 4 >extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64"); > >extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64"); > > > > > > > > > >extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); >extern __off64_t ftello64 (FILE *__stream) ; >extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); >extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); > > > > >extern void clearerr (FILE *__stream) throw (); > >extern int feof (FILE *__stream) throw () ; > >extern int ferror (FILE *__stream) throw () ; > > > > >extern void clearerr_unlocked (FILE *__stream) throw (); >extern int feof_unlocked (FILE *__stream) throw () ; >extern int ferror_unlocked (FILE *__stream) throw () ; > > > > > > > > >extern void perror (__const char *__s); > > > > > > ># 1 "/usr/include/bits/sys_errlist.h" 1 3 4 ># 27 "/usr/include/bits/sys_errlist.h" 3 4 >extern int sys_nerr; >extern __const char *__const sys_errlist[]; > > >extern int _sys_nerr; >extern __const char *__const _sys_errlist[]; ># 825 "/usr/include/stdio.h" 2 3 4 > > > > >extern int fileno (FILE *__stream) throw () ; > > > > >extern int fileno_unlocked (FILE *__stream) throw () ; ># 844 "/usr/include/stdio.h" 3 4 >extern FILE *popen (__const char *__command, __const char *__modes) ; > > > > > >extern int pclose (FILE *__stream); > > > > > >extern char *ctermid (char *__s) throw (); > > > > > >extern char *cuserid (char *__s); > > > > >struct obstack; > > >extern int obstack_printf (struct obstack *__restrict __obstack, > __const char *__restrict __format, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))); >extern int obstack_vprintf (struct obstack *__restrict __obstack, > __const char *__restrict __format, > __gnuc_va_list __args) > throw () __attribute__ ((__format__ (__printf__, 2, 0))); > > > > > > > >extern void flockfile (FILE *__stream) throw (); > > > >extern int ftrylockfile (FILE *__stream) throw () ; > > >extern void funlockfile (FILE *__stream) throw (); ># 905 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio.h" 1 3 4 ># 36 "/usr/include/bits/stdio.h" 3 4 >extern __inline __attribute__ ((__gnu_inline__)) int >vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) >{ > return vfprintf (stdout, __fmt, __arg); >} > > > >extern __inline __attribute__ ((__gnu_inline__)) int >getchar (void) >{ > return _IO_getc (stdin); >} > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >fgetc_unlocked (FILE *__fp) >{ > return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >getc_unlocked (FILE *__fp) >{ > return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >getchar_unlocked (void) >{ > return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); >} > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >putchar (int __c) >{ > return _IO_putc (__c, stdout); >} > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >fputc_unlocked (int __c, FILE *__stream) >{ > return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >putc_unlocked (int __c, FILE *__stream) >{ > return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >putchar_unlocked (int __c) >{ > return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) __ssize_t >getline (char **__lineptr, size_t *__n, FILE *__stream) >{ > return __getdelim (__lineptr, __n, '\n', __stream); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >feof_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x10) != 0); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >ferror_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x20) != 0); >} ># 906 "/usr/include/stdio.h" 2 3 4 ># 914 "/usr/include/stdio.h" 3 4 >} ># 18 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/sys/param.h" 1 3 4 ># 26 "/usr/include/sys/param.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 1 3 4 ># 11 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/syslimits.h" 1 3 4 > > > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 1 3 4 ># 122 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 3 4 ># 1 "/usr/include/limits.h" 1 3 4 ># 145 "/usr/include/limits.h" 3 4 ># 1 "/usr/include/bits/posix1_lim.h" 1 3 4 ># 153 "/usr/include/bits/posix1_lim.h" 3 4 ># 1 "/usr/include/bits/local_lim.h" 1 3 4 ># 39 "/usr/include/bits/local_lim.h" 3 4 ># 1 "/usr/include/linux/limits.h" 1 3 4 ># 40 "/usr/include/bits/local_lim.h" 2 3 4 ># 154 "/usr/include/bits/posix1_lim.h" 2 3 4 ># 146 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/posix2_lim.h" 1 3 4 ># 150 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/xopen_lim.h" 1 3 4 ># 34 "/usr/include/bits/xopen_lim.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 35 "/usr/include/bits/xopen_lim.h" 2 3 4 ># 154 "/usr/include/limits.h" 2 3 4 ># 123 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 2 3 4 ># 8 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/syslimits.h" 2 3 4 ># 12 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 2 3 4 ># 27 "/usr/include/sys/param.h" 2 3 4 > ># 1 "/usr/include/linux/param.h" 1 3 4 > > > ># 1 "/usr/include/asm/param.h" 1 3 4 ># 5 "/usr/include/linux/param.h" 2 3 4 ># 29 "/usr/include/sys/param.h" 2 3 4 ># 19 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/pwd.h" 1 3 4 ># 28 "/usr/include/pwd.h" 3 4 >extern "C" { > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 34 "/usr/include/pwd.h" 2 3 4 ># 50 "/usr/include/pwd.h" 3 4 >struct passwd >{ > char *pw_name; > char *pw_passwd; > __uid_t pw_uid; > __gid_t pw_gid; > char *pw_gecos; > char *pw_dir; > char *pw_shell; >}; ># 73 "/usr/include/pwd.h" 3 4 >extern void setpwent (void); > > > > > >extern void endpwent (void); > > > > > >extern struct passwd *getpwent (void); ># 95 "/usr/include/pwd.h" 3 4 >extern struct passwd *fgetpwent (FILE *__stream); > > > > > > > >extern int putpwent (__const struct passwd *__restrict __p, > FILE *__restrict __f); > > > > > > >extern struct passwd *getpwuid (__uid_t __uid); > > > > > >extern struct passwd *getpwnam (__const char *__name); ># 140 "/usr/include/pwd.h" 3 4 >extern int getpwent_r (struct passwd *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct passwd **__restrict __result); > > >extern int getpwuid_r (__uid_t __uid, > struct passwd *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct passwd **__restrict __result); > >extern int getpwnam_r (__const char *__restrict __name, > struct passwd *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct passwd **__restrict __result); ># 164 "/usr/include/pwd.h" 3 4 >extern int fgetpwent_r (FILE *__restrict __stream, > struct passwd *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct passwd **__restrict __result); ># 181 "/usr/include/pwd.h" 3 4 >extern int getpw (__uid_t __uid, char *__buffer); > > >} ># 20 "XrdSecProtocolpwd.cc" 2 > ># 1 "/usr/include/sys/stat.h" 1 3 4 ># 39 "/usr/include/sys/stat.h" 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 40 "/usr/include/sys/stat.h" 2 3 4 ># 105 "/usr/include/sys/stat.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/stat.h" 1 3 4 ># 43 "/usr/include/bits/stat.h" 3 4 >struct stat > { > __dev_t st_dev; > > > > > __ino_t st_ino; > > > > > > > > __nlink_t st_nlink; > __mode_t st_mode; > > __uid_t st_uid; > __gid_t st_gid; > > int pad0; > > __dev_t st_rdev; > > > > > __off_t st_size; > > > > __blksize_t st_blksize; > > __blkcnt_t st_blocks; ># 88 "/usr/include/bits/stat.h" 3 4 > struct timespec st_atim; > struct timespec st_mtim; > struct timespec st_ctim; ># 103 "/usr/include/bits/stat.h" 3 4 > long int __unused[3]; ># 112 "/usr/include/bits/stat.h" 3 4 > }; > > > >struct stat64 > { > __dev_t st_dev; > > __ino64_t st_ino; > __nlink_t st_nlink; > __mode_t st_mode; > > > > > > > __uid_t st_uid; > __gid_t st_gid; > > int pad0; > __dev_t st_rdev; > __off_t st_size; > > > > > > __blksize_t st_blksize; > __blkcnt64_t st_blocks; > > > > > > > > struct timespec st_atim; > struct timespec st_mtim; > struct timespec st_ctim; ># 164 "/usr/include/bits/stat.h" 3 4 > long int __unused[3]; > > > > }; ># 108 "/usr/include/sys/stat.h" 2 3 4 ># 217 "/usr/include/sys/stat.h" 3 4 >extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) throw () __asm__ ("" "stat64") > > __attribute__ ((__nonnull__ (1, 2))); >extern int fstat (int __fd, struct stat *__buf) throw () __asm__ ("" "fstat64") > __attribute__ ((__nonnull__ (2))); > > > > > > >extern int stat64 (__const char *__restrict __file, > struct stat64 *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2))); >extern int fstat64 (int __fd, struct stat64 *__buf) throw () __attribute__ ((__nonnull__ (2))); ># 243 "/usr/include/sys/stat.h" 3 4 >extern int fstatat (int __fd, __const char *__restrict __file, struct stat *__restrict __buf, int __flag) throw () __asm__ ("" "fstatat64") __attribute__ ((__nonnull__ (2, 3))); ># 252 "/usr/include/sys/stat.h" 3 4 >extern int fstatat64 (int __fd, __const char *__restrict __file, > struct stat64 *__restrict __buf, int __flag) > throw () __attribute__ ((__nonnull__ (2, 3))); ># 265 "/usr/include/sys/stat.h" 3 4 >extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) throw () __asm__ ("" "lstat64") > > > __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int lstat64 (__const char *__restrict __file, > struct stat64 *__restrict __buf) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int chmod (__const char *__file, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int lchmod (__const char *__file, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int fchmod (int __fd, __mode_t __mode) throw (); > > > > > >extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag) > throw () __attribute__ ((__nonnull__ (2))) ; > > > > > > >extern __mode_t umask (__mode_t __mask) throw (); > > > > >extern __mode_t getumask (void) throw (); > > > >extern int mkdir (__const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int mkdirat (int __fd, __const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (2))); > > > > > > >extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int mknodat (int __fd, __const char *__path, __mode_t __mode, > __dev_t __dev) throw () __attribute__ ((__nonnull__ (2))); > > > > >extern int mkfifo (__const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern int utimensat (int __fd, __const char *__path, > __const struct timespec __times[2], > int __flags) > throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern int futimens (int __fd, __const struct timespec __times[2]) throw (); ># 408 "/usr/include/sys/stat.h" 3 4 >extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) throw () __asm__ ("" "__fxstat64") > > __attribute__ ((__nonnull__ (3))); >extern int __xstat (int __ver, __const char *__filename, struct stat *__stat_buf) throw () __asm__ ("" "__xstat64") > > __attribute__ ((__nonnull__ (2, 3))); >extern int __lxstat (int __ver, __const char *__filename, struct stat *__stat_buf) throw () __asm__ ("" "__lxstat64") > > __attribute__ ((__nonnull__ (2, 3))); >extern int __fxstatat (int __ver, int __fildes, __const char *__filename, struct stat *__stat_buf, int __flag) throw () __asm__ ("" "__fxstatat64") __attribute__ ((__nonnull__ (3, 4))); ># 430 "/usr/include/sys/stat.h" 3 4 >extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) > throw () __attribute__ ((__nonnull__ (3))); >extern int __xstat64 (int __ver, __const char *__filename, > struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3))); >extern int __lxstat64 (int __ver, __const char *__filename, > struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3))); >extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename, > struct stat64 *__stat_buf, int __flag) > throw () __attribute__ ((__nonnull__ (3, 4))); > >extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, > __dev_t *__dev) throw () __attribute__ ((__nonnull__ (2, 4))); > >extern int __xmknodat (int __ver, int __fd, __const char *__path, > __mode_t __mode, __dev_t *__dev) > throw () __attribute__ ((__nonnull__ (3, 5))); > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >stat (__const char *__path, struct stat *__statbuf) throw () >{ > return __xstat (1, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >lstat (__const char *__path, struct stat *__statbuf) throw () >{ > return __lxstat (1, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >fstat (int __fd, struct stat *__statbuf) throw () >{ > return __fxstat (1, __fd, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag) throw () > >{ > return __fxstatat (1, __fd, __filename, __statbuf, __flag); >} > > > >extern __inline __attribute__ ((__gnu_inline__)) int >mknod (__const char *__path, __mode_t __mode, __dev_t __dev) throw () >{ > return __xmknod (0, __path, __mode, &__dev); >} > > > >extern __inline __attribute__ ((__gnu_inline__)) int >mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) throw () > >{ > return __xmknodat (0, __fd, __path, __mode, &__dev); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >stat64 (__const char *__path, struct stat64 *__statbuf) throw () >{ > return __xstat64 (1, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >lstat64 (__const char *__path, struct stat64 *__statbuf) throw () >{ > return __lxstat64 (1, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >fstat64 (int __fd, struct stat64 *__statbuf) throw () >{ > return __fxstat64 (1, __fd, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag) throw () > >{ > return __fxstatat64 (1, __fd, __filename, __statbuf, __flag); >} > > > > > > >} ># 22 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/fcntl.h" 1 3 4 ># 30 "/usr/include/fcntl.h" 3 4 >extern "C" { > > > ># 1 "/usr/include/bits/fcntl.h" 1 3 4 ># 25 "/usr/include/bits/fcntl.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 26 "/usr/include/bits/fcntl.h" 2 3 4 > ># 1 "/usr/include/bits/uio.h" 1 3 4 ># 44 "/usr/include/bits/uio.h" 3 4 >struct iovec > { > void *iov_base; > size_t iov_len; > }; ># 28 "/usr/include/bits/fcntl.h" 2 3 4 ># 158 "/usr/include/bits/fcntl.h" 3 4 >struct flock > { > short int l_type; > short int l_whence; > > > > > __off64_t l_start; > __off64_t l_len; > > __pid_t l_pid; > }; > > >struct flock64 > { > short int l_type; > short int l_whence; > __off64_t l_start; > __off64_t l_len; > __pid_t l_pid; > }; ># 225 "/usr/include/bits/fcntl.h" 3 4 >extern "C" { > > > > >extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) > throw (); > > > >extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, > unsigned int __flags); > > > >extern ssize_t vmsplice (int __fdout, const struct iovec *__iov, > size_t __count, unsigned int __flags); > > >extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout, > __off64_t *__offout, size_t __len, > unsigned int __flags); > > >extern ssize_t tee (int __fdin, int __fdout, size_t __len, > unsigned int __flags); > > > >} ># 35 "/usr/include/fcntl.h" 2 3 4 ># 76 "/usr/include/fcntl.h" 3 4 >extern int fcntl (int __fd, int __cmd, ...); ># 88 "/usr/include/fcntl.h" 3 4 >extern int open (__const char *__file, int __oflag, ...) __asm__ ("" "open64") > __attribute__ ((__nonnull__ (1))); > > > > > >extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); ># 113 "/usr/include/fcntl.h" 3 4 >extern int openat (int __fd, __const char *__file, int __oflag, ...) __asm__ ("" "openat64") __attribute__ ((__nonnull__ (2))); > > > > > > >extern int openat64 (int __fd, __const char *__file, int __oflag, ...) > __attribute__ ((__nonnull__ (2))); ># 133 "/usr/include/fcntl.h" 3 4 >extern int creat (__const char *__file, __mode_t __mode) __asm__ ("" "creat64") __attribute__ ((__nonnull__ (1))); > > > > > > >extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); ># 180 "/usr/include/fcntl.h" 3 4 >extern int posix_fadvise (int __fd, __off64_t __offset, __off64_t __len, int __advise) throw () __asm__ ("" "posix_fadvise64"); > > > > > > > >extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, > int __advise) throw (); ># 201 "/usr/include/fcntl.h" 3 4 >extern int posix_fallocate (int __fd, __off64_t __offset, __off64_t __len) __asm__ ("" "posix_fallocate64"); > > > > > > > >extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); ># 220 "/usr/include/fcntl.h" 3 4 >} ># 23 "XrdSecProtocolpwd.cc" 2 ># 1 "/usr/include/sys/times.h" 1 3 4 ># 29 "/usr/include/sys/times.h" 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 30 "/usr/include/sys/times.h" 2 3 4 > > >extern "C" { > > >struct tms > { > clock_t tms_utime; > clock_t tms_stime; > > clock_t tms_cutime; > clock_t tms_cstime; > }; > > > > > > >extern clock_t times (struct tms *__buffer) throw (); > >} ># 24 "XrdSecProtocolpwd.cc" 2 ># 46 "XrdSecProtocolpwd.cc" ># 1 "../XrdSys/XrdSysHeaders.hh" 1 ># 23 "../XrdSys/XrdSysHeaders.hh" ># 1 "/usr/include/c++/4.3/iostream" 1 3 ># 42 "/usr/include/c++/4.3/iostream" 3 > ># 43 "/usr/include/c++/4.3/iostream" 3 > ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 1 3 > > ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 4 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 2 3 ># 1449 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/os_defines.h" 1 3 ># 1450 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 2 3 > > ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/cpu_defines.h" 1 3 ># 1453 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 2 3 ># 1642 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { ># 1654 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++config.h" 3 >} ># 45 "/usr/include/c++/4.3/iostream" 2 3 ># 1 "/usr/include/c++/4.3/ostream" 1 3 ># 43 "/usr/include/c++/4.3/ostream" 3 > ># 44 "/usr/include/c++/4.3/ostream" 3 > ># 1 "/usr/include/c++/4.3/ios" 1 3 ># 42 "/usr/include/c++/4.3/ios" 3 > ># 43 "/usr/include/c++/4.3/ios" 3 > ># 1 "/usr/include/c++/4.3/iosfwd" 1 3 ># 43 "/usr/include/c++/4.3/iosfwd" 3 > ># 44 "/usr/include/c++/4.3/iosfwd" 3 > > ># 1 "/usr/include/c++/4.3/bits/stringfwd.h" 1 3 ># 42 "/usr/include/c++/4.3/bits/stringfwd.h" 3 > ># 43 "/usr/include/c++/4.3/bits/stringfwd.h" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _Alloc> > class allocator; > > template<class _CharT> > struct char_traits; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_string; > > template<> struct char_traits<char>; > > typedef basic_string<char> string; > > > template<> struct char_traits<wchar_t>; > > typedef basic_string<wchar_t> wstring; > > >} ># 47 "/usr/include/c++/4.3/iosfwd" 2 3 ># 1 "/usr/include/c++/4.3/bits/postypes.h" 1 3 ># 45 "/usr/include/c++/4.3/bits/postypes.h" 3 > ># 46 "/usr/include/c++/4.3/bits/postypes.h" 3 > ># 1 "/usr/include/c++/4.3/cwchar" 1 3 ># 46 "/usr/include/c++/4.3/cwchar" 3 > ># 47 "/usr/include/c++/4.3/cwchar" 3 > > ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 152 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 3 4 >typedef long int ptrdiff_t; ># 49 "/usr/include/c++/4.3/cstddef" 2 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::ptrdiff_t; > using ::size_t; > >} ># 50 "/usr/include/c++/4.3/cwchar" 2 3 > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 40 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 1 3 4 ># 41 "/usr/include/wchar.h" 2 3 4 > ># 1 "/usr/include/bits/wchar.h" 1 3 4 ># 43 "/usr/include/wchar.h" 2 3 4 ># 52 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 355 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 3 4 >typedef unsigned int wint_t; ># 53 "/usr/include/wchar.h" 2 3 4 ># 99 "/usr/include/wchar.h" 3 4 > > >typedef __mbstate_t mbstate_t; > > > ># 124 "/usr/include/wchar.h" 3 4 >extern "C" { > > > > >struct tm; > > > > > > > > > >extern wchar_t *wcscpy (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncpy (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern wchar_t *wcscat (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncat (wchar_t *__restrict __dest, > __const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) > throw () __attribute__ ((__pure__)); > >extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > > > >extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw (); > > >extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, > size_t __n) throw (); > > > > > >extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, > __locale_t __loc) throw (); > >extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > > > > >extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw (); > > > >extern size_t wcsxfrm (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) throw (); > > > > > > > > >extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, > __locale_t __loc) throw (); > > > > >extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > >extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__)); > > > > >extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) > throw () __attribute__ ((__pure__)); > > > > > >extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) > throw () __attribute__ ((__pure__)); > > > > > >extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) > throw () __attribute__ ((__pure__)); > > >extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) > throw () __attribute__ ((__pure__)); > >extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) > throw () __attribute__ ((__pure__)); > > >extern wchar_t *wcstok (wchar_t *__restrict __s, > __const wchar_t *__restrict __delim, > wchar_t **__restrict __ptr) throw (); > > >extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__)); > > > > >extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) > throw () __attribute__ ((__pure__)); > > > > >extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) > throw () __attribute__ ((__pure__)); > > > > > >extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern int wmemcmp (__const wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern wchar_t *wmemcpy (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) throw (); > > > >extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) > throw (); > > >extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); > > > > > >extern wchar_t *wmempcpy (wchar_t *__restrict __s1, > __const wchar_t *__restrict __s2, size_t __n) > throw (); > > > > > > >extern wint_t btowc (int __c) throw (); > > > >extern int wctob (wint_t __c) throw (); > > > >extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__)); > > > >extern size_t mbrtowc (wchar_t *__restrict __pwc, > __const char *__restrict __s, size_t __n, > mbstate_t *__p) throw (); > > >extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, > mbstate_t *__restrict __ps) throw (); > > >extern size_t __mbrlen (__const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); >extern size_t mbrlen (__const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); > > > > > > > > >extern wint_t __btowc_alias (int __c) __asm ("btowc"); >extern __inline __attribute__ ((__gnu_inline__)) wint_t >btowc (int __c) throw () >{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' > ? (wint_t) __c : __btowc_alias (__c)); } > >extern int __wctob_alias (wint_t __c) __asm ("wctob"); >extern __inline __attribute__ ((__gnu_inline__)) int >wctob (wint_t __wc) throw () >{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' > ? (int) __wc : __wctob_alias (__wc)); } > >extern __inline __attribute__ ((__gnu_inline__)) size_t >mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () > >{ return (__ps != __null > ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } > > > > > >extern size_t mbsrtowcs (wchar_t *__restrict __dst, > __const char **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsrtombs (char *__restrict __dst, > __const wchar_t **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern size_t mbsnrtowcs (wchar_t *__restrict __dst, > __const char **__restrict __src, size_t __nmc, > size_t __len, mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsnrtombs (char *__restrict __dst, > __const wchar_t **__restrict __src, > size_t __nwc, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern int wcwidth (wchar_t __c) throw (); > > > >extern int wcswidth (__const wchar_t *__s, size_t __n) throw (); > > > > > > >extern double wcstod (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > > > >extern float wcstof (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); >extern long double wcstold (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > > > > > >extern long int wcstol (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) throw (); > > > >extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > > > > >__extension__ >extern long long int wcstoll (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); > > > > > > >__extension__ >extern long long int wcstoq (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); ># 477 "/usr/include/wchar.h" 3 4 >extern long int wcstol_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base, > __locale_t __loc) throw (); > >extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern long long int wcstoll_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) > throw (); > >extern double wcstod_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern float wcstof_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern long double wcstold_l (__const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > __locale_t __loc) throw (); > > > > > > >extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw (); > > > >extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) > throw (); ># 527 "/usr/include/wchar.h" 3 4 >extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); > > > > > > >extern int fwide (__FILE *__fp, int __mode) throw (); > > > > > > >extern int fwprintf (__FILE *__restrict __stream, > __const wchar_t *__restrict __format, ...) > ; > > > > >extern int wprintf (__const wchar_t *__restrict __format, ...) > ; > >extern int swprintf (wchar_t *__restrict __s, size_t __n, > __const wchar_t *__restrict __format, ...) > throw () ; > > > > > >extern int vfwprintf (__FILE *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwprintf (__const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > >extern int vswprintf (wchar_t *__restrict __s, size_t __n, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; > > > > > > >extern int fwscanf (__FILE *__restrict __stream, > __const wchar_t *__restrict __format, ...) > ; > > > > >extern int wscanf (__const wchar_t *__restrict __format, ...) > ; > >extern int swscanf (__const wchar_t *__restrict __s, > __const wchar_t *__restrict __format, ...) > throw () ; ># 627 "/usr/include/wchar.h" 3 4 > > > > > > > > > >extern int vfwscanf (__FILE *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwscanf (__const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > >extern int vswscanf (__const wchar_t *__restrict __s, > __const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; ># 683 "/usr/include/wchar.h" 3 4 > > > > > > > > > >extern wint_t fgetwc (__FILE *__stream); >extern wint_t getwc (__FILE *__stream); > > > > > >extern wint_t getwchar (void); > > > > > > >extern wint_t fputwc (wchar_t __wc, __FILE *__stream); >extern wint_t putwc (wchar_t __wc, __FILE *__stream); > > > > > >extern wint_t putwchar (wchar_t __wc); > > > > > > > >extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > >extern int fputws (__const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > >extern wint_t ungetwc (wint_t __wc, __FILE *__stream); > ># 748 "/usr/include/wchar.h" 3 4 >extern wint_t getwc_unlocked (__FILE *__stream); >extern wint_t getwchar_unlocked (void); > > > > > > > >extern wint_t fgetwc_unlocked (__FILE *__stream); > > > > > > > >extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); ># 774 "/usr/include/wchar.h" 3 4 >extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); >extern wint_t putwchar_unlocked (wchar_t __wc); ># 784 "/usr/include/wchar.h" 3 4 >extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > > > >extern int fputws_unlocked (__const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > > >extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, > __const wchar_t *__restrict __format, > __const struct tm *__restrict __tp) throw (); > > > > > > > >extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, > __const wchar_t *__restrict __format, > __const struct tm *__restrict __tp, > __locale_t __loc) throw (); ># 838 "/usr/include/wchar.h" 3 4 >} ># 53 "/usr/include/c++/4.3/cwchar" 2 3 ># 70 "/usr/include/c++/4.3/cwchar" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::mbstate_t; > >} ># 144 "/usr/include/c++/4.3/cwchar" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::wint_t; > > using ::btowc; > using ::fgetwc; > using ::fgetws; > using ::fputwc; > using ::fputws; > using ::fwide; > using ::fwprintf; > using ::fwscanf; > using ::getwc; > using ::getwchar; > using ::mbrlen; > using ::mbrtowc; > using ::mbsinit; > using ::mbsrtowcs; > using ::putwc; > using ::putwchar; > using ::swprintf; > using ::swscanf; > using ::ungetwc; > using ::vfwprintf; > > using ::vfwscanf; > > using ::vswprintf; > > using ::vswscanf; > > using ::vwprintf; > > using ::vwscanf; > > using ::wcrtomb; > using ::wcscat; > using ::wcscmp; > using ::wcscoll; > using ::wcscpy; > using ::wcscspn; > using ::wcsftime; > using ::wcslen; > using ::wcsncat; > using ::wcsncmp; > using ::wcsncpy; > using ::wcsrtombs; > using ::wcsspn; > using ::wcstod; > > using ::wcstof; > > using ::wcstok; > using ::wcstol; > using ::wcstoul; > using ::wcsxfrm; > using ::wctob; > using ::wmemcmp; > using ::wmemcpy; > using ::wmemmove; > using ::wmemset; > using ::wprintf; > using ::wscanf; > > using ::wcschr; > > inline wchar_t* > wcschr(wchar_t* __p, wchar_t __c) > { return wcschr(const_cast<const wchar_t*>(__p), __c); } > > using ::wcspbrk; > > inline wchar_t* > wcspbrk(wchar_t* __s1, const wchar_t* __s2) > { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); } > > using ::wcsrchr; > > inline wchar_t* > wcsrchr(wchar_t* __p, wchar_t __c) > { return wcsrchr(const_cast<const wchar_t*>(__p), __c); } > > using ::wcsstr; > > inline wchar_t* > wcsstr(wchar_t* __s1, const wchar_t* __s2) > { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); } > > using ::wmemchr; > > inline wchar_t* > wmemchr(wchar_t* __p, wchar_t __c, size_t __n) > { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); } > >} > > > > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > > > > > > using ::wcstold; ># 262 "/usr/include/c++/4.3/cwchar" 3 > using ::wcstoll; > using ::wcstoull; > > >} > >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::__gnu_cxx::wcstold; > using ::__gnu_cxx::wcstoll; > using ::__gnu_cxx::wcstoull; > >} ># 48 "/usr/include/c++/4.3/bits/postypes.h" 2 3 > > ># 1 "/usr/include/stdint.h" 1 3 4 ># 28 "/usr/include/stdint.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/usr/include/stdint.h" 2 3 4 ># 49 "/usr/include/stdint.h" 3 4 >typedef unsigned char uint8_t; >typedef unsigned short int uint16_t; > >typedef unsigned int uint32_t; > > > >typedef unsigned long int uint64_t; ># 66 "/usr/include/stdint.h" 3 4 >typedef signed char int_least8_t; >typedef short int int_least16_t; >typedef int int_least32_t; > >typedef long int int_least64_t; > > > > > > >typedef unsigned char uint_least8_t; >typedef unsigned short int uint_least16_t; >typedef unsigned int uint_least32_t; > >typedef unsigned long int uint_least64_t; ># 91 "/usr/include/stdint.h" 3 4 >typedef signed char int_fast8_t; > >typedef long int int_fast16_t; >typedef long int int_fast32_t; >typedef long int int_fast64_t; ># 104 "/usr/include/stdint.h" 3 4 >typedef unsigned char uint_fast8_t; > >typedef unsigned long int uint_fast16_t; >typedef unsigned long int uint_fast32_t; >typedef unsigned long int uint_fast64_t; ># 123 "/usr/include/stdint.h" 3 4 >typedef unsigned long int uintptr_t; ># 135 "/usr/include/stdint.h" 3 4 >typedef long int intmax_t; >typedef unsigned long int uintmax_t; ># 51 "/usr/include/c++/4.3/bits/postypes.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 71 "/usr/include/c++/4.3/bits/postypes.h" 3 > typedef int64_t streamoff; > > > > > > typedef ptrdiff_t streamsize; ># 90 "/usr/include/c++/4.3/bits/postypes.h" 3 > template<typename _StateT> > class fpos > { > private: > streamoff _M_off; > _StateT _M_state; > > public: > > > > > fpos() > : _M_off(0), _M_state() { } ># 112 "/usr/include/c++/4.3/bits/postypes.h" 3 > fpos(streamoff __off) > : _M_off(__off), _M_state() { } > > > operator streamoff() const { return _M_off; } > > > void > state(_StateT __st) > { _M_state = __st; } > > > _StateT > state() const > { return _M_state; } > > > > > > fpos& > operator+=(streamoff __off) > { > _M_off += __off; > return *this; > } > > > > > > fpos& > operator-=(streamoff __off) > { > _M_off -= __off; > return *this; > } > > > > > > > > fpos > operator+(streamoff __off) const > { > fpos __pos(*this); > __pos += __off; > return __pos; > } > > > > > > > > fpos > operator-(streamoff __off) const > { > fpos __pos(*this); > __pos -= __off; > return __pos; > } > > > > > > > streamoff > operator-(const fpos& __other) const > { return _M_off - __other._M_off; } > }; > > > > > > > template<typename _StateT> > inline bool > operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) > { return streamoff(__lhs) == streamoff(__rhs); } > > template<typename _StateT> > inline bool > operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) > { return streamoff(__lhs) != streamoff(__rhs); } > > > > > > typedef fpos<mbstate_t> streampos; > > typedef fpos<mbstate_t> wstreampos; > >} ># 48 "/usr/include/c++/4.3/iosfwd" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ios; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_streambuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_istream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_iostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringbuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_istringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_ostringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_filebuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ifstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ofstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_fstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class istreambuf_iterator; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class ostreambuf_iterator; > > > > class ios_base; ># 132 "/usr/include/c++/4.3/iosfwd" 3 > typedef basic_ios<char> ios; > typedef basic_streambuf<char> streambuf; > typedef basic_istream<char> istream; > typedef basic_ostream<char> ostream; > typedef basic_iostream<char> iostream; > typedef basic_stringbuf<char> stringbuf; > typedef basic_istringstream<char> istringstream; > typedef basic_ostringstream<char> ostringstream; > typedef basic_stringstream<char> stringstream; > typedef basic_filebuf<char> filebuf; > typedef basic_ifstream<char> ifstream; > typedef basic_ofstream<char> ofstream; > typedef basic_fstream<char> fstream; > > > typedef basic_ios<wchar_t> wios; > typedef basic_streambuf<wchar_t> wstreambuf; > typedef basic_istream<wchar_t> wistream; > typedef basic_ostream<wchar_t> wostream; > typedef basic_iostream<wchar_t> wiostream; > typedef basic_stringbuf<wchar_t> wstringbuf; > typedef basic_istringstream<wchar_t> wistringstream; > typedef basic_ostringstream<wchar_t> wostringstream; > typedef basic_stringstream<wchar_t> wstringstream; > typedef basic_filebuf<wchar_t> wfilebuf; > typedef basic_ifstream<wchar_t> wifstream; > typedef basic_ofstream<wchar_t> wofstream; > typedef basic_fstream<wchar_t> wfstream; > > > >} ># 45 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/exception" 1 3 ># 40 "/usr/include/c++/4.3/exception" 3 >#pragma GCC visibility push(default) > > > >extern "C++" { > >namespace std >{ ># 56 "/usr/include/c++/4.3/exception" 3 > class exception > { > public: > exception() throw() { } > virtual ~exception() throw(); > > > > virtual const char* what() const throw(); > }; > > > > class bad_exception : public exception > { > public: > bad_exception() throw() { } > > > > virtual ~bad_exception() throw(); > > > virtual const char* what() const throw(); > }; > > > typedef void (*terminate_handler) (); > > > typedef void (*unexpected_handler) (); > > > terminate_handler set_terminate(terminate_handler) throw(); > > > > void terminate() __attribute__ ((__noreturn__)); > > > unexpected_handler set_unexpected(unexpected_handler) throw(); > > > > void unexpected() __attribute__ ((__noreturn__)); ># 112 "/usr/include/c++/4.3/exception" 3 > bool uncaught_exception() throw(); >} > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { ># 127 "/usr/include/c++/4.3/exception" 3 > void __verbose_terminate_handler (); > >} > >} > >#pragma GCC visibility pop ># 46 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/bits/char_traits.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/char_traits.h" 3 > ># 45 "/usr/include/c++/4.3/bits/char_traits.h" 3 > ># 1 "/usr/include/c++/4.3/bits/stl_algobase.h" 1 3 ># 66 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 67 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/functexcept.h" 1 3 ># 42 "/usr/include/c++/4.3/bits/functexcept.h" 3 ># 1 "/usr/include/c++/4.3/exception_defines.h" 1 3 ># 43 "/usr/include/c++/4.3/bits/functexcept.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > void > __throw_bad_exception(void) __attribute__((__noreturn__)); > > > void > __throw_bad_alloc(void) __attribute__((__noreturn__)); > > > void > __throw_bad_cast(void) __attribute__((__noreturn__)); > > void > __throw_bad_typeid(void) __attribute__((__noreturn__)); > > > void > __throw_logic_error(const char*) __attribute__((__noreturn__)); > > void > __throw_domain_error(const char*) __attribute__((__noreturn__)); > > void > __throw_invalid_argument(const char*) __attribute__((__noreturn__)); > > void > __throw_length_error(const char*) __attribute__((__noreturn__)); > > void > __throw_out_of_range(const char*) __attribute__((__noreturn__)); > > void > __throw_runtime_error(const char*) __attribute__((__noreturn__)); > > void > __throw_range_error(const char*) __attribute__((__noreturn__)); > > void > __throw_overflow_error(const char*) __attribute__((__noreturn__)); > > void > __throw_underflow_error(const char*) __attribute__((__noreturn__)); > > > void > __throw_ios_failure(const char*) __attribute__((__noreturn__)); > >} ># 68 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/cpp_type_traits.h" 1 3 ># 41 "/usr/include/c++/4.3/bits/cpp_type_traits.h" 3 > ># 42 "/usr/include/c++/4.3/bits/cpp_type_traits.h" 3 ># 74 "/usr/include/c++/4.3/bits/cpp_type_traits.h" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > template<typename _Iterator, typename _Container> > class __normal_iterator; > >} > >namespace std __attribute__ ((__visibility__ ("default"))) { > > struct __true_type { }; > struct __false_type { }; > > template<bool> > struct __truth_type > { typedef __false_type __type; }; > > template<> > struct __truth_type<true> > { typedef __true_type __type; }; > > > > template<class _Sp, class _Tp> > struct __traitor > { > enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; > typedef typename __truth_type<__value>::__type __type; > }; > > > template<typename, typename> > struct __are_same > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Tp> > struct __are_same<_Tp, _Tp> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<typename _Tp> > struct __is_void > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_void<void> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_integer > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > > > > template<> > struct __is_integer<bool> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<signed char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<> > struct __is_integer<wchar_t> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<> > struct __is_integer<short> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned short> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<int> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned int> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<long long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned long long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_floating > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > > template<> > struct __is_floating<float> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_floating<double> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_floating<long double> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_pointer > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Tp> > struct __is_pointer<_Tp*> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_normal_iterator > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Iterator, typename _Container> > struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, > _Container> > > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_arithmetic > : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_fundamental > : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_scalar > : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_char > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_char<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<> > struct __is_char<wchar_t> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<typename _Tp> > struct __is_byte > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_byte<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_byte<signed char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_byte<unsigned char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_move_iterator > { > enum { __value = 0 }; > typedef __false_type __type; > }; ># 406 "/usr/include/c++/4.3/bits/cpp_type_traits.h" 3 >} ># 69 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/ext/type_traits.h" 1 3 ># 38 "/usr/include/c++/4.3/ext/type_traits.h" 3 > ># 39 "/usr/include/c++/4.3/ext/type_traits.h" 3 > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > > template<bool, typename> > struct __enable_if > { }; > > template<typename _Tp> > struct __enable_if<true, _Tp> > { typedef _Tp __type; }; > > > > template<bool _Cond, typename _Iftrue, typename _Iffalse> > struct __conditional_type > { typedef _Iftrue __type; }; > > template<typename _Iftrue, typename _Iffalse> > struct __conditional_type<false, _Iftrue, _Iffalse> > { typedef _Iffalse __type; }; > > > > template<typename _Tp> > struct __add_unsigned > { > private: > typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; > > public: > typedef typename __if_type::__type __type; > }; > > template<> > struct __add_unsigned<char> > { typedef unsigned char __type; }; > > template<> > struct __add_unsigned<signed char> > { typedef unsigned char __type; }; > > template<> > struct __add_unsigned<short> > { typedef unsigned short __type; }; > > template<> > struct __add_unsigned<int> > { typedef unsigned int __type; }; > > template<> > struct __add_unsigned<long> > { typedef unsigned long __type; }; > > template<> > struct __add_unsigned<long long> > { typedef unsigned long long __type; }; > > > template<> > struct __add_unsigned<bool>; > > template<> > struct __add_unsigned<wchar_t>; > > > > template<typename _Tp> > struct __remove_unsigned > { > private: > typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; > > public: > typedef typename __if_type::__type __type; > }; > > template<> > struct __remove_unsigned<char> > { typedef signed char __type; }; > > template<> > struct __remove_unsigned<unsigned char> > { typedef signed char __type; }; > > template<> > struct __remove_unsigned<unsigned short> > { typedef short __type; }; > > template<> > struct __remove_unsigned<unsigned int> > { typedef int __type; }; > > template<> > struct __remove_unsigned<unsigned long> > { typedef long __type; }; > > template<> > struct __remove_unsigned<unsigned long long> > { typedef long long __type; }; > > > template<> > struct __remove_unsigned<bool>; > > template<> > struct __remove_unsigned<wchar_t>; > > > > template<typename _Type> > inline bool > __is_null_pointer(_Type* __ptr) > { return __ptr == 0; } > > template<typename _Type> > inline bool > __is_null_pointer(_Type) > { return false; } > > > > template<typename _Tp, bool = std::__is_integer<_Tp>::__value> > struct __promote > { typedef double __type; }; > > template<typename _Tp> > struct __promote<_Tp, false> > { typedef _Tp __type; }; > > template<typename _Tp, typename _Up> > struct __promote_2 > { > private: > typedef typename __promote<_Tp>::__type __type1; > typedef typename __promote<_Up>::__type __type2; > > public: > typedef __typeof__(__type1() + __type2()) __type; > }; > > template<typename _Tp, typename _Up, typename _Vp> > struct __promote_3 > { > private: > typedef typename __promote<_Tp>::__type __type1; > typedef typename __promote<_Up>::__type __type2; > typedef typename __promote<_Vp>::__type __type3; > > public: > typedef __typeof__(__type1() + __type2() + __type3()) __type; > }; > > template<typename _Tp, typename _Up, typename _Vp, typename _Wp> > struct __promote_4 > { > private: > typedef typename __promote<_Tp>::__type __type1; > typedef typename __promote<_Up>::__type __type2; > typedef typename __promote<_Vp>::__type __type3; > typedef typename __promote<_Wp>::__type __type4; > > public: > typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type; > }; > >} ># 70 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/ext/numeric_traits.h" 1 3 ># 38 "/usr/include/c++/4.3/ext/numeric_traits.h" 3 > ># 39 "/usr/include/c++/4.3/ext/numeric_traits.h" 3 > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { ># 58 "/usr/include/c++/4.3/ext/numeric_traits.h" 3 > template<typename _Value> > struct __numeric_traits_integer > { > > static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); > static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); > > > > static const bool __is_signed = ((_Value)(-1) < 0); > static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); > }; > > template<typename _Value> > const _Value __numeric_traits_integer<_Value>::__min; > > template<typename _Value> > const _Value __numeric_traits_integer<_Value>::__max; > > template<typename _Value> > const bool __numeric_traits_integer<_Value>::__is_signed; > > template<typename _Value> > const int __numeric_traits_integer<_Value>::__digits; ># 103 "/usr/include/c++/4.3/ext/numeric_traits.h" 3 > template<typename _Value> > struct __numeric_traits_floating > { > > static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 3010 / 10000); > > > static const bool __is_signed = true; > static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18); > static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); > }; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__max_digits10; > > template<typename _Value> > const bool __numeric_traits_floating<_Value>::__is_signed; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__digits10; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__max_exponent10; > > template<typename _Value> > struct __numeric_traits > : public __conditional_type<std::__is_integer<_Value>::__value, > __numeric_traits_integer<_Value>, > __numeric_traits_floating<_Value> >::__type > { }; > >} ># 71 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/stl_pair.h" 1 3 ># 65 "/usr/include/c++/4.3/bits/stl_pair.h" 3 ># 1 "/usr/include/c++/4.3/bits/stl_move.h" 1 3 ># 39 "/usr/include/c++/4.3/bits/stl_move.h" 3 ># 1 "/usr/include/c++/4.3/bits/concept_check.h" 1 3 ># 38 "/usr/include/c++/4.3/bits/concept_check.h" 3 > ># 39 "/usr/include/c++/4.3/bits/concept_check.h" 3 ># 40 "/usr/include/c++/4.3/bits/stl_move.h" 2 3 ># 70 "/usr/include/c++/4.3/bits/stl_move.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > > > > > > > template<typename _Tp> > inline void > swap(_Tp& __a, _Tp& __b) > { > > > > _Tp __tmp = (__a); > __a = (__b); > __b = (__tmp); > } > >} ># 66 "/usr/include/c++/4.3/bits/stl_pair.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > template<class _T1, class _T2> > struct pair > { > typedef _T1 first_type; > typedef _T2 second_type; > > _T1 first; > _T2 second; > > > > > > pair() > : first(), second() { } > > > pair(const _T1& __a, const _T2& __b) > : first(__a), second(__b) { } ># 103 "/usr/include/c++/4.3/bits/stl_pair.h" 3 > template<class _U1, class _U2> > pair(const pair<_U1, _U2>& __p) > : first(__p.first), > second(__p.second) { } ># 146 "/usr/include/c++/4.3/bits/stl_pair.h" 3 > }; > > > template<class _T1, class _T2> > inline bool > operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first == __y.first && __x.second == __y.second; } > > > template<class _T1, class _T2> > inline bool > operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first < __y.first > || (!(__y.first < __x.first) && __x.second < __y.second); } > > > template<class _T1, class _T2> > inline bool > operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x == __y); } > > > template<class _T1, class _T2> > inline bool > operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __y < __x; } > > > template<class _T1, class _T2> > inline bool > operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__y < __x); } > > > template<class _T1, class _T2> > inline bool > operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x < __y); } ># 216 "/usr/include/c++/4.3/bits/stl_pair.h" 3 > template<class _T1, class _T2> > inline pair<_T1, _T2> > make_pair(_T1 __x, _T2 __y) > { return pair<_T1, _T2>(__x, __y); } ># 262 "/usr/include/c++/4.3/bits/stl_pair.h" 3 >} ># 72 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 1 3 ># 68 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 3 > ># 69 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 3 > > ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 72 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 84 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 3 > struct input_iterator_tag {}; > > struct output_iterator_tag {}; > > struct forward_iterator_tag : public input_iterator_tag {}; > > > struct bidirectional_iterator_tag : public forward_iterator_tag {}; > > > struct random_access_iterator_tag : public bidirectional_iterator_tag {}; ># 108 "/usr/include/c++/4.3/bits/stl_iterator_base_types.h" 3 > template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, > typename _Pointer = _Tp*, typename _Reference = _Tp&> > struct iterator > { > > typedef _Category iterator_category; > > typedef _Tp value_type; > > typedef _Distance difference_type; > > typedef _Pointer pointer; > > typedef _Reference reference; > }; > > > > > > > > template<typename _Iterator> > struct iterator_traits > { > typedef typename _Iterator::iterator_category iterator_category; > typedef typename _Iterator::value_type value_type; > typedef typename _Iterator::difference_type difference_type; > typedef typename _Iterator::pointer pointer; > typedef typename _Iterator::reference reference; > }; > > template<typename _Tp> > struct iterator_traits<_Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef _Tp& reference; > }; > > template<typename _Tp> > struct iterator_traits<const _Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef const _Tp* pointer; > typedef const _Tp& reference; > }; > > > > > > template<typename _Iter> > inline typename iterator_traits<_Iter>::iterator_category > __iterator_category(const _Iter&) > { return typename iterator_traits<_Iter>::iterator_category(); } > >} ># 73 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/stl_iterator_base_funcs.h" 1 3 ># 68 "/usr/include/c++/4.3/bits/stl_iterator_base_funcs.h" 3 > ># 69 "/usr/include/c++/4.3/bits/stl_iterator_base_funcs.h" 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > __distance(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > > > > typename iterator_traits<_InputIterator>::difference_type __n = 0; > while (__first != __last) > { > ++__first; > ++__n; > } > return __n; > } > > template<typename _RandomAccessIterator> > inline typename iterator_traits<_RandomAccessIterator>::difference_type > __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, > random_access_iterator_tag) > { > > > > return __last - __first; > } ># 113 "/usr/include/c++/4.3/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > distance(_InputIterator __first, _InputIterator __last) > { > > return std::__distance(__first, __last, > std::__iterator_category(__first)); > } > > template<typename _InputIterator, typename _Distance> > inline void > __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) > { > > > while (__n--) > ++__i; > } > > template<typename _BidirectionalIterator, typename _Distance> > inline void > __advance(_BidirectionalIterator& __i, _Distance __n, > bidirectional_iterator_tag) > { > > > > if (__n > 0) > while (__n--) > ++__i; > else > while (__n++) > --__i; > } > > template<typename _RandomAccessIterator, typename _Distance> > inline void > __advance(_RandomAccessIterator& __i, _Distance __n, > random_access_iterator_tag) > { > > > > __i += __n; > } ># 171 "/usr/include/c++/4.3/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator, typename _Distance> > inline void > advance(_InputIterator& __i, _Distance __n) > { > > typename iterator_traits<_InputIterator>::difference_type __d = __n; > std::__advance(__i, __d, std::__iterator_category(__i)); > } > >} ># 74 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.3/bits/stl_iterator.h" 1 3 ># 73 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { ># 94 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Iterator> > class reverse_iterator > : public iterator<typename iterator_traits<_Iterator>::iterator_category, > typename iterator_traits<_Iterator>::value_type, > typename iterator_traits<_Iterator>::difference_type, > typename iterator_traits<_Iterator>::pointer, > typename iterator_traits<_Iterator>::reference> > { > protected: > _Iterator current; > > public: > typedef _Iterator iterator_type; > typedef typename iterator_traits<_Iterator>::difference_type > difference_type; > typedef typename iterator_traits<_Iterator>::reference reference; > typedef typename iterator_traits<_Iterator>::pointer pointer; > > public: > > > > > > > reverse_iterator() : current() { } > > > > > explicit > reverse_iterator(iterator_type __x) : current(__x) { } > > > > > reverse_iterator(const reverse_iterator& __x) > : current(__x.current) { } > > > > > > template<typename _Iter> > reverse_iterator(const reverse_iterator<_Iter>& __x) > : current(__x.base()) { } > > > > > iterator_type > base() const > { return current; } > > > > > > > reference > operator*() const > { > _Iterator __tmp = current; > return *--__tmp; > } > > > > > > > pointer > operator->() const > { return &(operator*()); } > > > > > > > reverse_iterator& > operator++() > { > --current; > return *this; > } > > > > > > > reverse_iterator > operator++(int) > { > reverse_iterator __tmp = *this; > --current; > return __tmp; > } > > > > > > > reverse_iterator& > operator--() > { > ++current; > return *this; > } > > > > > > > reverse_iterator > operator--(int) > { > reverse_iterator __tmp = *this; > ++current; > return __tmp; > } > > > > > > > reverse_iterator > operator+(difference_type __n) const > { return reverse_iterator(current - __n); } > > > > > > > reverse_iterator& > operator+=(difference_type __n) > { > current -= __n; > return *this; > } > > > > > > > reverse_iterator > operator-(difference_type __n) const > { return reverse_iterator(current + __n); } > > > > > > > reverse_iterator& > operator-=(difference_type __n) > { > current += __n; > return *this; > } > > > > > > > reference > operator[](difference_type __n) const > { return *(*this + __n); } > }; ># 281 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Iterator> > inline bool > operator==(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __x.base() == __y.base(); } > > template<typename _Iterator> > inline bool > operator<(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() < __x.base(); } > > template<typename _Iterator> > inline bool > operator!=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x == __y); } > > template<typename _Iterator> > inline bool > operator>(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y < __x; } > > template<typename _Iterator> > inline bool > operator<=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__y < __x); } > > template<typename _Iterator> > inline bool > operator>=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x < __y); } > > template<typename _Iterator> > inline typename reverse_iterator<_Iterator>::difference_type > operator-(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() - __x.base(); } > > template<typename _Iterator> > inline reverse_iterator<_Iterator> > operator+(typename reverse_iterator<_Iterator>::difference_type __n, > const reverse_iterator<_Iterator>& __x) > { return reverse_iterator<_Iterator>(__x.base() - __n); } > > > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator==(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __x.base() == __y.base(); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator<(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __y.base() < __x.base(); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator!=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__x == __y); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator>(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __y < __x; } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator<=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__y < __x); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator>=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__x < __y); } > > template<typename _IteratorL, typename _IteratorR> > inline typename reverse_iterator<_IteratorL>::difference_type > operator-(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __y.base() - __x.base(); } ># 385 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container> > class back_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit > back_insert_iterator(_Container& __x) : container(&__x) { } ># 411 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > back_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_back(__value); > return *this; > } ># 428 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > back_insert_iterator& > operator*() > { return *this; } > > > back_insert_iterator& > operator++() > { return *this; } > > > back_insert_iterator > operator++(int) > { return *this; } > }; ># 454 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container> > inline back_insert_iterator<_Container> > back_inserter(_Container& __x) > { return back_insert_iterator<_Container>(__x); } ># 469 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container> > class front_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit front_insert_iterator(_Container& __x) : container(&__x) { } ># 494 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > front_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_front(__value); > return *this; > } ># 511 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > front_insert_iterator& > operator*() > { return *this; } > > > front_insert_iterator& > operator++() > { return *this; } > > > front_insert_iterator > operator++(int) > { return *this; } > }; ># 537 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container> > inline front_insert_iterator<_Container> > front_inserter(_Container& __x) > { return front_insert_iterator<_Container>(__x); } ># 556 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container> > class insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > typename _Container::iterator iter; > > public: > > typedef _Container container_type; > > > > > > insert_iterator(_Container& __x, typename _Container::iterator __i) > : container(&__x), iter(__i) {} ># 598 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > insert_iterator& > operator=(typename _Container::const_reference __value) > { > iter = container->insert(iter, __value); > ++iter; > return *this; > } ># 617 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > insert_iterator& > operator*() > { return *this; } > > > insert_iterator& > operator++() > { return *this; } > > > insert_iterator& > operator++(int) > { return *this; } > }; ># 643 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _Container, typename _Iterator> > inline insert_iterator<_Container> > inserter(_Container& __x, _Iterator __i) > { > return insert_iterator<_Container>(__x, > typename _Container::iterator(__i)); > } > >} > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { ># 662 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > using std::iterator_traits; > using std::iterator; > template<typename _Iterator, typename _Container> > class __normal_iterator > { > protected: > _Iterator _M_current; > > public: > typedef _Iterator iterator_type; > typedef typename iterator_traits<_Iterator>::iterator_category > iterator_category; > typedef typename iterator_traits<_Iterator>::value_type value_type; > typedef typename iterator_traits<_Iterator>::difference_type > difference_type; > typedef typename iterator_traits<_Iterator>::reference reference; > typedef typename iterator_traits<_Iterator>::pointer pointer; > > __normal_iterator() : _M_current(_Iterator()) { } > > explicit > __normal_iterator(const _Iterator& __i) : _M_current(__i) { } > > > template<typename _Iter> > __normal_iterator(const __normal_iterator<_Iter, > typename __enable_if< > (std::__are_same<_Iter, typename _Container::pointer>::__value), > _Container>::__type>& __i) > : _M_current(__i.base()) { } > > > reference > operator*() const > { return *_M_current; } > > pointer > operator->() const > { return _M_current; } > > __normal_iterator& > operator++() > { > ++_M_current; > return *this; > } > > __normal_iterator > operator++(int) > { return __normal_iterator(_M_current++); } > > > __normal_iterator& > operator--() > { > --_M_current; > return *this; > } > > __normal_iterator > operator--(int) > { return __normal_iterator(_M_current--); } > > > reference > operator[](const difference_type& __n) const > { return _M_current[__n]; } > > __normal_iterator& > operator+=(const difference_type& __n) > { _M_current += __n; return *this; } > > __normal_iterator > operator+(const difference_type& __n) const > { return __normal_iterator(_M_current + __n); } > > __normal_iterator& > operator-=(const difference_type& __n) > { _M_current -= __n; return *this; } > > __normal_iterator > operator-(const difference_type& __n) const > { return __normal_iterator(_M_current - __n); } > > const _Iterator& > base() const > { return _M_current; } > }; ># 760 "/usr/include/c++/4.3/bits/stl_iterator.h" 3 > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator==(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > > > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline typename __normal_iterator<_IteratorL, _Container>::difference_type > operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() - __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline typename __normal_iterator<_Iterator, _Container>::difference_type > operator-(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() - __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline __normal_iterator<_Iterator, _Container> > operator+(typename __normal_iterator<_Iterator, _Container>::difference_type > __n, const __normal_iterator<_Iterator, _Container>& __i) > { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } > >} ># 75 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 > ># 1 "/usr/include/c++/4.3/debug/debug.h" 1 3 ># 52 "/usr/include/c++/4.3/debug/debug.h" 3 >namespace std >{ > namespace __debug { } >} > > > > >namespace __gnu_debug >{ > using namespace std::__debug; >} ># 77 "/usr/include/c++/4.3/bits/stl_algobase.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > > > template<bool _BoolType> > struct __iter_swap > { > template<typename _ForwardIterator1, typename _ForwardIterator2> > static void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > typedef typename iterator_traits<_ForwardIterator1>::value_type > _ValueType1; > _ValueType1 __tmp = (*__a); > *__a = (*__b); > *__b = (__tmp); > } > }; > > template<> > struct __iter_swap<true> > { > template<typename _ForwardIterator1, typename _ForwardIterator2> > static void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > swap(*__a, *__b); > } > }; ># 119 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > inline void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > typedef typename iterator_traits<_ForwardIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_ForwardIterator2>::value_type > _ValueType2; > > > > > > > > > > > > typedef typename iterator_traits<_ForwardIterator1>::reference > _ReferenceType1; > typedef typename iterator_traits<_ForwardIterator2>::reference > _ReferenceType2; > std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value > && __are_same<_ValueType1&, _ReferenceType1>::__value > && __are_same<_ValueType2&, _ReferenceType2>::__value>:: > iter_swap(__a, __b); > } ># 159 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator2 > swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2) > { > > > > > > ; > > for (; __first1 != __last1; ++__first1, ++__first2) > std::iter_swap(__first1, __first2); > return __first2; > } ># 186 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b) > { > > > > if (__b < __a) > return __b; > return __a; > } ># 208 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b) > { > > > > if (__a < __b) > return __b; > return __a; > } ># 230 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__b, __a)) > return __b; > return __a; > } ># 250 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__a, __b)) > return __b; > return __a; > } > > > > > template<typename _Iterator, > bool _IsNormal = __is_normal_iterator<_Iterator>::__value> > struct __niter_base > { > static _Iterator > __b(_Iterator __it) > { return __it; } > }; > > template<typename _Iterator> > struct __niter_base<_Iterator, true> > { > static typename _Iterator::iterator_type > __b(_Iterator __it) > { return __it.base(); } > }; > > > template<typename _Iterator, > bool _IsMove = __is_move_iterator<_Iterator>::__value> > struct __miter_base > { > static _Iterator > __b(_Iterator __it) > { return __it; } > }; > > template<typename _Iterator> > struct __miter_base<_Iterator, true> > { > static typename _Iterator::iterator_type > __b(_Iterator __it) > { return __it.base(); } > }; > > > > > > > > template<bool, bool, typename> > struct __copy_move > { > template<typename _II, typename _OI> > static _OI > __copy_m(_II __first, _II __last, _OI __result) > { > for (; __first != __last; ++__result, ++__first) > *__result = *__first; > return __result; > } > }; ># 332 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<> > struct __copy_move<false, false, random_access_iterator_tag> > { > template<typename _II, typename _OI> > static _OI > __copy_m(_II __first, _II __last, _OI __result) > { > typedef typename iterator_traits<_II>::difference_type _Distance; > for(_Distance __n = __last - __first; __n > 0; --__n) > { > *__result = *__first; > ++__first; > ++__result; > } > return __result; > } > }; ># 370 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<bool _IsMove> > struct __copy_move<_IsMove, true, random_access_iterator_tag> > { > template<typename _Tp> > static _Tp* > __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > __builtin_memmove(__result, __first, > sizeof(_Tp) * (__last - __first)); > return __result + (__last - __first); > } > }; > > template<bool _IsMove, typename _II, typename _OI> > inline _OI > __copy_move_a(_II __first, _II __last, _OI __result) > { > typedef typename iterator_traits<_II>::value_type _ValueTypeI; > typedef typename iterator_traits<_OI>::value_type _ValueTypeO; > typedef typename iterator_traits<_II>::iterator_category _Category; > const bool __simple = (__is_pod(_ValueTypeI) > && __is_pointer<_II>::__value > && __is_pointer<_OI>::__value > && __are_same<_ValueTypeI, _ValueTypeO>::__value); > > return std::__copy_move<_IsMove, __simple, > _Category>::__copy_m(__first, __last, __result); > } > > > > template<typename _CharT> > struct char_traits; > > template<typename _CharT, typename _Traits> > class istreambuf_iterator; > > template<typename _CharT, typename _Traits> > class ostreambuf_iterator; > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type > __copy_move_a2(_CharT*, _CharT*, > ostreambuf_iterator<_CharT, char_traits<_CharT> >); > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type > __copy_move_a2(const _CharT*, const _CharT*, > ostreambuf_iterator<_CharT, char_traits<_CharT> >); > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > _CharT*>::__type > __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, > istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); > > template<bool _IsMove, typename _II, typename _OI> > inline _OI > __copy_move_a2(_II __first, _II __last, _OI __result) > { > return _OI(std::__copy_move_a<_IsMove> > (std::__niter_base<_II>::__b(__first), > std::__niter_base<_II>::__b(__last), > std::__niter_base<_OI>::__b(__result))); > } ># 454 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _II, typename _OI> > inline _OI > copy(_II __first, _II __last, _OI __result) > { > > > > > ; > > return (std::__copy_move_a2<__is_move_iterator<_II>::__value> > (std::__miter_base<_II>::__b(__first), > std::__miter_base<_II>::__b(__last), __result)); > } ># 506 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<bool, bool, typename> > struct __copy_move_backward > { > template<typename _BI1, typename _BI2> > static _BI2 > __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) > { > while (__first != __last) > *--__result = *--__last; > return __result; > } > }; ># 534 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<> > struct __copy_move_backward<false, false, random_access_iterator_tag> > { > template<typename _BI1, typename _BI2> > static _BI2 > __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) > { > typename iterator_traits<_BI1>::difference_type __n; > for (__n = __last - __first; __n > 0; --__n) > *--__result = *--__last; > return __result; > } > }; ># 564 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<bool _IsMove> > struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> > { > template<typename _Tp> > static _Tp* > __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > const ptrdiff_t _Num = __last - __first; > __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); > return __result - _Num; > } > }; > > template<bool _IsMove, typename _BI1, typename _BI2> > inline _BI2 > __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) > { > typedef typename iterator_traits<_BI1>::value_type _ValueType1; > typedef typename iterator_traits<_BI2>::value_type _ValueType2; > typedef typename iterator_traits<_BI1>::iterator_category _Category; > const bool __simple = (__is_pod(_ValueType1) > && __is_pointer<_BI1>::__value > && __is_pointer<_BI2>::__value > && __are_same<_ValueType1, _ValueType2>::__value); > > return std::__copy_move_backward<_IsMove, __simple, > _Category>::__copy_move_b(__first, > __last, > __result); > } > > template<bool _IsMove, typename _BI1, typename _BI2> > inline _BI2 > __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) > { > return _BI2(std::__copy_move_backward_a<_IsMove> > (std::__niter_base<_BI1>::__b(__first), > std::__niter_base<_BI1>::__b(__last), > std::__niter_base<_BI2>::__b(__result))); > } ># 622 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _BI1, typename _BI2> > inline _BI2 > copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) > { > > > > > > > ; > > return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> > (std::__miter_base<_BI1>::__b(__first), > std::__miter_base<_BI1>::__b(__last), __result)); > } ># 679 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline typename > __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type > __fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > for (; __first != __last; ++__first) > *__first = __value; > } > > template<typename _ForwardIterator, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type > __fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > const _Tp __tmp = __value; > for (; __first != __last; ++__first) > *__first = __tmp; > } > > > template<typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type > __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) > { > const _Tp __tmp = __c; > __builtin_memset(__first, static_cast<unsigned char>(__tmp), > __last - __first); > } ># 722 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline void > fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) > { > > > > ; > > std::__fill_a(std::__niter_base<_ForwardIterator>::__b(__first), > std::__niter_base<_ForwardIterator>::__b(__last), __value); > } > > template<typename _OutputIterator, typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type > __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) > { > for (; __n > 0; --__n, ++__first) > *__first = __value; > return __first; > } > > template<typename _OutputIterator, typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type > __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) > { > const _Tp __tmp = __value; > for (; __n > 0; --__n, ++__first) > *__first = __tmp; > return __first; > } > > template<typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type > __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) > { > std::__fill_a(__first, __first + __n, __c); > return __first + __n; > } ># 776 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _OI, typename _Size, typename _Tp> > inline _OI > fill_n(_OI __first, _Size __n, const _Tp& __value) > { > > > > return _OI(std::__fill_n_a(std::__niter_base<_OI>::__b(__first), > __n, __value)); > } > > template<bool _BoolType> > struct __equal > { > template<typename _II1, typename _II2> > static bool > equal(_II1 __first1, _II1 __last1, _II2 __first2) > { > for (; __first1 != __last1; ++__first1, ++__first2) > if (!(*__first1 == *__first2)) > return false; > return true; > } > }; > > template<> > struct __equal<true> > { > template<typename _Tp> > static bool > equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) > { > return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) > * (__last1 - __first1)); > } > }; > > template<typename _II1, typename _II2> > inline bool > __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) > { > typedef typename iterator_traits<_II1>::value_type _ValueType1; > typedef typename iterator_traits<_II2>::value_type _ValueType2; > const bool __simple = (__is_integer<_ValueType1>::__value > && __is_pointer<_II1>::__value > && __is_pointer<_II2>::__value > && __are_same<_ValueType1, _ValueType2>::__value); > > return std::__equal<__simple>::equal(__first1, __last1, __first2); > } > > > template<typename, typename> > struct __lc_rai > { > template<typename _II1, typename _II2> > static _II1 > __newlast1(_II1, _II1 __last1, _II2, _II2) > { return __last1; } > > template<typename _II> > static bool > __cnd2(_II __first, _II __last) > { return __first != __last; } > }; > > template<> > struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag> > { > template<typename _RAI1, typename _RAI2> > static _RAI1 > __newlast1(_RAI1 __first1, _RAI1 __last1, > _RAI2 __first2, _RAI2 __last2) > { > const typename iterator_traits<_RAI1>::difference_type > __diff1 = __last1 - __first1; > const typename iterator_traits<_RAI2>::difference_type > __diff2 = __last2 - __first2; > return __diff2 < __diff1 ? __first1 + __diff2 : __last1; > } > > template<typename _RAI> > static bool > __cnd2(_RAI, _RAI) > { return true; } > }; > > template<bool _BoolType> > struct __lexicographical_compare > { > template<typename _II1, typename _II2> > static bool __lc(_II1, _II1, _II2, _II2); > }; > > template<bool _BoolType> > template<typename _II1, typename _II2> > bool > __lexicographical_compare<_BoolType>:: > __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) > { > typedef typename iterator_traits<_II1>::iterator_category _Category1; > typedef typename iterator_traits<_II2>::iterator_category _Category2; > typedef std::__lc_rai<_Category1, _Category2> __rai_type; > > __last1 = __rai_type::__newlast1(__first1, __last1, > __first2, __last2); > for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); > ++__first1, ++__first2) > { > if (*__first1 < *__first2) > return true; > if (*__first2 < *__first1) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } > > template<> > struct __lexicographical_compare<true> > { > template<typename _Tp, typename _Up> > static bool > __lc(const _Tp* __first1, const _Tp* __last1, > const _Up* __first2, const _Up* __last2) > { > const size_t __len1 = __last1 - __first1; > const size_t __len2 = __last2 - __first2; > const int __result = __builtin_memcmp(__first1, __first2, > std::min(__len1, __len2)); > return __result != 0 ? __result < 0 : __len1 < __len2; > } > }; > > template<typename _II1, typename _II2> > inline bool > __lexicographical_compare_aux(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2) > { > typedef typename iterator_traits<_II1>::value_type _ValueType1; > typedef typename iterator_traits<_II2>::value_type _ValueType2; > const bool __simple = > (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value > && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed > && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed > && __is_pointer<_II1>::__value > && __is_pointer<_II2>::__value); > > return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, > __first2, __last2); > } > >} > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 942 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2> > inline bool > equal(_II1 __first1, _II1 __last1, _II2 __first2) > { > > > > > > > ; > > return std::__equal_aux(std::__niter_base<_II1>::__b(__first1), > std::__niter_base<_II1>::__b(__last1), > std::__niter_base<_II2>::__b(__first2)); > } ># 973 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> > inline bool > equal(_IIter1 __first1, _IIter1 __last1, > _IIter2 __first2, _BinaryPredicate __binary_pred) > { > > > > ; > > for (; __first1 != __last1; ++__first1, ++__first2) > if (!bool(__binary_pred(*__first1, *__first2))) > return false; > return true; > } ># 1003 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2> > inline bool > lexicographical_compare(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2) > { > > typedef typename iterator_traits<_II1>::value_type _ValueType1; > typedef typename iterator_traits<_II2>::value_type _ValueType2; > > > > > ; > ; > > return std::__lexicographical_compare_aux > (std::__niter_base<_II1>::__b(__first1), > std::__niter_base<_II1>::__b(__last1), > std::__niter_base<_II2>::__b(__first2), > std::__niter_base<_II2>::__b(__last2)); > } ># 1037 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2, typename _Compare> > bool > lexicographical_compare(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2, _Compare __comp) > { > typedef typename iterator_traits<_II1>::iterator_category _Category1; > typedef typename iterator_traits<_II2>::iterator_category _Category2; > typedef std::__lc_rai<_Category1, _Category2> __rai_type; > > > > > ; > ; > > __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); > for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); > ++__first1, ++__first2) > { > if (__comp(*__first1, *__first2)) > return true; > if (__comp(*__first2, *__first1)) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } ># 1076 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2) > { > > > > > > > ; > > while (__first1 != __last1 && *__first1 == *__first2) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } ># 1112 "/usr/include/c++/4.3/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _BinaryPredicate> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _BinaryPredicate __binary_pred) > { > > > > ; > > while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2))) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } > >} ># 47 "/usr/include/c++/4.3/bits/char_traits.h" 2 3 > ># 1 "/usr/include/c++/4.3/cstdio" 1 3 ># 46 "/usr/include/c++/4.3/cstdio" 3 > ># 47 "/usr/include/c++/4.3/cstdio" 3 > > ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 50 "/usr/include/c++/4.3/cstdio" 2 3 ># 1 "/usr/include/stdio.h" 1 3 4 ># 51 "/usr/include/c++/4.3/cstdio" 2 3 ># 98 "/usr/include/c++/4.3/cstdio" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::FILE; > using ::fpos_t; > > using ::clearerr; > using ::fclose; > using ::feof; > using ::ferror; > using ::fflush; > using ::fgetc; > using ::fgetpos; > using ::fgets; > using ::fopen; > using ::fprintf; > using ::fputc; > using ::fputs; > using ::fread; > using ::freopen; > using ::fscanf; > using ::fseek; > using ::fsetpos; > using ::ftell; > using ::fwrite; > using ::getc; > using ::getchar; > using ::gets; > using ::perror; > using ::printf; > using ::putc; > using ::putchar; > using ::puts; > using ::remove; > using ::rename; > using ::rewind; > using ::scanf; > using ::setbuf; > using ::setvbuf; > using ::sprintf; > using ::sscanf; > using ::tmpfile; > using ::tmpnam; > using ::ungetc; > using ::vfprintf; > using ::vprintf; > using ::vsprintf; > >} ># 155 "/usr/include/c++/4.3/cstdio" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { ># 170 "/usr/include/c++/4.3/cstdio" 3 > using ::snprintf; > using ::vfscanf; > using ::vscanf; > using ::vsnprintf; > using ::vsscanf; > > >} > >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::__gnu_cxx::snprintf; > using ::__gnu_cxx::vfscanf; > using ::__gnu_cxx::vscanf; > using ::__gnu_cxx::vsnprintf; > using ::__gnu_cxx::vsscanf; > >} ># 49 "/usr/include/c++/4.3/bits/char_traits.h" 2 3 ># 1 "/usr/include/c++/4.3/cwchar" 1 3 ># 46 "/usr/include/c++/4.3/cwchar" 3 > ># 47 "/usr/include/c++/4.3/cwchar" 3 > > ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 50 "/usr/include/c++/4.3/cwchar" 2 3 ># 50 "/usr/include/c++/4.3/bits/char_traits.h" 2 3 > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { ># 63 "/usr/include/c++/4.3/bits/char_traits.h" 3 > template<typename _CharT> > struct _Char_types > { > typedef unsigned long int_type; > typedef std::streampos pos_type; > typedef std::streamoff off_type; > typedef std::mbstate_t state_type; > }; ># 88 "/usr/include/c++/4.3/bits/char_traits.h" 3 > template<typename _CharT> > struct char_traits > { > typedef _CharT char_type; > typedef typename _Char_types<_CharT>::int_type int_type; > typedef typename _Char_types<_CharT>::pos_type pos_type; > typedef typename _Char_types<_CharT>::off_type off_type; > typedef typename _Char_types<_CharT>::state_type state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, std::size_t __n); > > static std::size_t > length(const char_type* __s); > > static const char_type* > find(const char_type* __s, std::size_t __n, const char_type& __a); > > static char_type* > move(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > copy(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > assign(char_type* __s, std::size_t __n, char_type __a); > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() > { return static_cast<int_type>((-1)); } > > static int_type > not_eof(const int_type& __c) > { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } > }; > > template<typename _CharT> > int > char_traits<_CharT>:: > compare(const char_type* __s1, const char_type* __s2, std::size_t __n) > { > for (std::size_t __i = 0; __i < __n; ++__i) > if (lt(__s1[__i], __s2[__i])) > return -1; > else if (lt(__s2[__i], __s1[__i])) > return 1; > return 0; > } > > template<typename _CharT> > std::size_t > char_traits<_CharT>:: > length(const char_type* __p) > { > std::size_t __i = 0; > while (!eq(__p[__i], char_type())) > ++__i; > return __i; > } > > template<typename _CharT> > const typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > find(const char_type* __s, std::size_t __n, const char_type& __a) > { > for (std::size_t __i = 0; __i < __n; ++__i) > if (eq(__s[__i], __a)) > return __s + __i; > return 0; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > move(char_type* __s1, const char_type* __s2, std::size_t __n) > { > return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, > __n * sizeof(char_type))); > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > copy(char_type* __s1, const char_type* __s2, std::size_t __n) > { > > std::copy(__s2, __s2 + __n, __s1); > return __s1; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > assign(char_type* __s, std::size_t __n, char_type __a) > { > > std::fill_n(__s, __n, __a); > return __s; > } > >} > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 229 "/usr/include/c++/4.3/bits/char_traits.h" 3 > template<class _CharT> > struct char_traits : public __gnu_cxx::char_traits<_CharT> > { }; > > > > template<> > struct char_traits<char> > { > typedef char char_type; > typedef int int_type; > typedef streampos pos_type; > typedef streamoff off_type; > typedef mbstate_t state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, size_t __n) > { return __builtin_memcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return __builtin_strlen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); } > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(static_cast<unsigned char>(__c)); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() { return static_cast<int_type>((-1)); } > > static int_type > not_eof(const int_type& __c) > { return (__c == eof()) ? 0 : __c; } > }; > > > > > template<> > struct char_traits<wchar_t> > { > typedef wchar_t char_type; > typedef wint_t int_type; > typedef streamoff off_type; > typedef wstreampos pos_type; > typedef mbstate_t state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, size_t __n) > { return wmemcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return wcslen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return wmemchr(__s, __a, __n); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemmove(__s1, __s2, __n); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemcpy(__s1, __s2, __n); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return wmemset(__s, __a, __n); } > > static char_type > to_char_type(const int_type& __c) { return char_type(__c); } > > static int_type > to_int_type(const char_type& __c) { return int_type(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() { return static_cast<int_type>((0xffffffffu)); } > > static int_type > not_eof(const int_type& __c) > { return eq_int_type(__c, eof()) ? 0 : __c; } > }; > > >} ># 47 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/bits/localefwd.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/localefwd.h" 3 > ># 45 "/usr/include/c++/4.3/bits/localefwd.h" 3 > > ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 1 3 ># 45 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 3 > ># 46 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 3 > ># 1 "/usr/include/c++/4.3/clocale" 1 3 ># 45 "/usr/include/c++/4.3/clocale" 3 > ># 46 "/usr/include/c++/4.3/clocale" 3 > > ># 1 "/usr/include/locale.h" 1 3 4 ># 29 "/usr/include/locale.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 30 "/usr/include/locale.h" 2 3 4 ># 1 "/usr/include/bits/locale.h" 1 3 4 ># 27 "/usr/include/bits/locale.h" 3 4 >enum >{ > __LC_CTYPE = 0, > __LC_NUMERIC = 1, > __LC_TIME = 2, > __LC_COLLATE = 3, > __LC_MONETARY = 4, > __LC_MESSAGES = 5, > __LC_ALL = 6, > __LC_PAPER = 7, > __LC_NAME = 8, > __LC_ADDRESS = 9, > __LC_TELEPHONE = 10, > __LC_MEASUREMENT = 11, > __LC_IDENTIFICATION = 12 >}; ># 31 "/usr/include/locale.h" 2 3 4 > >extern "C" { ># 51 "/usr/include/locale.h" 3 4 > > > >struct lconv >{ > > > char *decimal_point; > char *thousands_sep; > > > > > > char *grouping; > > > > > > char *int_curr_symbol; > char *currency_symbol; > char *mon_decimal_point; > char *mon_thousands_sep; > char *mon_grouping; > char *positive_sign; > char *negative_sign; > char int_frac_digits; > char frac_digits; > > char p_cs_precedes; > > char p_sep_by_space; > > char n_cs_precedes; > > char n_sep_by_space; > > > > > > > char p_sign_posn; > char n_sign_posn; > > > char int_p_cs_precedes; > > char int_p_sep_by_space; > > char int_n_cs_precedes; > > char int_n_sep_by_space; > > > > > > > char int_p_sign_posn; > char int_n_sign_posn; ># 121 "/usr/include/locale.h" 3 4 >}; > > > >extern char *setlocale (int __category, __const char *__locale) throw (); > > >extern struct lconv *localeconv (void) throw (); > > ># 148 "/usr/include/locale.h" 3 4 >typedef __locale_t locale_t; > > > > > >extern __locale_t newlocale (int __category_mask, __const char *__locale, > __locale_t __base) throw (); ># 189 "/usr/include/locale.h" 3 4 >extern __locale_t duplocale (__locale_t __dataset) throw (); > > > >extern void freelocale (__locale_t __dataset) throw (); > > > > > > >extern __locale_t uselocale (__locale_t __dataset) throw (); > > > > > > > >} ># 49 "/usr/include/c++/4.3/clocale" 2 3 ># 57 "/usr/include/c++/4.3/clocale" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::lconv; > using ::setlocale; > using ::localeconv; > >} ># 48 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 2 3 ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 49 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 2 3 > > > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > extern "C" __typeof(uselocale) __uselocale; > >} > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > typedef __locale_t __c_locale; > > > > > > inline int > __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), > char* __out, > const int __size __attribute__ ((__unused__)), > const char* __fmt, ...) > { > > __c_locale __old = __gnu_cxx::__uselocale(__cloc); ># 90 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++locale.h" 3 > __builtin_va_list __args; > __builtin_va_start(__args, __fmt); > > > const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); > > > > > __builtin_va_end(__args); > > > __gnu_cxx::__uselocale(__old); > > > > > > > > return __ret; > } > >} ># 48 "/usr/include/c++/4.3/bits/localefwd.h" 2 3 > ># 1 "/usr/include/c++/4.3/cctype" 1 3 ># 46 "/usr/include/c++/4.3/cctype" 3 > ># 47 "/usr/include/c++/4.3/cctype" 3 > > ># 1 "/usr/include/ctype.h" 1 3 4 ># 50 "/usr/include/c++/4.3/cctype" 2 3 ># 69 "/usr/include/c++/4.3/cctype" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::isalnum; > using ::isalpha; > using ::iscntrl; > using ::isdigit; > using ::isgraph; > using ::islower; > using ::isprint; > using ::ispunct; > using ::isspace; > using ::isupper; > using ::isxdigit; > using ::tolower; > using ::toupper; > >} ># 50 "/usr/include/c++/4.3/bits/localefwd.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > class locale; > > template<typename _Facet> > bool > has_facet(const locale&) throw(); > > template<typename _Facet> > const _Facet& > use_facet(const locale&); > > > template<typename _CharT> > bool > isspace(_CharT, const locale&); > > template<typename _CharT> > bool > isprint(_CharT, const locale&); > > template<typename _CharT> > bool > iscntrl(_CharT, const locale&); > > template<typename _CharT> > bool > isupper(_CharT, const locale&); > > template<typename _CharT> > bool > islower(_CharT, const locale&); > > template<typename _CharT> > bool > isalpha(_CharT, const locale&); > > template<typename _CharT> > bool > isdigit(_CharT, const locale&); > > template<typename _CharT> > bool > ispunct(_CharT, const locale&); > > template<typename _CharT> > bool > isxdigit(_CharT, const locale&); > > template<typename _CharT> > bool > isalnum(_CharT, const locale&); > > template<typename _CharT> > bool > isgraph(_CharT, const locale&); > > template<typename _CharT> > _CharT > toupper(_CharT, const locale&); > > template<typename _CharT> > _CharT > tolower(_CharT, const locale&); > > > class ctype_base; > template<typename _CharT> > class ctype; > template<> class ctype<char>; > > template<> class ctype<wchar_t>; > > template<typename _CharT> > class ctype_byname; > > > class codecvt_base; > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt; > template<> class codecvt<char, char, mbstate_t>; > > template<> class codecvt<wchar_t, char, mbstate_t>; > > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt_byname; > > > > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class num_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class num_put; > > template<typename _CharT> class numpunct; > template<typename _CharT> class numpunct_byname; > > > template<typename _CharT> > class collate; > template<typename _CharT> class > collate_byname; > > > class time_base; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get_byname; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put_byname; > > > class money_base; > > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class money_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class money_put; > > template<typename _CharT, bool _Intl = false> > class moneypunct; > template<typename _CharT, bool _Intl = false> > class moneypunct_byname; > > > class messages_base; > template<typename _CharT> > class messages; > template<typename _CharT> > class messages_byname; > >} ># 48 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/bits/ios_base.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/ios_base.h" 3 > ># 45 "/usr/include/c++/4.3/bits/ios_base.h" 3 > ># 1 "/usr/include/c++/4.3/ext/atomicity.h" 1 3 ># 39 "/usr/include/c++/4.3/ext/atomicity.h" 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr.h" 1 3 ># 33 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr.h" 3 >#pragma GCC visibility push(default) ># 132 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr.h" 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 1 3 ># 43 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 3 ># 1 "/usr/include/pthread.h" 1 3 4 ># 25 "/usr/include/pthread.h" 3 4 ># 1 "/usr/include/sched.h" 1 3 4 ># 29 "/usr/include/sched.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 30 "/usr/include/sched.h" 2 3 4 > > ># 1 "/usr/include/time.h" 1 3 4 ># 33 "/usr/include/sched.h" 2 3 4 > > ># 1 "/usr/include/bits/sched.h" 1 3 4 ># 71 "/usr/include/bits/sched.h" 3 4 >struct sched_param > { > int __sched_priority; > }; > >extern "C" { > > > >extern int clone (int (*__fn) (void *__arg), void *__child_stack, > int __flags, void *__arg, ...) throw (); > > >extern int unshare (int __flags) throw (); > > >extern int sched_getcpu (void) throw (); > > >} > > > > > > > >struct __sched_param > { > int __sched_priority; > }; ># 113 "/usr/include/bits/sched.h" 3 4 >typedef unsigned long int __cpu_mask; > > > > > > >typedef struct >{ > __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; >} cpu_set_t; ># 191 "/usr/include/bits/sched.h" 3 4 >extern "C" { > >extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) > throw (); >extern cpu_set_t *__sched_cpualloc (size_t __count) throw () ; >extern void __sched_cpufree (cpu_set_t *__set) throw (); > >} ># 36 "/usr/include/sched.h" 2 3 4 > > > > >extern "C" { > > >extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) > throw (); > > >extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); > > >extern int sched_setscheduler (__pid_t __pid, int __policy, > __const struct sched_param *__param) throw (); > > >extern int sched_getscheduler (__pid_t __pid) throw (); > > >extern int sched_yield (void) throw (); > > >extern int sched_get_priority_max (int __algorithm) throw (); > > >extern int sched_get_priority_min (int __algorithm) throw (); > > >extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); ># 110 "/usr/include/sched.h" 3 4 >extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, > __const cpu_set_t *__cpuset) throw (); > > >extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, > cpu_set_t *__cpuset) throw (); > > >} ># 26 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 31 "/usr/include/time.h" 3 4 >extern "C" { > > > > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 40 "/usr/include/time.h" 2 3 4 > > > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 44 "/usr/include/time.h" 2 3 4 ># 132 "/usr/include/time.h" 3 4 > > >struct tm >{ > int tm_sec; > int tm_min; > int tm_hour; > int tm_mday; > int tm_mon; > int tm_year; > int tm_wday; > int tm_yday; > int tm_isdst; > > > long int tm_gmtoff; > __const char *tm_zone; > > > > >}; > > > > > > > > >struct itimerspec > { > struct timespec it_interval; > struct timespec it_value; > }; > > >struct sigevent; ># 181 "/usr/include/time.h" 3 4 > > > >extern clock_t clock (void) throw (); > > >extern time_t time (time_t *__timer) throw (); > > >extern double difftime (time_t __time1, time_t __time0) > throw () __attribute__ ((__const__)); > > >extern time_t mktime (struct tm *__tp) throw (); > > > > > >extern size_t strftime (char *__restrict __s, size_t __maxsize, > __const char *__restrict __format, > __const struct tm *__restrict __tp) throw (); > > > > > >extern char *strptime (__const char *__restrict __s, > __const char *__restrict __fmt, struct tm *__tp) > throw (); > > > > > > > >extern size_t strftime_l (char *__restrict __s, size_t __maxsize, > __const char *__restrict __format, > __const struct tm *__restrict __tp, > __locale_t __loc) throw (); > >extern char *strptime_l (__const char *__restrict __s, > __const char *__restrict __fmt, struct tm *__tp, > __locale_t __loc) throw (); > > > > > > >extern struct tm *gmtime (__const time_t *__timer) throw (); > > > >extern struct tm *localtime (__const time_t *__timer) throw (); > > > > > >extern struct tm *gmtime_r (__const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > >extern struct tm *localtime_r (__const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > > > >extern char *asctime (__const struct tm *__tp) throw (); > > >extern char *ctime (__const time_t *__timer) throw (); > > > > > > > >extern char *asctime_r (__const struct tm *__restrict __tp, > char *__restrict __buf) throw (); > > >extern char *ctime_r (__const time_t *__restrict __timer, > char *__restrict __buf) throw (); > > > > >extern char *__tzname[2]; >extern int __daylight; >extern long int __timezone; > > > > >extern char *tzname[2]; > > > >extern void tzset (void) throw (); > > > >extern int daylight; >extern long int timezone; > > > > > >extern int stime (__const time_t *__when) throw (); ># 312 "/usr/include/time.h" 3 4 >extern time_t timegm (struct tm *__tp) throw (); > > >extern time_t timelocal (struct tm *__tp) throw (); > > >extern int dysize (int __year) throw () __attribute__ ((__const__)); ># 327 "/usr/include/time.h" 3 4 >extern int nanosleep (__const struct timespec *__requested_time, > struct timespec *__remaining); > > > >extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); > > >extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); > > >extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) > throw (); > > > > > > >extern int clock_nanosleep (clockid_t __clock_id, int __flags, > __const struct timespec *__req, > struct timespec *__rem); > > >extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); > > > > >extern int timer_create (clockid_t __clock_id, > struct sigevent *__restrict __evp, > timer_t *__restrict __timerid) throw (); > > >extern int timer_delete (timer_t __timerid) throw (); > > >extern int timer_settime (timer_t __timerid, int __flags, > __const struct itimerspec *__restrict __value, > struct itimerspec *__restrict __ovalue) throw (); > > >extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) > throw (); > > >extern int timer_getoverrun (timer_t __timerid) throw (); ># 389 "/usr/include/time.h" 3 4 >extern int getdate_err; ># 398 "/usr/include/time.h" 3 4 >extern struct tm *getdate (__const char *__string); ># 412 "/usr/include/time.h" 3 4 >extern int getdate_r (__const char *__restrict __string, > struct tm *__restrict __resbufp); > > >} ># 27 "/usr/include/pthread.h" 2 3 4 > > ># 1 "/usr/include/signal.h" 1 3 4 ># 31 "/usr/include/signal.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 34 "/usr/include/signal.h" 2 3 4 ># 402 "/usr/include/signal.h" 3 4 >} ># 30 "/usr/include/pthread.h" 2 3 4 > ># 1 "/usr/include/bits/setjmp.h" 1 3 4 ># 27 "/usr/include/bits/setjmp.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 28 "/usr/include/bits/setjmp.h" 2 3 4 > > > > >typedef long int __jmp_buf[8]; ># 32 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 33 "/usr/include/pthread.h" 2 3 4 > > > >enum >{ > PTHREAD_CREATE_JOINABLE, > > PTHREAD_CREATE_DETACHED > >}; > > > >enum >{ > PTHREAD_MUTEX_TIMED_NP, > PTHREAD_MUTEX_RECURSIVE_NP, > PTHREAD_MUTEX_ERRORCHECK_NP, > PTHREAD_MUTEX_ADAPTIVE_NP > > , > PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, > PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, > PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, > PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL > > > > , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP > >}; > > > > >enum >{ > PTHREAD_MUTEX_STALLED_NP, > PTHREAD_MUTEX_ROBUST_NP >}; > > > > > >enum >{ > PTHREAD_PRIO_NONE, > PTHREAD_PRIO_INHERIT, > PTHREAD_PRIO_PROTECT >}; ># 115 "/usr/include/pthread.h" 3 4 >enum >{ > PTHREAD_RWLOCK_PREFER_READER_NP, > PTHREAD_RWLOCK_PREFER_WRITER_NP, > PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, > PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP >}; ># 147 "/usr/include/pthread.h" 3 4 >enum >{ > PTHREAD_INHERIT_SCHED, > > PTHREAD_EXPLICIT_SCHED > >}; > > > >enum >{ > PTHREAD_SCOPE_SYSTEM, > > PTHREAD_SCOPE_PROCESS > >}; > > > >enum >{ > PTHREAD_PROCESS_PRIVATE, > > PTHREAD_PROCESS_SHARED > >}; ># 182 "/usr/include/pthread.h" 3 4 >struct _pthread_cleanup_buffer >{ > void (*__routine) (void *); > void *__arg; > int __canceltype; > struct _pthread_cleanup_buffer *__prev; >}; > > >enum >{ > PTHREAD_CANCEL_ENABLE, > > PTHREAD_CANCEL_DISABLE > >}; >enum >{ > PTHREAD_CANCEL_DEFERRED, > > PTHREAD_CANCEL_ASYNCHRONOUS > >}; ># 220 "/usr/include/pthread.h" 3 4 >extern "C" { > > > > >extern int pthread_create (pthread_t *__restrict __newthread, > __const pthread_attr_t *__restrict __attr, > void *(*__start_routine) (void *), > void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); > > > > > >extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); > > > > > > > >extern int pthread_join (pthread_t __th, void **__thread_return); > > > > >extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); > > > > > > > >extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, > __const struct timespec *__abstime); > > > > > > >extern int pthread_detach (pthread_t __th) throw (); > > > >extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); > > >extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw (); > > > > > > > >extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_destroy (pthread_attr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, > int *__detachstate) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, > int __detachstate) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, > size_t *__guardsize) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setguardsize (pthread_attr_t *__attr, > size_t __guardsize) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict > __attr, > struct sched_param *__restrict __param) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, > __const struct sched_param *__restrict > __param) throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict > __attr, int *__restrict __policy) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict > __attr, int *__restrict __inherit) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, > int __inherit) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr, > int *__restrict __scope) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict > __attr, void **__restrict __stackaddr) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); > > > > > >extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, > void *__stackaddr) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); > > >extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict > __attr, size_t *__restrict __stacksize) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int pthread_attr_setstacksize (pthread_attr_t *__attr, > size_t __stacksize) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr, > void **__restrict __stackaddr, > size_t *__restrict __stacksize) > throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > > > >extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, > size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, > size_t __cpusetsize, > __const cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > >extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr, > size_t __cpusetsize, > cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > > > >extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) > throw () __attribute__ ((__nonnull__ (2))); > > > > > > > >extern int pthread_setschedparam (pthread_t __target_thread, int __policy, > __const struct sched_param *__param) > throw () __attribute__ ((__nonnull__ (3))); > > >extern int pthread_getschedparam (pthread_t __target_thread, > int *__restrict __policy, > struct sched_param *__restrict __param) > throw () __attribute__ ((__nonnull__ (2, 3))); > > >extern int pthread_setschedprio (pthread_t __target_thread, int __prio) > throw (); > > > > >extern int pthread_getconcurrency (void) throw (); > > >extern int pthread_setconcurrency (int __level) throw (); > > > > > > > >extern int pthread_yield (void) throw (); > > > > >extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, > __const cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (3))); > > >extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, > cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (3))); ># 466 "/usr/include/pthread.h" 3 4 >extern int pthread_once (pthread_once_t *__once_control, > void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); ># 478 "/usr/include/pthread.h" 3 4 >extern int pthread_setcancelstate (int __state, int *__oldstate); > > > >extern int pthread_setcanceltype (int __type, int *__oldtype); > > >extern int pthread_cancel (pthread_t __th); > > > > >extern void pthread_testcancel (void); > > > > >typedef struct >{ > struct > { > __jmp_buf __cancel_jmp_buf; > int __mask_was_saved; > } __cancel_jmp_buf[1]; > void *__pad[4]; >} __pthread_unwind_buf_t __attribute__ ((__aligned__)); ># 512 "/usr/include/pthread.h" 3 4 >struct __pthread_cleanup_frame >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; >}; > > > > >class __pthread_cleanup_class >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; > > public: > __pthread_cleanup_class (void (*__fct) (void *), void *__arg) > : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } > ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } > void __setdoit (int __newval) { __do_it = __newval; } > void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, > &__cancel_type); } > void __restore () const { pthread_setcanceltype (__cancel_type, 0); } >}; ># 714 "/usr/include/pthread.h" 3 4 >struct __jmp_buf_tag; >extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); > > > > > >extern int pthread_mutex_init (pthread_mutex_t *__mutex, > __const pthread_mutexattr_t *__mutexattr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_lock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, > __const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int pthread_mutex_getprioceiling (__const pthread_mutex_t * > __restrict __mutex, > int *__restrict __prioceiling) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, > int __prioceiling, > int *__restrict __old_ceiling) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > > > >extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict > __attr, int *__restrict __kind) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __protocol) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, > int __protocol) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __prioceiling) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, > int __prioceiling) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr, > int *__robustness) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, > int __robustness) > throw () __attribute__ ((__nonnull__ (1))); ># 848 "/usr/include/pthread.h" 3 4 >extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, > __const pthread_rwlockattr_t *__restrict > __attr) throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, > __const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, > __const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pref) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, > int __pref) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int pthread_cond_init (pthread_cond_t *__restrict __cond, > __const pthread_condattr_t *__restrict > __cond_attr) throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_destroy (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_signal (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_broadcast (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, > pthread_mutex_t *__restrict __mutex) > __attribute__ ((__nonnull__ (1, 2))); ># 960 "/usr/include/pthread.h" 3 4 >extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, > pthread_mutex_t *__restrict __mutex, > __const struct timespec *__restrict > __abstime) __attribute__ ((__nonnull__ (1, 2, 3))); > > > > >extern int pthread_condattr_init (pthread_condattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_condattr_destroy (pthread_condattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_condattr_getpshared (__const pthread_condattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, > int __pshared) throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_condattr_getclock (__const pthread_condattr_t * > __restrict __attr, > __clockid_t *__restrict __clock_id) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_condattr_setclock (pthread_condattr_t *__attr, > __clockid_t __clock_id) > throw () __attribute__ ((__nonnull__ (1))); ># 1004 "/usr/include/pthread.h" 3 4 >extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_destroy (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_lock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_trylock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_unlock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, > __const pthread_barrierattr_t *__restrict > __attr, unsigned int __count) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrier_wait (pthread_barrier_t *__barrier) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); ># 1071 "/usr/include/pthread.h" 3 4 >extern int pthread_key_create (pthread_key_t *__key, > void (*__destr_function) (void *)) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_key_delete (pthread_key_t __key) throw (); > > >extern void *pthread_getspecific (pthread_key_t __key) throw (); > > >extern int pthread_setspecific (pthread_key_t __key, > __const void *__pointer) throw () ; > > > > >extern int pthread_getcpuclockid (pthread_t __thread_id, > __clockid_t *__clock_id) > throw () __attribute__ ((__nonnull__ (2))); ># 1105 "/usr/include/pthread.h" 3 4 >extern int pthread_atfork (void (*__prepare) (void), > void (*__parent) (void), > void (*__child) (void)) throw (); > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () >{ > return __thread1 == __thread2; >} > > >} ># 44 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 2 3 > > >typedef pthread_key_t __gthread_key_t; >typedef pthread_once_t __gthread_once_t; >typedef pthread_mutex_t __gthread_mutex_t; >typedef pthread_mutex_t __gthread_recursive_mutex_t; >typedef pthread_cond_t __gthread_cond_t; ># 100 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 3 >static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"))); >static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"))); >static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"))); >static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"))); >static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); >static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"))); >static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"))); >static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"))); >static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"))); >static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); >static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); > > >static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"))); >static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"))); >static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"))); >static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"))); >static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"))); ># 211 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 3 >static inline int >__gthread_active_p (void) >{ > static void *const __gthread_active_ptr > = __extension__ (void *) &__gthrw_pthread_cancel; > return __gthread_active_ptr != 0; >} ># 649 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 3 >static inline int >__gthread_once (__gthread_once_t *once, void (*func) (void)) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_once (once, func); > else > return -1; >} > >static inline int >__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *)) >{ > return __gthrw_pthread_key_create (key, dtor); >} > >static inline int >__gthread_key_delete (__gthread_key_t key) >{ > return __gthrw_pthread_key_delete (key); >} > >static inline void * >__gthread_getspecific (__gthread_key_t key) >{ > return __gthrw_pthread_getspecific (key); >} > >static inline int >__gthread_setspecific (__gthread_key_t key, const void *ptr) >{ > return __gthrw_pthread_setspecific (key, ptr); >} > >static inline int >__gthread_mutex_lock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_mutex_lock (mutex); > else > return 0; >} > >static inline int >__gthread_mutex_trylock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_mutex_trylock (mutex); > else > return 0; >} > >static inline int >__gthread_mutex_unlock (__gthread_mutex_t *mutex) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_mutex_unlock (mutex); > else > return 0; >} ># 731 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr-default.h" 3 >static inline int >__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex) >{ > return __gthread_mutex_lock (mutex); >} > >static inline int >__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex) >{ > return __gthread_mutex_trylock (mutex); >} > >static inline int >__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex) >{ > return __gthread_mutex_unlock (mutex); >} > >static inline int >__gthread_cond_broadcast (__gthread_cond_t *cond) >{ > return __gthrw_pthread_cond_broadcast (cond); >} > >static inline int >__gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex) >{ > return __gthrw_pthread_cond_wait (cond, mutex); >} > >static inline int >__gthread_cond_wait_recursive (__gthread_cond_t *cond, > __gthread_recursive_mutex_t *mutex) >{ > return __gthread_cond_wait (cond, mutex); >} ># 133 "/usr/include/c++/4.3/x86_64-suse-linux/bits/gthr.h" 2 3 > > > > > > > >#pragma GCC visibility pop ># 40 "/usr/include/c++/4.3/ext/atomicity.h" 2 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/atomic_word.h" 1 3 ># 37 "/usr/include/c++/4.3/x86_64-suse-linux/bits/atomic_word.h" 3 >typedef int _Atomic_word; ># 41 "/usr/include/c++/4.3/ext/atomicity.h" 2 3 > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > > > > > > static inline _Atomic_word > __exchange_and_add(volatile _Atomic_word* __mem, int __val) > { return __sync_fetch_and_add(__mem, __val); } > > static inline void > __atomic_add(volatile _Atomic_word* __mem, int __val) > { __sync_fetch_and_add(__mem, __val); } ># 66 "/usr/include/c++/4.3/ext/atomicity.h" 3 > static inline _Atomic_word > __exchange_and_add_single(_Atomic_word* __mem, int __val) > { > _Atomic_word __result = *__mem; > *__mem += __val; > return __result; > } > > static inline void > __atomic_add_single(_Atomic_word* __mem, int __val) > { *__mem += __val; } > > static inline _Atomic_word > __attribute__ ((__unused__)) > __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) > { > > if (__gthread_active_p()) > return __exchange_and_add(__mem, __val); > else > return __exchange_and_add_single(__mem, __val); > > > > } > > static inline void > __attribute__ ((__unused__)) > __atomic_add_dispatch(_Atomic_word* __mem, int __val) > { > > if (__gthread_active_p()) > __atomic_add(__mem, __val); > else > __atomic_add_single(__mem, __val); > > > > } > >} ># 47 "/usr/include/c++/4.3/bits/ios_base.h" 2 3 > ># 1 "/usr/include/c++/4.3/bits/locale_classes.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > ># 45 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > > ># 1 "/usr/include/c++/4.3/string" 1 3 ># 43 "/usr/include/c++/4.3/string" 3 > ># 44 "/usr/include/c++/4.3/string" 3 > > > > ># 1 "/usr/include/c++/4.3/bits/allocator.h" 1 3 ># 53 "/usr/include/c++/4.3/bits/allocator.h" 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++allocator.h" 1 3 ># 39 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++allocator.h" 3 ># 1 "/usr/include/c++/4.3/ext/new_allocator.h" 1 3 ># 37 "/usr/include/c++/4.3/ext/new_allocator.h" 3 ># 1 "/usr/include/c++/4.3/new" 1 3 ># 44 "/usr/include/c++/4.3/new" 3 ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 45 "/usr/include/c++/4.3/new" 2 3 > > >#pragma GCC visibility push(default) > >extern "C++" { > >namespace std >{ > > > > > > class bad_alloc : public exception > { > public: > bad_alloc() throw() { } > > > > virtual ~bad_alloc() throw(); > > > virtual const char* what() const throw(); > }; > > struct nothrow_t { }; > > extern const nothrow_t nothrow; > > > > typedef void (*new_handler)(); > > > > new_handler set_new_handler(new_handler) throw(); >} ># 95 "/usr/include/c++/4.3/new" 3 >void* operator new(std::size_t) throw (std::bad_alloc); >void* operator new[](std::size_t) throw (std::bad_alloc); >void operator delete(void*) throw(); >void operator delete[](void*) throw(); >void* operator new(std::size_t, const std::nothrow_t&) throw(); >void* operator new[](std::size_t, const std::nothrow_t&) throw(); >void operator delete(void*, const std::nothrow_t&) throw(); >void operator delete[](void*, const std::nothrow_t&) throw(); > > >inline void* operator new(std::size_t, void* __p) throw() { return __p; } >inline void* operator new[](std::size_t, void* __p) throw() { return __p; } > > >inline void operator delete (void*, void*) throw() { } >inline void operator delete[](void*, void*) throw() { } > >} > >#pragma GCC visibility pop ># 38 "/usr/include/c++/4.3/ext/new_allocator.h" 2 3 > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { > > using std::size_t; > using std::ptrdiff_t; ># 53 "/usr/include/c++/4.3/ext/new_allocator.h" 3 > template<typename _Tp> > class new_allocator > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef new_allocator<_Tp1> other; }; > > new_allocator() throw() { } > > new_allocator(const new_allocator&) throw() { } > > template<typename _Tp1> > new_allocator(const new_allocator<_Tp1>&) throw() { } > > ~new_allocator() throw() { } > > pointer > address(reference __x) const { return &__x; } > > const_pointer > address(const_reference __x) const { return &__x; } > > > > pointer > allocate(size_type __n, const void* = 0) > { > if (__builtin_expect(__n > this->max_size(), false)) > std::__throw_bad_alloc(); > > return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); > } > > > void > deallocate(pointer __p, size_type) > { ::operator delete(__p); } > > size_type > max_size() const throw() > { return size_t(-1) / sizeof(_Tp); } > > > > void > construct(pointer __p, const _Tp& __val) > { ::new((void *)__p) _Tp(__val); } ># 117 "/usr/include/c++/4.3/ext/new_allocator.h" 3 > void > destroy(pointer __p) { __p->~_Tp(); } > }; > > template<typename _Tp> > inline bool > operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return true; } > > template<typename _Tp> > inline bool > operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return false; } > >} ># 40 "/usr/include/c++/4.3/x86_64-suse-linux/bits/c++allocator.h" 2 3 ># 54 "/usr/include/c++/4.3/bits/allocator.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _Tp> > class allocator; > > > template<> > class allocator<void> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef void* pointer; > typedef const void* const_pointer; > typedef void value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > }; > > > > > > > > template<typename _Tp> > class allocator: public __gnu_cxx::new_allocator<_Tp> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > > allocator() throw() { } > > allocator(const allocator& __a) throw() > : __gnu_cxx::new_allocator<_Tp>(__a) { } > > template<typename _Tp1> > allocator(const allocator<_Tp1>&) throw() { } > > ~allocator() throw() { } > > > }; > > template<typename _T1, typename _T2> > inline bool > operator==(const allocator<_T1>&, const allocator<_T2>&) > { return true; } > > template<typename _Tp> > inline bool > operator==(const allocator<_Tp>&, const allocator<_Tp>&) > { return true; } > > template<typename _T1, typename _T2> > inline bool > operator!=(const allocator<_T1>&, const allocator<_T2>&) > { return false; } > > template<typename _Tp> > inline bool > operator!=(const allocator<_Tp>&, const allocator<_Tp>&) > { return false; } > > > > > > extern template class allocator<char>; > extern template class allocator<wchar_t>; > > > > > > > template<typename _Alloc, bool = __is_empty(_Alloc)> > struct __alloc_swap > { static void _S_do_it(_Alloc&, _Alloc&) { } }; > > template<typename _Alloc> > struct __alloc_swap<_Alloc, false> > { > static void > _S_do_it(_Alloc& __one, _Alloc& __two) > { > > if (__one != __two) > swap(__one, __two); > } > }; > > > template<typename _Alloc, bool = __is_empty(_Alloc)> > struct __alloc_neq > { > static bool > _S_do_it(const _Alloc&, const _Alloc&) > { return false; } > }; > > template<typename _Alloc> > struct __alloc_neq<_Alloc, false> > { > static bool > _S_do_it(const _Alloc& __one, const _Alloc& __two) > { return __one != __two; } > }; > >} ># 49 "/usr/include/c++/4.3/string" 2 3 > > ># 1 "/usr/include/c++/4.3/bits/ostream_insert.h" 1 3 ># 38 "/usr/include/c++/4.3/bits/ostream_insert.h" 3 > ># 39 "/usr/include/c++/4.3/bits/ostream_insert.h" 3 > > ># 1 "/usr/include/c++/4.3/cxxabi-forced.h" 1 3 ># 34 "/usr/include/c++/4.3/cxxabi-forced.h" 3 >#pragma GCC visibility push(default) > > >namespace __cxxabiv1 >{ > > > class __forced_unwind > { > virtual ~__forced_unwind() throw(); > virtual void __pure_dummy() = 0; > }; >} > > >#pragma GCC visibility pop ># 42 "/usr/include/c++/4.3/bits/ostream_insert.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > inline void > __ostream_write(basic_ostream<_CharT, _Traits>& __out, > const _CharT* __s, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > const streamsize __put = __out.rdbuf()->sputn(__s, __n); > if (__put != __n) > __out.setstate(__ios_base::badbit); > } > > template<typename _CharT, typename _Traits> > inline void > __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > const _CharT __c = __out.fill(); > for (; __n > 0; --__n) > { > const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); > if (_Traits::eq_int_type(__put, _Traits::eof())) > { > __out.setstate(__ios_base::badbit); > break; > } > } > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > __ostream_insert(basic_ostream<_CharT, _Traits>& __out, > const _CharT* __s, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > typename __ostream_type::sentry __cerb(__out); > if (__cerb) > { > try > { > const streamsize __w = __out.width(); > if (__w > __n) > { > const bool __left = ((__out.flags() > & __ios_base::adjustfield) > == __ios_base::left); > if (!__left) > __ostream_fill(__out, __w - __n); > if (__out.good()) > __ostream_write(__out, __s, __n); > if (__left && __out.good()) > __ostream_fill(__out, __w - __n); > } > else > __ostream_write(__out, __s, __n); > __out.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __out._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { __out._M_setstate(__ios_base::badbit); } > } > return __out; > } > > > > > > extern template ostream& __ostream_insert(ostream&, const char*, streamsize); > > > extern template wostream& __ostream_insert(wostream&, const wchar_t*, > streamsize); > > > >} ># 52 "/usr/include/c++/4.3/string" 2 3 > > > ># 1 "/usr/include/c++/4.3/bits/stl_function.h" 1 3 ># 65 "/usr/include/c++/4.3/bits/stl_function.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { ># 102 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Arg, typename _Result> > struct unary_function > { > typedef _Arg argument_type; > > > typedef _Result result_type; > }; > > > > > template<typename _Arg1, typename _Arg2, typename _Result> > struct binary_function > { > typedef _Arg1 first_argument_type; > > > typedef _Arg2 second_argument_type; > typedef _Result result_type; > }; ># 136 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Tp> > struct plus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x + __y; } > }; > > > template<typename _Tp> > struct minus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x - __y; } > }; > > > template<typename _Tp> > struct multiplies : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x * __y; } > }; > > > template<typename _Tp> > struct divides : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x / __y; } > }; > > > template<typename _Tp> > struct modulus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x % __y; } > }; > > > template<typename _Tp> > struct negate : public unary_function<_Tp, _Tp> > { > _Tp > operator()(const _Tp& __x) const > { return -__x; } > }; ># 198 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Tp> > struct equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x == __y; } > }; > > > template<typename _Tp> > struct not_equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x != __y; } > }; > > > template<typename _Tp> > struct greater : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x > __y; } > }; > > > template<typename _Tp> > struct less : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x < __y; } > }; > > > template<typename _Tp> > struct greater_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x >= __y; } > }; > > > template<typename _Tp> > struct less_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x <= __y; } > }; ># 260 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Tp> > struct logical_and : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x && __y; } > }; > > > template<typename _Tp> > struct logical_or : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x || __y; } > }; > > > template<typename _Tp> > struct logical_not : public unary_function<_Tp, bool> > { > bool > operator()(const _Tp& __x) const > { return !__x; } > }; > > > > > template<typename _Tp> > struct bit_and : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x & __y; } > }; > > template<typename _Tp> > struct bit_or : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x | __y; } > }; > > template<typename _Tp> > struct bit_xor : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x ^ __y; } > }; ># 341 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Predicate> > class unary_negate > : public unary_function<typename _Predicate::argument_type, bool> > { > protected: > _Predicate _M_pred; > > public: > explicit > unary_negate(const _Predicate& __x) : _M_pred(__x) { } > > bool > operator()(const typename _Predicate::argument_type& __x) const > { return !_M_pred(__x); } > }; > > > template<typename _Predicate> > inline unary_negate<_Predicate> > not1(const _Predicate& __pred) > { return unary_negate<_Predicate>(__pred); } > > > template<typename _Predicate> > class binary_negate > : public binary_function<typename _Predicate::first_argument_type, > typename _Predicate::second_argument_type, bool> > { > protected: > _Predicate _M_pred; > > public: > explicit > binary_negate(const _Predicate& __x) : _M_pred(__x) { } > > bool > operator()(const typename _Predicate::first_argument_type& __x, > const typename _Predicate::second_argument_type& __y) const > { return !_M_pred(__x, __y); } > }; > > > template<typename _Predicate> > inline binary_negate<_Predicate> > not2(const _Predicate& __pred) > { return binary_negate<_Predicate>(__pred); } ># 410 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Arg, typename _Result> > class pointer_to_unary_function : public unary_function<_Arg, _Result> > { > protected: > _Result (*_M_ptr)(_Arg); > > public: > pointer_to_unary_function() { } > > explicit > pointer_to_unary_function(_Result (*__x)(_Arg)) > : _M_ptr(__x) { } > > _Result > operator()(_Arg __x) const > { return _M_ptr(__x); } > }; > > > template<typename _Arg, typename _Result> > inline pointer_to_unary_function<_Arg, _Result> > ptr_fun(_Result (*__x)(_Arg)) > { return pointer_to_unary_function<_Arg, _Result>(__x); } > > > template<typename _Arg1, typename _Arg2, typename _Result> > class pointer_to_binary_function > : public binary_function<_Arg1, _Arg2, _Result> > { > protected: > _Result (*_M_ptr)(_Arg1, _Arg2); > > public: > pointer_to_binary_function() { } > > explicit > pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) > : _M_ptr(__x) { } > > _Result > operator()(_Arg1 __x, _Arg2 __y) const > { return _M_ptr(__x, __y); } > }; > > > template<typename _Arg1, typename _Arg2, typename _Result> > inline pointer_to_binary_function<_Arg1, _Arg2, _Result> > ptr_fun(_Result (*__x)(_Arg1, _Arg2)) > { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } > > > template<typename _Tp> > struct _Identity : public unary_function<_Tp,_Tp> > { > _Tp& > operator()(_Tp& __x) const > { return __x; } > > const _Tp& > operator()(const _Tp& __x) const > { return __x; } > }; > > template<typename _Pair> > struct _Select1st : public unary_function<_Pair, > typename _Pair::first_type> > { > typename _Pair::first_type& > operator()(_Pair& __x) const > { return __x.first; } > > const typename _Pair::first_type& > operator()(const _Pair& __x) const > { return __x.first; } > }; > > template<typename _Pair> > struct _Select2nd : public unary_function<_Pair, > typename _Pair::second_type> > { > typename _Pair::second_type& > operator()(_Pair& __x) const > { return __x.second; } > > const typename _Pair::second_type& > operator()(const _Pair& __x) const > { return __x.second; } > }; ># 515 "/usr/include/c++/4.3/bits/stl_function.h" 3 > template<typename _Ret, typename _Tp> > class mem_fun_t : public unary_function<_Tp*, _Ret> > { > public: > explicit > mem_fun_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) { } > > _Ret > operator()(_Tp* __p) const > { return (__p->*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)(); > }; > > > > template<typename _Ret, typename _Tp> > class const_mem_fun_t : public unary_function<const _Tp*, _Ret> > { > public: > explicit > const_mem_fun_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp* __p) const > { return (__p->*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)() const; > }; > > > > template<typename _Ret, typename _Tp> > class mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > mem_fun_ref_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) { } > > _Ret > operator()(_Tp& __r) const > { return (__r.*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)(); > }; > > > > template<typename _Ret, typename _Tp> > class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp& __r) const > { return (__r.*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)() const; > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> > { > public: > explicit > mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) { } > > _Ret > operator()(_Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) { } > > _Ret > operator()(_Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > > template<typename _Ret, typename _Tp> > inline mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)()) > { return mem_fun_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline const_mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)() const) > { return const_mem_fun_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)()) > { return mem_fun_ref_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline const_mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)() const) > { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline const_mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > > >} > > ># 1 "/usr/include/c++/4.3/backward/binders.h" 1 3 ># 65 "/usr/include/c++/4.3/backward/binders.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { ># 99 "/usr/include/c++/4.3/backward/binders.h" 3 > template<typename _Operation> > class binder1st > : public unary_function<typename _Operation::second_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::first_argument_type value; > > public: > binder1st(const _Operation& __x, > const typename _Operation::first_argument_type& __y) > : op(__x), value(__y) { } > > typename _Operation::result_type > operator()(const typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > > > > typename _Operation::result_type > operator()(typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > } ; > > > template<typename _Operation, typename _Tp> > inline binder1st<_Operation> > bind1st(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::first_argument_type _Arg1_type; > return binder1st<_Operation>(__fn, _Arg1_type(__x)); > } > > > template<typename _Operation> > class binder2nd > : public unary_function<typename _Operation::first_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::second_argument_type value; > > public: > binder2nd(const _Operation& __x, > const typename _Operation::second_argument_type& __y) > : op(__x), value(__y) { } > > typename _Operation::result_type > operator()(const typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > > > > typename _Operation::result_type > operator()(typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > } ; > > > template<typename _Operation, typename _Tp> > inline binder2nd<_Operation> > bind2nd(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::second_argument_type _Arg2_type; > return binder2nd<_Operation>(__fn, _Arg2_type(__x)); > } > > >} ># 705 "/usr/include/c++/4.3/bits/stl_function.h" 2 3 ># 56 "/usr/include/c++/4.3/string" 2 3 > > ># 1 "/usr/include/c++/4.3/bits/basic_string.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/basic_string.h" 3 > ># 45 "/usr/include/c++/4.3/bits/basic_string.h" 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 108 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_string > { > typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; > > > public: > typedef _Traits traits_type; > typedef typename _Traits::char_type value_type; > typedef _Alloc allocator_type; > typedef typename _CharT_alloc_type::size_type size_type; > typedef typename _CharT_alloc_type::difference_type difference_type; > typedef typename _CharT_alloc_type::reference reference; > typedef typename _CharT_alloc_type::const_reference const_reference; > typedef typename _CharT_alloc_type::pointer pointer; > typedef typename _CharT_alloc_type::const_pointer const_pointer; > typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; > typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> > const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > > private: ># 145 "/usr/include/c++/4.3/bits/basic_string.h" 3 > struct _Rep_base > { > size_type _M_length; > size_type _M_capacity; > _Atomic_word _M_refcount; > }; > > struct _Rep : _Rep_base > { > > typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc; ># 170 "/usr/include/c++/4.3/bits/basic_string.h" 3 > static const size_type _S_max_size; > static const _CharT _S_terminal; > > > > static size_type _S_empty_rep_storage[]; > > static _Rep& > _S_empty_rep() > { > > > > void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage); > return *reinterpret_cast<_Rep*>(__p); > } > > bool > _M_is_leaked() const > { return this->_M_refcount < 0; } > > bool > _M_is_shared() const > { return this->_M_refcount > 0; } > > void > _M_set_leaked() > { this->_M_refcount = -1; } > > void > _M_set_sharable() > { this->_M_refcount = 0; } > > void > _M_set_length_and_sharable(size_type __n) > { > this->_M_set_sharable(); > this->_M_length = __n; > traits_type::assign(this->_M_refdata()[__n], _S_terminal); > > > } > > _CharT* > _M_refdata() throw() > { return reinterpret_cast<_CharT*>(this + 1); } > > _CharT* > _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) > { > return (!_M_is_leaked() && __alloc1 == __alloc2) > ? _M_refcopy() : _M_clone(__alloc1); > } > > > static _Rep* > _S_create(size_type, size_type, const _Alloc&); > > void > _M_dispose(const _Alloc& __a) > { > > if (__builtin_expect(this != &_S_empty_rep(), false)) > > if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, > -1) <= 0) > _M_destroy(__a); > } > > void > _M_destroy(const _Alloc&) throw(); > > _CharT* > _M_refcopy() throw() > { > > if (__builtin_expect(this != &_S_empty_rep(), false)) > > __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1); > return _M_refdata(); > } > > _CharT* > _M_clone(const _Alloc&, size_type __res = 0); > }; > > > struct _Alloc_hider : _Alloc > { > _Alloc_hider(_CharT* __dat, const _Alloc& __a) > : _Alloc(__a), _M_p(__dat) { } > > _CharT* _M_p; > }; > > public: > > > > > static const size_type npos = static_cast<size_type>(-1); > > private: > > mutable _Alloc_hider _M_dataplus; > > _CharT* > _M_data() const > { return _M_dataplus._M_p; } > > _CharT* > _M_data(_CharT* __p) > { return (_M_dataplus._M_p = __p); } > > _Rep* > _M_rep() const > { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } > > > > iterator > _M_ibegin() const > { return iterator(_M_data()); } > > iterator > _M_iend() const > { return iterator(_M_data() + this->size()); } > > void > _M_leak() > { > if (!_M_rep()->_M_is_leaked()) > _M_leak_hard(); > } > > size_type > _M_check(size_type __pos, const char* __s) const > { > if (__pos > this->size()) > __throw_out_of_range((__s)); > return __pos; > } > > void > _M_check_length(size_type __n1, size_type __n2, const char* __s) const > { > if (this->max_size() - (this->size() - __n1) < __n2) > __throw_length_error((__s)); > } > > > size_type > _M_limit(size_type __pos, size_type __off) const > { > const bool __testoff = __off < this->size() - __pos; > return __testoff ? __off : this->size() - __pos; > } > > > bool > _M_disjunct(const _CharT* __s) const > { > return (less<const _CharT*>()(__s, _M_data()) > || less<const _CharT*>()(_M_data() + this->size(), __s)); > } > > > > static void > _M_copy(_CharT* __d, const _CharT* __s, size_type __n) > { > if (__n == 1) > traits_type::assign(*__d, *__s); > else > traits_type::copy(__d, __s, __n); > } > > static void > _M_move(_CharT* __d, const _CharT* __s, size_type __n) > { > if (__n == 1) > traits_type::assign(*__d, *__s); > else > traits_type::move(__d, __s, __n); > } > > static void > _M_assign(_CharT* __d, size_type __n, _CharT __c) > { > if (__n == 1) > traits_type::assign(*__d, __c); > else > traits_type::assign(__d, __n, __c); > } > > > > template<class _Iterator> > static void > _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) > { > for (; __k1 != __k2; ++__k1, ++__p) > traits_type::assign(*__p, *__k1); > } > > static void > _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) > { _M_copy(__p, __k1, __k2 - __k1); } > > static void > _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) > { _M_copy(__p, __k1, __k2 - __k1); } > > static int > _S_compare(size_type __n1, size_type __n2) > { > const difference_type __d = difference_type(__n1 - __n2); > > if (__d > __gnu_cxx::__numeric_traits<int>::__max) > return __gnu_cxx::__numeric_traits<int>::__max; > else if (__d < __gnu_cxx::__numeric_traits<int>::__min) > return __gnu_cxx::__numeric_traits<int>::__min; > else > return int(__d); > } > > void > _M_mutate(size_type __pos, size_type __len1, size_type __len2); > > void > _M_leak_hard(); > > static _Rep& > _S_empty_rep() > { return _Rep::_S_empty_rep(); } > > public: > > > > > > > > inline > basic_string(); > > > > > explicit > basic_string(const _Alloc& __a); > > > > > > > basic_string(const basic_string& __str); > > > > > > > basic_string(const basic_string& __str, size_type __pos, > size_type __n = npos); > > > > > > > > basic_string(const basic_string& __str, size_type __pos, > size_type __n, const _Alloc& __a); ># 464 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string(const _CharT* __s, size_type __n, > const _Alloc& __a = _Alloc()); > > > > > > basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); > > > > > > > basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); > > > > > > > > template<class _InputIterator> > basic_string(_InputIterator __beg, _InputIterator __end, > const _Alloc& __a = _Alloc()); > > > > > ~basic_string() > { _M_rep()->_M_dispose(this->get_allocator()); } > > > > > > basic_string& > operator=(const basic_string& __str) > { return this->assign(__str); } > > > > > > basic_string& > operator=(const _CharT* __s) > { return this->assign(__s); } ># 519 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > operator=(_CharT __c) > { > this->assign(1, __c); > return *this; > } > > > > > > > iterator > begin() > { > _M_leak(); > return iterator(_M_data()); > } > > > > > > const_iterator > begin() const > { return const_iterator(_M_data()); } > > > > > > iterator > end() > { > _M_leak(); > return iterator(_M_data() + this->size()); > } > > > > > > const_iterator > end() const > { return const_iterator(_M_data() + this->size()); } > > > > > > > reverse_iterator > rbegin() > { return reverse_iterator(this->end()); } > > > > > > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(this->end()); } > > > > > > > reverse_iterator > rend() > { return reverse_iterator(this->begin()); } > > > > > > > const_reverse_iterator > rend() const > { return const_reverse_iterator(this->begin()); } > > public: > > > > size_type > size() const > { return _M_rep()->_M_length; } > > > > size_type > length() const > { return _M_rep()->_M_length; } > > > size_type > max_size() const > { return _Rep::_S_max_size; } ># 630 "/usr/include/c++/4.3/bits/basic_string.h" 3 > void > resize(size_type __n, _CharT __c); ># 643 "/usr/include/c++/4.3/bits/basic_string.h" 3 > void > resize(size_type __n) > { this->resize(__n, _CharT()); } > > > > > > size_type > capacity() const > { return _M_rep()->_M_capacity; } ># 672 "/usr/include/c++/4.3/bits/basic_string.h" 3 > void > reserve(size_type __res_arg = 0); > > > > > void > clear() > { _M_mutate(0, this->size(), 0); } > > > > > bool > empty() const > { return this->size() == 0; } ># 700 "/usr/include/c++/4.3/bits/basic_string.h" 3 > const_reference > operator[] (size_type __pos) const > { > ; > return _M_data()[__pos]; > } ># 717 "/usr/include/c++/4.3/bits/basic_string.h" 3 > reference > operator[](size_type __pos) > { > > ; > > ; > _M_leak(); > return _M_data()[__pos]; > } ># 738 "/usr/include/c++/4.3/bits/basic_string.h" 3 > const_reference > at(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("basic_string::at")); > return _M_data()[__n]; > } ># 757 "/usr/include/c++/4.3/bits/basic_string.h" 3 > reference > at(size_type __n) > { > if (__n >= size()) > __throw_out_of_range(("basic_string::at")); > _M_leak(); > return _M_data()[__n]; > } > > > > > > > > basic_string& > operator+=(const basic_string& __str) > { return this->append(__str); } > > > > > > > basic_string& > operator+=(const _CharT* __s) > { return this->append(__s); } > > > > > > > basic_string& > operator+=(_CharT __c) > { > this->push_back(__c); > return *this; > } > > > > > > > basic_string& > append(const basic_string& __str); ># 817 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > append(const basic_string& __str, size_type __pos, size_type __n); > > > > > > > > basic_string& > append(const _CharT* __s, size_type __n); > > > > > > > basic_string& > append(const _CharT* __s) > { > ; > return this->append(__s, traits_type::length(__s)); > } ># 849 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > append(size_type __n, _CharT __c); ># 860 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > append(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_iend(), _M_iend(), __first, __last); } > > > > > > void > push_back(_CharT __c) > { > const size_type __len = 1 + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > traits_type::assign(_M_data()[this->size()], __c); > _M_rep()->_M_set_length_and_sharable(__len); > } > > > > > > > basic_string& > assign(const basic_string& __str); ># 899 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > assign(const basic_string& __str, size_type __pos, size_type __n) > { return this->assign(__str._M_data() > + __str._M_check(__pos, "basic_string::assign"), > __str._M_limit(__pos, __n)); } ># 915 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s, size_type __n); ># 927 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s) > { > ; > return this->assign(__s, traits_type::length(__s)); > } ># 943 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > assign(size_type __n, _CharT __c) > { return _M_replace_aux(size_type(0), this->size(), __n, __c); } ># 955 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > assign(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } ># 972 "/usr/include/c++/4.3/bits/basic_string.h" 3 > void > insert(iterator __p, size_type __n, _CharT __c) > { this->replace(__p, __p, __n, __c); } ># 987 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<class _InputIterator> > void > insert(iterator __p, _InputIterator __beg, _InputIterator __end) > { this->replace(__p, __p, __beg, __end); } ># 1003 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos1, const basic_string& __str) > { return this->insert(__pos1, __str, size_type(0), __str.size()); } ># 1025 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos1, const basic_string& __str, > size_type __pos2, size_type __n) > { return this->insert(__pos1, __str._M_data() > + __str._M_check(__pos2, "basic_string::insert"), > __str._M_limit(__pos2, __n)); } ># 1048 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s, size_type __n); ># 1066 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s) > { > ; > return this->insert(__pos, __s, traits_type::length(__s)); > } ># 1089 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, size_type __n, _CharT __c) > { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), > size_type(0), __n, __c); } ># 1106 "/usr/include/c++/4.3/bits/basic_string.h" 3 > iterator > insert(iterator __p, _CharT __c) > { > ; > const size_type __pos = __p - _M_ibegin(); > _M_replace_aux(__pos, size_type(0), size_type(1), __c); > _M_rep()->_M_set_leaked(); > return iterator(_M_data() + __pos); > } ># 1130 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > erase(size_type __pos = 0, size_type __n = npos) > { > _M_mutate(_M_check(__pos, "basic_string::erase"), > _M_limit(__pos, __n), size_type(0)); > return *this; > } ># 1146 "/usr/include/c++/4.3/bits/basic_string.h" 3 > iterator > erase(iterator __position) > { > ; > > const size_type __pos = __position - _M_ibegin(); > _M_mutate(__pos, size_type(1), size_type(0)); > _M_rep()->_M_set_leaked(); > return iterator(_M_data() + __pos); > } ># 1166 "/usr/include/c++/4.3/bits/basic_string.h" 3 > iterator > erase(iterator __first, iterator __last) > { > ; > > const size_type __pos = __first - _M_ibegin(); > _M_mutate(__pos, __last - __first, size_type(0)); > _M_rep()->_M_set_leaked(); > return iterator(_M_data() + __pos); > } ># 1193 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n, const basic_string& __str) > { return this->replace(__pos, __n, __str._M_data(), __str.size()); } ># 1215 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) > { return this->replace(__pos1, __n1, __str._M_data() > + __str._M_check(__pos2, "basic_string::replace"), > __str._M_limit(__pos2, __n2)); } ># 1239 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2); ># 1258 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, const _CharT* __s) > { > ; > return this->replace(__pos, __n1, __s, traits_type::length(__s)); > } ># 1281 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) > { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), > _M_limit(__pos, __n1), __n2, __c); } ># 1299 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const basic_string& __str) > { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } ># 1317 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) > { > ; > > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); > } ># 1338 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, const _CharT* __s) > { > ; > return this->replace(__i1, __i2, __s, traits_type::length(__s)); > } ># 1359 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string& > replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) > { > ; > > return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c); > } ># 1381 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > replace(iterator __i1, iterator __i2, > _InputIterator __k1, _InputIterator __k2) > { > ; > > ; > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); > } > > > > basic_string& > replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const _CharT* __k1, const _CharT* __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const_iterator __k1, const_iterator __k2) > { > ; > > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } > > private: > template<class _Integer> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n, > _Integer __val, __true_type) > { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); } > > template<class _InputIterator> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type); > > basic_string& > _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, > _CharT __c); > > basic_string& > _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, > size_type __n2); > > > > template<class _InIterator> > static _CharT* > _S_construct_aux(_InIterator __beg, _InIterator __end, > const _Alloc& __a, __false_type) > { > typedef typename iterator_traits<_InIterator>::iterator_category _Tag; > return _S_construct(__beg, __end, __a, _Tag()); > } > > > > template<class _Integer> > static _CharT* > _S_construct_aux(_Integer __beg, _Integer __end, > const _Alloc& __a, __true_type) > { return _S_construct(static_cast<size_type>(__beg), __end, __a); } > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) > { > typedef typename std::__is_integer<_InIterator>::__type _Integral; > return _S_construct_aux(__beg, __end, __a, _Integral()); > } > > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag); > > > > template<class _FwdIterator> > static _CharT* > _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, > forward_iterator_tag); > > static _CharT* > _S_construct(size_type __req, _CharT __c, const _Alloc& __a); > > public: ># 1513 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > copy(_CharT* __s, size_type __n, size_type __pos = 0) const; ># 1523 "/usr/include/c++/4.3/bits/basic_string.h" 3 > void > swap(basic_string& __s); ># 1533 "/usr/include/c++/4.3/bits/basic_string.h" 3 > const _CharT* > c_str() const > { return _M_data(); } > > > > > > > > const _CharT* > data() const > { return _M_data(); } > > > > > allocator_type > get_allocator() const > { return _M_dataplus; } ># 1565 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find(const _CharT* __s, size_type __pos, size_type __n) const; ># 1578 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find(const basic_string& __str, size_type __pos = 0) const > { return this->find(__str.data(), __pos, __str.size()); } ># 1592 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find(__s, __pos, traits_type::length(__s)); > } ># 1609 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find(_CharT __c, size_type __pos = 0) const; ># 1622 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > rfind(const basic_string& __str, size_type __pos = npos) const > { return this->rfind(__str.data(), __pos, __str.size()); } ># 1637 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > rfind(const _CharT* __s, size_type __pos, size_type __n) const; ># 1650 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > rfind(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->rfind(__s, __pos, traits_type::length(__s)); > } ># 1667 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > rfind(_CharT __c, size_type __pos = npos) const; ># 1680 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_of(const basic_string& __str, size_type __pos = 0) const > { return this->find_first_of(__str.data(), __pos, __str.size()); } ># 1695 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 1708 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_of(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find_first_of(__s, __pos, traits_type::length(__s)); > } ># 1727 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_of(_CharT __c, size_type __pos = 0) const > { return this->find(__c, __pos); } ># 1741 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_of(const basic_string& __str, size_type __pos = npos) const > { return this->find_last_of(__str.data(), __pos, __str.size()); } ># 1756 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 1769 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_of(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->find_last_of(__s, __pos, traits_type::length(__s)); > } ># 1788 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_of(_CharT __c, size_type __pos = npos) const > { return this->rfind(__c, __pos); } ># 1802 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_not_of(const basic_string& __str, size_type __pos = 0) const > { return this->find_first_not_of(__str.data(), __pos, __str.size()); } ># 1817 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 1831 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_not_of(const _CharT* __s, size_type __pos = 0) const > { > ; > return this->find_first_not_of(__s, __pos, traits_type::length(__s)); > } ># 1848 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_first_not_of(_CharT __c, size_type __pos = 0) const; ># 1861 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_not_of(const basic_string& __str, size_type __pos = npos) const > { return this->find_last_not_of(__str.data(), __pos, __str.size()); } ># 1877 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 1890 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_not_of(const _CharT* __s, size_type __pos = npos) const > { > ; > return this->find_last_not_of(__s, __pos, traits_type::length(__s)); > } ># 1907 "/usr/include/c++/4.3/bits/basic_string.h" 3 > size_type > find_last_not_of(_CharT __c, size_type __pos = npos) const; ># 1922 "/usr/include/c++/4.3/bits/basic_string.h" 3 > basic_string > substr(size_type __pos = 0, size_type __n = npos) const > { return basic_string(*this, > _M_check(__pos, "basic_string::substr"), __n); } ># 1940 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(const basic_string& __str) const > { > const size_type __size = this->size(); > const size_type __osize = __str.size(); > const size_type __len = std::min(__size, __osize); > > int __r = traits_type::compare(_M_data(), __str.data(), __len); > if (!__r) > __r = _S_compare(__size, __osize); > return __r; > } ># 1970 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n, const basic_string& __str) const; ># 1994 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const; ># 2012 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(const _CharT* __s) const; ># 2035 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s) const; ># 2060 "/usr/include/c++/4.3/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const; > }; > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc>:: > basic_string() > > : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } ># 2081 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str(__lhs); > __str.append(__size_type(1), __rhs); > return __str; > } ># 2152 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) == 0; } > > template<typename _CharT> > inline > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type > operator==(const basic_string<_CharT>& __lhs, > const basic_string<_CharT>& __rhs) > { return (__lhs.size() == __rhs.size() > && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), > __lhs.size())); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) == 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) == 0; } ># 2198 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return !(__lhs == __rhs); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return !(__lhs == __rhs); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return !(__lhs == __rhs); } ># 2235 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) > 0; } ># 2272 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) < 0; } ># 2309 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) >= 0; } ># 2346 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) <= 0; } ># 2383 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline void > swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, > basic_string<_CharT, _Traits, _Alloc>& __rhs) > { __lhs.swap(__rhs); } ># 2400 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str); > > template<> > basic_istream<char>& > operator>>(basic_istream<char>& __is, basic_string<char>& __str); ># 2418 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __os, > const basic_string<_CharT, _Traits, _Alloc>& __str) > { > > > return __ostream_insert(__os, __str.data(), __str.size()); > } ># 2441 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); ># 2458 "/usr/include/c++/4.3/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str) > { return getline(__is, __str, __is.widen('\n')); } > > template<> > basic_istream<char>& > getline(basic_istream<char>& __in, basic_string<char>& __str, > char __delim); > > > template<> > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str, > wchar_t __delim); > > >} ># 59 "/usr/include/c++/4.3/string" 2 3 > > ># 1 "/usr/include/c++/4.3/bits/basic_string.tcc" 1 3 ># 47 "/usr/include/c++/4.3/bits/basic_string.tcc" 3 > ># 48 "/usr/include/c++/4.3/bits/basic_string.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; > > template<typename _CharT, typename _Traits, typename _Alloc> > const _CharT > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_terminal = _CharT(); > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::npos; > > > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[ > (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) / > sizeof(size_type)]; > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag) > { > > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > _CharT __buf[128]; > size_type __len = 0; > while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT)) > { > __buf[__len++] = *__beg; > ++__beg; > } > _Rep* __r = _Rep::_S_create(__len, size_type(0), __a); > _M_copy(__r->_M_refdata(), __buf, __len); > try > { > while (__beg != __end) > { > if (__len == __r->_M_capacity) > { > > _Rep* __another = _Rep::_S_create(__len + 1, __len, __a); > _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len); > __r->_M_destroy(__a); > __r = __another; > } > __r->_M_refdata()[__len++] = *__beg; > ++__beg; > } > } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_set_length_and_sharable(__len); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template <typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > forward_iterator_tag) > { > > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > if (__builtin_expect(__gnu_cxx::__is_null_pointer(__beg) > && __beg != __end, 0)) > __throw_logic_error(("basic_string::_S_construct NULL not valid")); > > const size_type __dnew = static_cast<size_type>(std::distance(__beg, > __end)); > > _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); > try > { _S_copy_chars(__r->_M_refdata(), __beg, __end); } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_set_length_and_sharable(__dnew); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(size_type __n, _CharT __c, const _Alloc& __a) > { > > if (__n == 0 && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); > if (__n) > _M_assign(__r->_M_refdata(), __n, __c); > > __r->_M_set_length_and_sharable(__n); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str) > : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()), > __str.get_allocator()), > __str.get_allocator()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _Alloc& __a) > : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, size_type __n) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, _Alloc()), _Alloc()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, > size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : > __s + npos, __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(size_type __n, _CharT __c, const _Alloc& __a) > : _M_dataplus(_S_construct(__n, __c, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) > : _M_dataplus(_S_construct(__beg, __end, __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const basic_string& __str) > { > if (_M_rep() != __str._M_rep()) > { > > const allocator_type __a = this->get_allocator(); > _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const _CharT* __s, size_type __n) > { > ; > _M_check_length(this->size(), __n, "basic_string::assign"); > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(size_type(0), this->size(), __s, __n); > else > { > > const size_type __pos = __s - _M_data(); > if (__pos >= __n) > _M_copy(_M_data(), __s, __n); > else if (__pos) > _M_move(_M_data(), __s, __n); > _M_rep()->_M_set_length_and_sharable(__n); > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(size_type __n, _CharT __c) > { > if (__n) > { > _M_check_length(size_type(0), __n, "basic_string::append"); > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_assign(_M_data() + this->size(), __n, __c); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const _CharT* __s, size_type __n) > { > ; > if (__n) > { > _M_check_length(size_type(0), __n, "basic_string::append"); > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > { > if (_M_disjunct(__s)) > this->reserve(__len); > else > { > const size_type __off = __s - _M_data(); > this->reserve(__len); > __s = _M_data() + __off; > } > } > _M_copy(_M_data() + this->size(), __s, __n); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str) > { > const size_type __size = __str.size(); > if (__size) > { > const size_type __len = __size + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_copy(_M_data() + this->size(), __str._M_data(), __size); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str, size_type __pos, size_type __n) > { > __str._M_check(__pos, "basic_string::append"); > __n = __str._M_limit(__pos, __n); > if (__n) > { > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > insert(size_type __pos, const _CharT* __s, size_type __n) > { > ; > _M_check(__pos, "basic_string::insert"); > _M_check_length(size_type(0), __n, "basic_string::insert"); > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(__pos, size_type(0), __s, __n); > else > { > > const size_type __off = __s - _M_data(); > _M_mutate(__pos, 0, __n); > __s = _M_data() + __off; > _CharT* __p = _M_data() + __pos; > if (__s + __n <= __p) > _M_copy(__p, __s, __n); > else if (__s >= __p) > _M_copy(__p, __s + __n, __n); > else > { > const size_type __nleft = __p - __s; > _M_copy(__p, __s, __nleft); > _M_copy(__p + __nleft, __p + __n, __n - __nleft); > } > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) > { > ; > _M_check(__pos, "basic_string::replace"); > __n1 = _M_limit(__pos, __n1); > _M_check_length(__n1, __n2, "basic_string::replace"); > bool __left; > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(__pos, __n1, __s, __n2); > else if ((__left = __s + __n2 <= _M_data() + __pos) > || _M_data() + __pos + __n1 <= __s) > { > > size_type __off = __s - _M_data(); > __left ? __off : (__off += __n2 - __n1); > _M_mutate(__pos, __n1, __n2); > _M_copy(_M_data() + __pos, _M_data() + __off, __n2); > return *this; > } > else > { > > const basic_string __tmp(__s, __n2); > return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_destroy(const _Alloc& __a) throw () > { > const size_type __size = sizeof(_Rep_base) + > (this->_M_capacity + 1) * sizeof(_CharT); > _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > _M_leak_hard() > { > > if (_M_rep() == &_S_empty_rep()) > return; > > if (_M_rep()->_M_is_shared()) > _M_mutate(0, 0, 0); > _M_rep()->_M_set_leaked(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > _M_mutate(size_type __pos, size_type __len1, size_type __len2) > { > const size_type __old_size = this->size(); > const size_type __new_size = __old_size + __len2 - __len1; > const size_type __how_much = __old_size - __pos - __len1; > > if (__new_size > this->capacity() || _M_rep()->_M_is_shared()) > { > > const allocator_type __a = get_allocator(); > _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a); > > if (__pos) > _M_copy(__r->_M_refdata(), _M_data(), __pos); > if (__how_much) > _M_copy(__r->_M_refdata() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > > _M_rep()->_M_dispose(__a); > _M_data(__r->_M_refdata()); > } > else if (__how_much && __len1 != __len2) > { > > _M_move(_M_data() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > } > _M_rep()->_M_set_length_and_sharable(__new_size); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > reserve(size_type __res) > { > if (__res != this->capacity() || _M_rep()->_M_is_shared()) > { > > if (__res < this->size()) > __res = this->size(); > const allocator_type __a = get_allocator(); > _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > swap(basic_string& __s) > { > if (_M_rep()->_M_is_leaked()) > _M_rep()->_M_set_sharable(); > if (__s._M_rep()->_M_is_leaked()) > __s._M_rep()->_M_set_sharable(); > if (this->get_allocator() == __s.get_allocator()) > { > _CharT* __tmp = _M_data(); > _M_data(__s._M_data()); > __s._M_data(__tmp); > } > > else > { > const basic_string __tmp1(_M_ibegin(), _M_iend(), > __s.get_allocator()); > const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), > this->get_allocator()); > *this = __tmp2; > __s = __tmp1; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::_Rep* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _S_create(size_type __capacity, size_type __old_capacity, > const _Alloc& __alloc) > { > > > if (__capacity > _S_max_size) > __throw_length_error(("basic_string::_S_create")); ># 552 "/usr/include/c++/4.3/bits/basic_string.tcc" 3 > const size_type __pagesize = 4096; > const size_type __malloc_header_size = 4 * sizeof(void*); > > > > > > > > if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) > __capacity = 2 * __old_capacity; > > > > > size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > > const size_type __adj_size = __size + __malloc_header_size; > if (__adj_size > __pagesize && __capacity > __old_capacity) > { > const size_type __extra = __pagesize - __adj_size % __pagesize; > __capacity += __extra / sizeof(_CharT); > > if (__capacity > _S_max_size) > __capacity = _S_max_size; > __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > } > > > > void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); > _Rep *__p = new (__place) _Rep; > __p->_M_capacity = __capacity; > > > > > > > > __p->_M_set_sharable(); > return __p; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_clone(const _Alloc& __alloc, size_type __res) > { > > const size_type __requested_cap = this->_M_length + __res; > _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity, > __alloc); > if (this->_M_length) > _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length); > > __r->_M_set_length_and_sharable(this->_M_length); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > resize(size_type __n, _CharT __c) > { > const size_type __size = this->size(); > _M_check_length(__size, __n, "basic_string::resize"); > if (__size < __n) > this->append(__n - __size, __c); > else if (__n < __size) > this->erase(__n); > > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type) > { > const basic_string __s(__k1, __k2); > const size_type __n1 = __i2 - __i1; > _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch"); > return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(), > __s.size()); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, > _CharT __c) > { > _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); > _M_mutate(__pos1, __n1, __n2); > if (__n2) > _M_assign(_M_data() + __pos1, __n2, __c); > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, > size_type __n2) > { > _M_mutate(__pos1, __n1, __n2); > if (__n2) > _M_copy(_M_data() + __pos1, __s, __n2); > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > ; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > const __size_type __len = _Traits::length(__lhs); > __string_type __str; > __str.reserve(__len + __rhs.size()); > __str.append(__lhs, __len); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str; > const __size_type __len = __rhs.size(); > __str.reserve(__len + 1); > __str.append(__size_type(1), __lhs); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > copy(_CharT* __s, size_type __n, size_type __pos) const > { > _M_check(__pos, "basic_string::copy"); > __n = _M_limit(__pos, __n); > ; > if (__n) > _M_copy(__s, _M_data() + __pos, __n); > > return __n; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > const _CharT* __data = _M_data(); > > if (__n == 0) > return __pos <= __size ? __pos : npos; > > if (__n <= __size) > { > for (; __pos <= __size - __n; ++__pos) > if (traits_type::eq(__data[__pos], __s[0]) > && traits_type::compare(__data + __pos + 1, > __s + 1, __n - 1) == 0) > return __pos; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(_CharT __c, size_type __pos) const > { > size_type __ret = npos; > const size_type __size = this->size(); > if (__pos < __size) > { > const _CharT* __data = _M_data(); > const size_type __n = __size - __pos; > const _CharT* __p = traits_type::find(__data + __pos, __n, __c); > if (__p) > __ret = __p - __data; > } > return __ret; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > if (__n <= __size) > { > __pos = std::min(size_type(__size - __n), __pos); > const _CharT* __data = _M_data(); > do > { > if (traits_type::compare(__data + __pos, __s, __n) == 0) > return __pos; > } > while (__pos-- > 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > for (++__size; __size-- > 0; ) > if (traits_type::eq(_M_data()[__size], __c)) > return __size; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __n && __pos < this->size(); ++__pos) > { > const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); > if (__p) > return __pos; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size && __n) > { > if (--__size > __pos) > __size = __pos; > do > { > if (traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size-- != 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __pos < this->size(); ++__pos) > if (!traits_type::find(__s, __n, _M_data()[__pos])) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(_CharT __c, size_type __pos) const > { > for (; __pos < this->size(); ++__pos) > if (!traits_type::eq(_M_data()[__pos], __c)) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::eq(_M_data()[__size], __c)) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n, const basic_string& __str) const > { > _M_check(__pos, "basic_string::compare"); > __n = _M_limit(__pos, __n); > const size_type __osize = __str.size(); > const size_type __len = std::min(__n, __osize); > int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); > if (!__r) > __r = _S_compare(__n, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const > { > _M_check(__pos1, "basic_string::compare"); > __str._M_check(__pos2, "basic_string::compare"); > __n1 = _M_limit(__pos1, __n1); > __n2 = __str._M_limit(__pos2, __n2); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos1, > __str.data() + __pos2, __len); > if (!__r) > __r = _S_compare(__n1, __n2); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(const _CharT* __s) const > { > ; > const size_type __size = this->size(); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__size, __osize); > int __r = traits_type::compare(_M_data(), __s, __len); > if (!__r) > __r = _S_compare(__size, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__n1, __osize); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = _S_compare(__n1, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = _S_compare(__n1, __n2); > return __r; > } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __istream_type::ios_base __ios_base; > typedef typename __istream_type::int_type __int_type; > typedef typename __string_type::size_type __size_type; > typedef ctype<_CharT> __ctype_type; > typedef typename __ctype_type::ctype_base __ctype_base; > > __size_type __extracted = 0; > typename __ios_base::iostate __err = __ios_base::goodbit; > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > __str.erase(); > _CharT __buf[128]; > __size_type __len = 0; > const streamsize __w = __in.width(); > const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) > : __str.max_size(); > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __int_type __c = __in.rdbuf()->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(__ctype_base::space, > _Traits::to_char_type(__c))) > { > if (__len == sizeof(__buf) / sizeof(_CharT)) > { > __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); > __len = 0; > } > __buf[__len++] = _Traits::to_char_type(__c); > ++__extracted; > __c = __in.rdbuf()->snextc(); > } > __str.append(__buf, __len); > > if (_Traits::eq_int_type(__c, __eof)) > __err |= __ios_base::eofbit; > __in.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { > > > > __in._M_setstate(__ios_base::badbit); > } > } > > if (!__extracted) > __err |= __ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __istream_type::ios_base __ios_base; > typedef typename __istream_type::int_type __int_type; > typedef typename __string_type::size_type __size_type; > > __size_type __extracted = 0; > const __size_type __n = __str.max_size(); > typename __ios_base::iostate __err = __ios_base::goodbit; > typename __istream_type::sentry __cerb(__in, true); > if (__cerb) > { > try > { > __str.erase(); > const __int_type __idelim = _Traits::to_int_type(__delim); > const __int_type __eof = _Traits::eof(); > __int_type __c = __in.rdbuf()->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !_Traits::eq_int_type(__c, __idelim)) > { > __str += _Traits::to_char_type(__c); > ++__extracted; > __c = __in.rdbuf()->snextc(); > } > > if (_Traits::eq_int_type(__c, __eof)) > __err |= __ios_base::eofbit; > else if (_Traits::eq_int_type(__c, __idelim)) > { > ++__extracted; > __in.rdbuf()->sbumpc(); > } > else > __err |= __ios_base::failbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { > > > > __in._M_setstate(__ios_base::badbit); > } > } > if (!__extracted) > __err |= __ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > > > > > extern template class basic_string<char>; > extern template > basic_istream<char>& > operator>>(basic_istream<char>&, string&); > extern template > basic_ostream<char>& > operator<<(basic_ostream<char>&, const string&); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&, char); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&); > > > extern template class basic_string<wchar_t>; > extern template > basic_istream<wchar_t>& > operator>>(basic_istream<wchar_t>&, wstring&); > extern template > basic_ostream<wchar_t>& > operator<<(basic_ostream<wchar_t>&, const wstring&); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&, wchar_t); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&); > > > >} ># 62 "/usr/include/c++/4.3/string" 2 3 ># 48 "/usr/include/c++/4.3/bits/locale_classes.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 66 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > class locale > { > public: > > > typedef int category; > > > class facet; > class id; > class _Impl; > > friend class facet; > friend class _Impl; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; ># 102 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > static const category none = 0; > static const category ctype = 1L << 0; > static const category numeric = 1L << 1; > static const category collate = 1L << 2; > static const category time = 1L << 3; > static const category monetary = 1L << 4; > static const category messages = 1L << 5; > static const category all = (ctype | numeric | collate | > time | monetary | messages); ># 121 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > locale() throw(); ># 130 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > locale(const locale& __other) throw(); ># 140 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > explicit > locale(const char* __s); ># 155 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > locale(const locale& __base, const char* __s, category __cat); ># 168 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > locale(const locale& __base, const locale& __add, category __cat); ># 180 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _Facet> > locale(const locale& __other, _Facet* __f); > > > ~locale() throw(); ># 194 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > const locale& > operator=(const locale& __other) throw(); ># 209 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _Facet> > locale > combine(const locale& __other) const; > > > > > > > string > name() const; ># 228 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > bool > operator==(const locale& __other) const throw (); > > > > > > > > bool > operator!=(const locale& __other) const throw () > { return !(this->operator==(__other)); } ># 256 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _Char, typename _Traits, typename _Alloc> > bool > operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, > const basic_string<_Char, _Traits, _Alloc>& __s2) const; ># 272 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > static locale > global(const locale&); > > > > > static const locale& > classic(); > > private: > > _Impl* _M_impl; > > > static _Impl* _S_classic; > > > static _Impl* _S_global; > > > > > > static const char* const* const _S_categories; ># 307 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > enum { _S_categories_size = 6 + 6 }; > > > static __gthread_once_t _S_once; > > > explicit > locale(_Impl*) throw(); > > static void > _S_initialize(); > > static void > _S_initialize_once(); > > static category > _S_normalize_category(category); > > void > _M_coalesce(const locale& __base, const locale& __add, category __cat); > }; ># 340 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > class locale::facet > { > private: > friend class locale; > friend class locale::_Impl; > > mutable _Atomic_word _M_refcount; > > > static __c_locale _S_c_locale; > > > static const char _S_c_name[2]; > > > static __gthread_once_t _S_once; > > > static void > _S_initialize_once(); > > protected: ># 371 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > explicit > facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) > { } > > > virtual > ~facet(); > > static void > _S_create_c_locale(__c_locale& __cloc, const char* __s, > __c_locale __old = 0); > > static __c_locale > _S_clone_c_locale(__c_locale& __cloc); > > static void > _S_destroy_c_locale(__c_locale& __cloc); > > > > static __c_locale > _S_get_c_locale(); > > static const char* > _S_get_c_name(); > > private: > void > _M_add_reference() const throw() > { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } > > void > _M_remove_reference() const throw() > { > if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) > { > try > { delete this; } > catch(...) > { } > } > } > > facet(const facet&); > > facet& > operator=(const facet&); > }; ># 431 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > class locale::id > { > private: > friend class locale; > friend class locale::_Impl; > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Facet> > friend bool > has_facet(const locale&) throw (); > > > > > mutable size_t _M_index; > > > static _Atomic_word _S_refcount; > > void > operator=(const id&); > > id(const id&); > > public: > > > > id() { } > > size_t > _M_id() const; > }; > > > > class locale::_Impl > { > public: > > friend class locale; > friend class locale::facet; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; > > private: > > _Atomic_word _M_refcount; > const facet** _M_facets; > size_t _M_facets_size; > const facet** _M_caches; > char** _M_names; > static const locale::id* const _S_id_ctype[]; > static const locale::id* const _S_id_numeric[]; > static const locale::id* const _S_id_collate[]; > static const locale::id* const _S_id_time[]; > static const locale::id* const _S_id_monetary[]; > static const locale::id* const _S_id_messages[]; > static const locale::id* const* const _S_facet_categories[]; > > void > _M_add_reference() throw() > { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } > > void > _M_remove_reference() throw() > { > if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) > { > try > { delete this; } > catch(...) > { } > } > } > > _Impl(const _Impl&, size_t); > _Impl(const char*, size_t); > _Impl(size_t) throw(); > > ~_Impl() throw(); > > _Impl(const _Impl&); > > void > operator=(const _Impl&); > > bool > _M_check_same_name() > { > bool __ret = true; > if (_M_names[1]) > > for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) > __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; > return __ret; > } > > void > _M_replace_categories(const _Impl*, category); > > void > _M_replace_category(const _Impl*, const locale::id* const*); > > void > _M_replace_facet(const _Impl*, const locale::id*); > > void > _M_install_facet(const locale::id*, const facet*); > > template<typename _Facet> > void > _M_init_facet(_Facet* __facet) > { _M_install_facet(&_Facet::id, __facet); } > > void > _M_install_cache(const facet*, size_t); > }; ># 574 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _Facet> > bool > has_facet(const locale& __loc) throw(); ># 591 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _Facet> > const _Facet& > use_facet(const locale& __loc); ># 608 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > template<typename _CharT> > class collate : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > protected: > > > __c_locale _M_c_locale_collate; > > public: > > static locale::id id; ># 635 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > explicit > collate(size_t __refs = 0) > : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) > { } ># 649 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > explicit > collate(__c_locale __cloc, size_t __refs = 0) > : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) > { } ># 666 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > int > compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const > { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } ># 685 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > string_type > transform(const _CharT* __lo, const _CharT* __hi) const > { return this->do_transform(__lo, __hi); } ># 699 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > long > hash(const _CharT* __lo, const _CharT* __hi) const > { return this->do_hash(__lo, __hi); } > > > int > _M_compare(const _CharT*, const _CharT*) const; > > size_t > _M_transform(_CharT*, const _CharT*, size_t) const; > > protected: > > virtual > ~collate() > { _S_destroy_c_locale(_M_c_locale_collate); } ># 728 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > virtual int > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const; ># 744 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > virtual string_type > do_transform(const _CharT* __lo, const _CharT* __hi) const; ># 757 "/usr/include/c++/4.3/bits/locale_classes.h" 3 > virtual long > do_hash(const _CharT* __lo, const _CharT* __hi) const; > }; > > template<typename _CharT> > locale::id collate<_CharT>::id; > > > template<> > int > collate<char>::_M_compare(const char*, const char*) const; > > template<> > size_t > collate<char>::_M_transform(char*, const char*, size_t) const; > > > template<> > int > collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const; > > template<> > size_t > collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const; > > > > template<typename _CharT> > class collate_byname : public collate<_CharT> > { > public: > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > explicit > collate_byname(const char* __s, size_t __refs = 0) > : collate<_CharT>(__refs) > { > if (__builtin_strcmp(__s, "C") != 0 > && __builtin_strcmp(__s, "POSIX") != 0) > { > this->_S_destroy_c_locale(this->_M_c_locale_collate); > this->_S_create_c_locale(this->_M_c_locale_collate, __s); > } > } > > protected: > virtual > ~collate_byname() { } > }; > >} > > ># 1 "/usr/include/c++/4.3/bits/locale_classes.tcc" 1 3 ># 42 "/usr/include/c++/4.3/bits/locale_classes.tcc" 3 > ># 43 "/usr/include/c++/4.3/bits/locale_classes.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _Facet> > locale:: > locale(const locale& __other, _Facet* __f) > { > _M_impl = new _Impl(*__other._M_impl, 1); > > try > { _M_impl->_M_install_facet(&_Facet::id, __f); } > catch(...) > { > _M_impl->_M_remove_reference(); > throw; > } > delete [] _M_impl->_M_names[0]; > _M_impl->_M_names[0] = 0; > } > > template<typename _Facet> > locale > locale:: > combine(const locale& __other) const > { > _Impl* __tmp = new _Impl(*_M_impl, 1); > try > { > __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); > } > catch(...) > { > __tmp->_M_remove_reference(); > throw; > } > return locale(__tmp); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > bool > locale:: > operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, > const basic_string<_CharT, _Traits, _Alloc>& __s2) const > { > typedef std::collate<_CharT> __collate_type; > const __collate_type& __collate = use_facet<__collate_type>(*this); > return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), > __s2.data(), __s2.data() + __s2.length()) < 0); > } > > > template<typename _Facet> > bool > has_facet(const locale& __loc) throw() > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > return (__i < __loc._M_impl->_M_facets_size > > && dynamic_cast<const _Facet*>(__facets[__i])); > > > > } > > template<typename _Facet> > const _Facet& > use_facet(const locale& __loc) > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) > __throw_bad_cast(); > > return dynamic_cast<const _Facet&>(*__facets[__i]); > > > > } > > > > template<typename _CharT> > int > collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const > { return 0; } > > > template<typename _CharT> > size_t > collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const > { return 0; } > > template<typename _CharT> > int > collate<_CharT>:: > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const > { > > > const string_type __one(__lo1, __hi1); > const string_type __two(__lo2, __hi2); > > const _CharT* __p = __one.c_str(); > const _CharT* __pend = __one.data() + __one.length(); > const _CharT* __q = __two.c_str(); > const _CharT* __qend = __two.data() + __two.length(); > > > > > for (;;) > { > const int __res = _M_compare(__p, __q); > if (__res) > return __res; > > __p += char_traits<_CharT>::length(__p); > __q += char_traits<_CharT>::length(__q); > if (__p == __pend && __q == __qend) > return 0; > else if (__p == __pend) > return -1; > else if (__q == __qend) > return 1; > > __p++; > __q++; > } > } > > template<typename _CharT> > typename collate<_CharT>::string_type > collate<_CharT>:: > do_transform(const _CharT* __lo, const _CharT* __hi) const > { > string_type __ret; > > > const string_type __str(__lo, __hi); > > const _CharT* __p = __str.c_str(); > const _CharT* __pend = __str.data() + __str.length(); > > size_t __len = (__hi - __lo) * 2; > > _CharT* __c = new _CharT[__len]; > > try > { > > > > for (;;) > { > > size_t __res = _M_transform(__c, __p, __len); > > > if (__res >= __len) > { > __len = __res + 1; > delete [] __c, __c = 0; > __c = new _CharT[__len]; > __res = _M_transform(__c, __p, __len); > } > > __ret.append(__c, __res); > __p += char_traits<_CharT>::length(__p); > if (__p == __pend) > break; > > __p++; > __ret.push_back(_CharT()); > } > } > catch(...) > { > delete [] __c; > throw; > } > > delete [] __c; > > return __ret; > } > > template<typename _CharT> > long > collate<_CharT>:: > do_hash(const _CharT* __lo, const _CharT* __hi) const > { > unsigned long __val = 0; > for (; __lo < __hi; ++__lo) > __val = > *__lo + ((__val << 7) > | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>:: > __digits - 7))); > return static_cast<long>(__val); > } > > > > > > extern template class collate<char>; > extern template class collate_byname<char>; > > extern template > const collate<char>& > use_facet<collate<char> >(const locale&); > > extern template > bool > has_facet<collate<char> >(const locale&); > > > extern template class collate<wchar_t>; > extern template class collate_byname<wchar_t>; > > extern template > const collate<wchar_t>& > use_facet<collate<wchar_t> >(const locale&); > > extern template > bool > has_facet<collate<wchar_t> >(const locale&); > > > >} ># 815 "/usr/include/c++/4.3/bits/locale_classes.h" 2 3 ># 49 "/usr/include/c++/4.3/bits/ios_base.h" 2 3 ># 1 "/usr/include/c++/4.3/cstdio" 1 3 ># 46 "/usr/include/c++/4.3/cstdio" 3 > ># 47 "/usr/include/c++/4.3/cstdio" 3 > > ># 1 "/usr/include/c++/4.3/cstddef" 1 3 ># 45 "/usr/include/c++/4.3/cstddef" 3 > ># 46 "/usr/include/c++/4.3/cstddef" 3 > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 49 "/usr/include/c++/4.3/cstddef" 2 3 ># 50 "/usr/include/c++/4.3/cstdio" 2 3 ># 50 "/usr/include/c++/4.3/bits/ios_base.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > > > > enum _Ios_Fmtflags > { > _S_boolalpha = 1L << 0, > _S_dec = 1L << 1, > _S_fixed = 1L << 2, > _S_hex = 1L << 3, > _S_internal = 1L << 4, > _S_left = 1L << 5, > _S_oct = 1L << 6, > _S_right = 1L << 7, > _S_scientific = 1L << 8, > _S_showbase = 1L << 9, > _S_showpoint = 1L << 10, > _S_showpos = 1L << 11, > _S_skipws = 1L << 12, > _S_unitbuf = 1L << 13, > _S_uppercase = 1L << 14, > _S_adjustfield = _S_left | _S_right | _S_internal, > _S_basefield = _S_dec | _S_oct | _S_hex, > _S_floatfield = _S_scientific | _S_fixed, > _S_ios_fmtflags_end = 1L << 16 > }; > > inline _Ios_Fmtflags > operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Fmtflags& > operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a | __b; } > > inline _Ios_Fmtflags& > operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a & __b; } > > inline _Ios_Fmtflags& > operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a ^ __b; } > > inline _Ios_Fmtflags > operator~(_Ios_Fmtflags __a) > { return _Ios_Fmtflags(~static_cast<int>(__a)); } > > > enum _Ios_Openmode > { > _S_app = 1L << 0, > _S_ate = 1L << 1, > _S_bin = 1L << 2, > _S_in = 1L << 3, > _S_out = 1L << 4, > _S_trunc = 1L << 5, > _S_ios_openmode_end = 1L << 16 > }; > > inline _Ios_Openmode > operator&(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Openmode > operator|(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Openmode > operator^(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Openmode& > operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a | __b; } > > inline _Ios_Openmode& > operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a & __b; } > > inline _Ios_Openmode& > operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a ^ __b; } > > inline _Ios_Openmode > operator~(_Ios_Openmode __a) > { return _Ios_Openmode(~static_cast<int>(__a)); } > > > enum _Ios_Iostate > { > _S_goodbit = 0, > _S_badbit = 1L << 0, > _S_eofbit = 1L << 1, > _S_failbit = 1L << 2, > _S_ios_iostate_end = 1L << 16 > }; > > inline _Ios_Iostate > operator&(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Iostate > operator|(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Iostate > operator^(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Iostate& > operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a | __b; } > > inline _Ios_Iostate& > operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a & __b; } > > inline _Ios_Iostate& > operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a ^ __b; } > > inline _Ios_Iostate > operator~(_Ios_Iostate __a) > { return _Ios_Iostate(~static_cast<int>(__a)); } > > enum _Ios_Seekdir > { > _S_beg = 0, > _S_cur = 1, > _S_end = 2, > _S_ios_seekdir_end = 1L << 16 > }; ># 203 "/usr/include/c++/4.3/bits/ios_base.h" 3 > class ios_base > { > public: > > > > class failure : public exception > { > public: > > > explicit > failure(const string& __str) throw(); > > > > virtual > ~failure() throw(); > > virtual const char* > what() const throw(); > > private: > string _M_msg; > }; ># 255 "/usr/include/c++/4.3/bits/ios_base.h" 3 > typedef _Ios_Fmtflags fmtflags; > > > static const fmtflags boolalpha = _S_boolalpha; > > > static const fmtflags dec = _S_dec; > > > static const fmtflags fixed = _S_fixed; > > > static const fmtflags hex = _S_hex; > > > > > static const fmtflags internal = _S_internal; > > > > static const fmtflags left = _S_left; > > > static const fmtflags oct = _S_oct; > > > > static const fmtflags right = _S_right; > > > static const fmtflags scientific = _S_scientific; > > > > static const fmtflags showbase = _S_showbase; > > > > static const fmtflags showpoint = _S_showpoint; > > > static const fmtflags showpos = _S_showpos; > > > static const fmtflags skipws = _S_skipws; > > > static const fmtflags unitbuf = _S_unitbuf; > > > > static const fmtflags uppercase = _S_uppercase; > > > static const fmtflags adjustfield = _S_adjustfield; > > > static const fmtflags basefield = _S_basefield; > > > static const fmtflags floatfield = _S_floatfield; ># 330 "/usr/include/c++/4.3/bits/ios_base.h" 3 > typedef _Ios_Iostate iostate; > > > > static const iostate badbit = _S_badbit; > > > static const iostate eofbit = _S_eofbit; > > > > > static const iostate failbit = _S_failbit; > > > static const iostate goodbit = _S_goodbit; ># 361 "/usr/include/c++/4.3/bits/ios_base.h" 3 > typedef _Ios_Openmode openmode; > > > static const openmode app = _S_app; > > > static const openmode ate = _S_ate; > > > > > > static const openmode binary = _S_bin; > > > static const openmode in = _S_in; > > > static const openmode out = _S_out; > > > static const openmode trunc = _S_trunc; ># 394 "/usr/include/c++/4.3/bits/ios_base.h" 3 > typedef _Ios_Seekdir seekdir; > > > static const seekdir beg = _S_beg; > > > static const seekdir cur = _S_cur; > > > static const seekdir end = _S_end; > > > typedef int io_state; > typedef int open_mode; > typedef int seek_dir; > > typedef std::streampos streampos; > typedef std::streamoff streamoff; ># 420 "/usr/include/c++/4.3/bits/ios_base.h" 3 > enum event > { > erase_event, > imbue_event, > copyfmt_event > }; ># 437 "/usr/include/c++/4.3/bits/ios_base.h" 3 > typedef void (*event_callback) (event, ios_base&, int); ># 449 "/usr/include/c++/4.3/bits/ios_base.h" 3 > void > register_callback(event_callback __fn, int __index); > > protected: > > > > > streamsize _M_precision; > streamsize _M_width; > fmtflags _M_flags; > iostate _M_exception; > iostate _M_streambuf_state; > > > > > struct _Callback_list > { > > _Callback_list* _M_next; > ios_base::event_callback _M_fn; > int _M_index; > _Atomic_word _M_refcount; > > _Callback_list(ios_base::event_callback __fn, int __index, > _Callback_list* __cb) > : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } > > void > _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } > > > int > _M_remove_reference() > { return __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); } > }; > > _Callback_list* _M_callbacks; > > void > _M_call_callbacks(event __ev) throw(); > > void > _M_dispose_callbacks(void); > > > struct _Words > { > void* _M_pword; > long _M_iword; > _Words() : _M_pword(0), _M_iword(0) { } > }; > > > _Words _M_word_zero; > > > > enum { _S_local_word_size = 8 }; > _Words _M_local_word[_S_local_word_size]; > > > int _M_word_size; > _Words* _M_word; > > _Words& > _M_grow_words(int __index, bool __iword); > > > locale _M_ios_locale; > > void > _M_init(); > > public: > > > > > > class Init > { > friend class ios_base; > public: > Init(); > ~Init(); > > private: > static _Atomic_word _S_refcount; > static bool _S_synced_with_stdio; > }; > > > > > > > fmtflags > flags() const > { return _M_flags; } ># 558 "/usr/include/c++/4.3/bits/ios_base.h" 3 > fmtflags > flags(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags = __fmtfl; > return __old; > } ># 574 "/usr/include/c++/4.3/bits/ios_base.h" 3 > fmtflags > setf(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags |= __fmtfl; > return __old; > } ># 591 "/usr/include/c++/4.3/bits/ios_base.h" 3 > fmtflags > setf(fmtflags __fmtfl, fmtflags __mask) > { > fmtflags __old = _M_flags; > _M_flags &= ~__mask; > _M_flags |= (__fmtfl & __mask); > return __old; > } > > > > > > > > void > unsetf(fmtflags __mask) > { _M_flags &= ~__mask; } ># 617 "/usr/include/c++/4.3/bits/ios_base.h" 3 > streamsize > precision() const > { return _M_precision; } > > > > > > > streamsize > precision(streamsize __prec) > { > streamsize __old = _M_precision; > _M_precision = __prec; > return __old; > } > > > > > > > > streamsize > width() const > { return _M_width; } > > > > > > > streamsize > width(streamsize __wide) > { > streamsize __old = _M_width; > _M_width = __wide; > return __old; > } ># 668 "/usr/include/c++/4.3/bits/ios_base.h" 3 > static bool > sync_with_stdio(bool __sync = true); ># 680 "/usr/include/c++/4.3/bits/ios_base.h" 3 > locale > imbue(const locale& __loc); ># 691 "/usr/include/c++/4.3/bits/ios_base.h" 3 > locale > getloc() const > { return _M_ios_locale; } ># 702 "/usr/include/c++/4.3/bits/ios_base.h" 3 > const locale& > _M_getloc() const > { return _M_ios_locale; } ># 721 "/usr/include/c++/4.3/bits/ios_base.h" 3 > static int > xalloc() throw(); ># 737 "/usr/include/c++/4.3/bits/ios_base.h" 3 > long& > iword(int __ix) > { > _Words& __word = (__ix < _M_word_size) > ? _M_word[__ix] : _M_grow_words(__ix, true); > return __word._M_iword; > } ># 758 "/usr/include/c++/4.3/bits/ios_base.h" 3 > void*& > pword(int __ix) > { > _Words& __word = (__ix < _M_word_size) > ? _M_word[__ix] : _M_grow_words(__ix, false); > return __word._M_pword; > } ># 775 "/usr/include/c++/4.3/bits/ios_base.h" 3 > virtual ~ios_base(); > > protected: > ios_base(); > > > > private: > ios_base(const ios_base&); > > ios_base& > operator=(const ios_base&); > }; > > > > inline ios_base& > boolalpha(ios_base& __base) > { > __base.setf(ios_base::boolalpha); > return __base; > } > > > inline ios_base& > noboolalpha(ios_base& __base) > { > __base.unsetf(ios_base::boolalpha); > return __base; > } > > > inline ios_base& > showbase(ios_base& __base) > { > __base.setf(ios_base::showbase); > return __base; > } > > > inline ios_base& > noshowbase(ios_base& __base) > { > __base.unsetf(ios_base::showbase); > return __base; > } > > > inline ios_base& > showpoint(ios_base& __base) > { > __base.setf(ios_base::showpoint); > return __base; > } > > > inline ios_base& > noshowpoint(ios_base& __base) > { > __base.unsetf(ios_base::showpoint); > return __base; > } > > > inline ios_base& > showpos(ios_base& __base) > { > __base.setf(ios_base::showpos); > return __base; > } > > > inline ios_base& > noshowpos(ios_base& __base) > { > __base.unsetf(ios_base::showpos); > return __base; > } > > > inline ios_base& > skipws(ios_base& __base) > { > __base.setf(ios_base::skipws); > return __base; > } > > > inline ios_base& > noskipws(ios_base& __base) > { > __base.unsetf(ios_base::skipws); > return __base; > } > > > inline ios_base& > uppercase(ios_base& __base) > { > __base.setf(ios_base::uppercase); > return __base; > } > > > inline ios_base& > nouppercase(ios_base& __base) > { > __base.unsetf(ios_base::uppercase); > return __base; > } > > > inline ios_base& > unitbuf(ios_base& __base) > { > __base.setf(ios_base::unitbuf); > return __base; > } > > > inline ios_base& > nounitbuf(ios_base& __base) > { > __base.unsetf(ios_base::unitbuf); > return __base; > } > > > > inline ios_base& > internal(ios_base& __base) > { > __base.setf(ios_base::internal, ios_base::adjustfield); > return __base; > } > > > inline ios_base& > left(ios_base& __base) > { > __base.setf(ios_base::left, ios_base::adjustfield); > return __base; > } > > > inline ios_base& > right(ios_base& __base) > { > __base.setf(ios_base::right, ios_base::adjustfield); > return __base; > } > > > > inline ios_base& > dec(ios_base& __base) > { > __base.setf(ios_base::dec, ios_base::basefield); > return __base; > } > > > inline ios_base& > hex(ios_base& __base) > { > __base.setf(ios_base::hex, ios_base::basefield); > return __base; > } > > > inline ios_base& > oct(ios_base& __base) > { > __base.setf(ios_base::oct, ios_base::basefield); > return __base; > } > > > > inline ios_base& > fixed(ios_base& __base) > { > __base.setf(ios_base::fixed, ios_base::floatfield); > return __base; > } > > > inline ios_base& > scientific(ios_base& __base) > { > __base.setf(ios_base::scientific, ios_base::floatfield); > return __base; > } > >} ># 49 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/streambuf" 1 3 ># 42 "/usr/include/c++/4.3/streambuf" 3 > ># 43 "/usr/include/c++/4.3/streambuf" 3 ># 51 "/usr/include/c++/4.3/streambuf" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, > basic_streambuf<_CharT, _Traits>*, bool&); ># 118 "/usr/include/c++/4.3/streambuf" 3 > template<typename _CharT, typename _Traits> > class basic_streambuf > { > public: > > > > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > > > typedef basic_streambuf<char_type, traits_type> __streambuf_type; > > > friend class basic_ios<char_type, traits_type>; > friend class basic_istream<char_type, traits_type>; > friend class basic_ostream<char_type, traits_type>; > friend class istreambuf_iterator<char_type, traits_type>; > friend class ostreambuf_iterator<char_type, traits_type>; > > friend streamsize > __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&); > > template<bool _IsMove, typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > _CharT2*>::__type > __copy_move_a2(istreambuf_iterator<_CharT2>, > istreambuf_iterator<_CharT2>, _CharT2*); > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > istreambuf_iterator<_CharT2> >::__type > find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > const _CharT2&); > > template<typename _CharT2, typename _Traits2> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); > > template<typename _CharT2, typename _Traits2, typename _Alloc> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, > basic_string<_CharT2, _Traits2, _Alloc>&); > > template<typename _CharT2, typename _Traits2, typename _Alloc> > friend basic_istream<_CharT2, _Traits2>& > getline(basic_istream<_CharT2, _Traits2>&, > basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); > > protected: ># 184 "/usr/include/c++/4.3/streambuf" 3 > char_type* _M_in_beg; > char_type* _M_in_cur; > char_type* _M_in_end; > char_type* _M_out_beg; > char_type* _M_out_cur; > char_type* _M_out_end; > > > locale _M_buf_locale; > > public: > > virtual > ~basic_streambuf() > { } ># 208 "/usr/include/c++/4.3/streambuf" 3 > locale > pubimbue(const locale &__loc) > { > locale __tmp(this->getloc()); > this->imbue(__loc); > _M_buf_locale = __loc; > return __tmp; > } ># 225 "/usr/include/c++/4.3/streambuf" 3 > locale > getloc() const > { return _M_buf_locale; } ># 238 "/usr/include/c++/4.3/streambuf" 3 > __streambuf_type* > pubsetbuf(char_type* __s, streamsize __n) > { return this->setbuf(__s, __n); } > > pos_type > pubseekoff(off_type __off, ios_base::seekdir __way, > ios_base::openmode __mode = ios_base::in | ios_base::out) > { return this->seekoff(__off, __way, __mode); } > > pos_type > pubseekpos(pos_type __sp, > ios_base::openmode __mode = ios_base::in | ios_base::out) > { return this->seekpos(__sp, __mode); } > > int > pubsync() { return this->sync(); } ># 265 "/usr/include/c++/4.3/streambuf" 3 > streamsize > in_avail() > { > const streamsize __ret = this->egptr() - this->gptr(); > return __ret ? __ret : this->showmanyc(); > } ># 279 "/usr/include/c++/4.3/streambuf" 3 > int_type > snextc() > { > int_type __ret = traits_type::eof(); > if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), > __ret), true)) > __ret = this->sgetc(); > return __ret; > } ># 297 "/usr/include/c++/4.3/streambuf" 3 > int_type > sbumpc() > { > int_type __ret; > if (__builtin_expect(this->gptr() < this->egptr(), true)) > { > __ret = traits_type::to_int_type(*this->gptr()); > this->gbump(1); > } > else > __ret = this->uflow(); > return __ret; > } ># 319 "/usr/include/c++/4.3/streambuf" 3 > int_type > sgetc() > { > int_type __ret; > if (__builtin_expect(this->gptr() < this->egptr(), true)) > __ret = traits_type::to_int_type(*this->gptr()); > else > __ret = this->underflow(); > return __ret; > } ># 338 "/usr/include/c++/4.3/streambuf" 3 > streamsize > sgetn(char_type* __s, streamsize __n) > { return this->xsgetn(__s, __n); } ># 352 "/usr/include/c++/4.3/streambuf" 3 > int_type > sputbackc(char_type __c) > { > int_type __ret; > const bool __testpos = this->eback() < this->gptr(); > if (__builtin_expect(!__testpos || > !traits_type::eq(__c, this->gptr()[-1]), false)) > __ret = this->pbackfail(traits_type::to_int_type(__c)); > else > { > this->gbump(-1); > __ret = traits_type::to_int_type(*this->gptr()); > } > return __ret; > } ># 377 "/usr/include/c++/4.3/streambuf" 3 > int_type > sungetc() > { > int_type __ret; > if (__builtin_expect(this->eback() < this->gptr(), true)) > { > this->gbump(-1); > __ret = traits_type::to_int_type(*this->gptr()); > } > else > __ret = this->pbackfail(); > return __ret; > } ># 404 "/usr/include/c++/4.3/streambuf" 3 > int_type > sputc(char_type __c) > { > int_type __ret; > if (__builtin_expect(this->pptr() < this->epptr(), true)) > { > *this->pptr() = __c; > this->pbump(1); > __ret = traits_type::to_int_type(__c); > } > else > __ret = this->overflow(traits_type::to_int_type(__c)); > return __ret; > } ># 430 "/usr/include/c++/4.3/streambuf" 3 > streamsize > sputn(const char_type* __s, streamsize __n) > { return this->xsputn(__s, __n); } > > protected: ># 444 "/usr/include/c++/4.3/streambuf" 3 > basic_streambuf() > : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), > _M_out_beg(0), _M_out_cur(0), _M_out_end(0), > _M_buf_locale(locale()) > { } ># 462 "/usr/include/c++/4.3/streambuf" 3 > char_type* > eback() const { return _M_in_beg; } > > char_type* > gptr() const { return _M_in_cur; } > > char_type* > egptr() const { return _M_in_end; } ># 478 "/usr/include/c++/4.3/streambuf" 3 > void > gbump(int __n) { _M_in_cur += __n; } ># 489 "/usr/include/c++/4.3/streambuf" 3 > void > setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) > { > _M_in_beg = __gbeg; > _M_in_cur = __gnext; > _M_in_end = __gend; > } ># 509 "/usr/include/c++/4.3/streambuf" 3 > char_type* > pbase() const { return _M_out_beg; } > > char_type* > pptr() const { return _M_out_cur; } > > char_type* > epptr() const { return _M_out_end; } ># 525 "/usr/include/c++/4.3/streambuf" 3 > void > pbump(int __n) { _M_out_cur += __n; } ># 535 "/usr/include/c++/4.3/streambuf" 3 > void > setp(char_type* __pbeg, char_type* __pend) > { > _M_out_beg = _M_out_cur = __pbeg; > _M_out_end = __pend; > } ># 556 "/usr/include/c++/4.3/streambuf" 3 > virtual void > imbue(const locale&) > { } ># 571 "/usr/include/c++/4.3/streambuf" 3 > virtual basic_streambuf<char_type,_Traits>* > setbuf(char_type*, streamsize) > { return this; } ># 582 "/usr/include/c++/4.3/streambuf" 3 > virtual pos_type > seekoff(off_type, ios_base::seekdir, > ios_base::openmode = ios_base::in | ios_base::out) > { return pos_type(off_type(-1)); } ># 594 "/usr/include/c++/4.3/streambuf" 3 > virtual pos_type > seekpos(pos_type, > ios_base::openmode = ios_base::in | ios_base::out) > { return pos_type(off_type(-1)); } ># 607 "/usr/include/c++/4.3/streambuf" 3 > virtual int > sync() { return 0; } ># 629 "/usr/include/c++/4.3/streambuf" 3 > virtual streamsize > showmanyc() { return 0; } ># 645 "/usr/include/c++/4.3/streambuf" 3 > virtual streamsize > xsgetn(char_type* __s, streamsize __n); ># 667 "/usr/include/c++/4.3/streambuf" 3 > virtual int_type > underflow() > { return traits_type::eof(); } ># 680 "/usr/include/c++/4.3/streambuf" 3 > virtual int_type > uflow() > { > int_type __ret = traits_type::eof(); > const bool __testeof = traits_type::eq_int_type(this->underflow(), > __ret); > if (!__testeof) > { > __ret = traits_type::to_int_type(*this->gptr()); > this->gbump(1); > } > return __ret; > } ># 704 "/usr/include/c++/4.3/streambuf" 3 > virtual int_type > pbackfail(int_type = traits_type::eof()) > { return traits_type::eof(); } ># 722 "/usr/include/c++/4.3/streambuf" 3 > virtual streamsize > xsputn(const char_type* __s, streamsize __n); ># 747 "/usr/include/c++/4.3/streambuf" 3 > virtual int_type > overflow(int_type = traits_type::eof()) > { return traits_type::eof(); } > > > > public: ># 762 "/usr/include/c++/4.3/streambuf" 3 > void > stossc() > { > if (this->gptr() < this->egptr()) > this->gbump(1); > else > this->uflow(); > } > > > private: > > > basic_streambuf(const __streambuf_type& __sb) > : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur), > _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg), > _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur), > _M_buf_locale(__sb._M_buf_locale) > { } > > __streambuf_type& > operator=(const __streambuf_type&) { return *this; }; > }; > > > template<> > streamsize > __copy_streambufs_eof(basic_streambuf<char>* __sbin, > basic_streambuf<char>* __sbout, bool& __ineof); > > template<> > streamsize > __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin, > basic_streambuf<wchar_t>* __sbout, bool& __ineof); > > >} > > ># 1 "/usr/include/c++/4.3/bits/streambuf.tcc" 1 3 ># 43 "/usr/include/c++/4.3/bits/streambuf.tcc" 3 > ># 44 "/usr/include/c++/4.3/bits/streambuf.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsgetn(char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const streamsize __buf_len = this->egptr() - this->gptr(); > if (__buf_len) > { > const streamsize __remaining = __n - __ret; > const streamsize __len = std::min(__buf_len, __remaining); > traits_type::copy(__s, this->gptr(), __len); > __ret += __len; > __s += __len; > this->gbump(__len); > } > > if (__ret < __n) > { > const int_type __c = this->uflow(); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > traits_type::assign(*__s++, traits_type::to_char_type(__c)); > ++__ret; > } > else > break; > } > } > return __ret; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsputn(const char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const streamsize __buf_len = this->epptr() - this->pptr(); > if (__buf_len) > { > const streamsize __remaining = __n - __ret; > const streamsize __len = std::min(__buf_len, __remaining); > traits_type::copy(this->pptr(), __s, __len); > __ret += __len; > __s += __len; > this->pbump(__len); > } > > if (__ret < __n) > { > int_type __c = this->overflow(traits_type::to_int_type(*__s)); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > ++__ret; > ++__s; > } > else > break; > } > } > return __ret; > } > > > > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout, > bool& __ineof) > { > streamsize __ret = 0; > __ineof = true; > typename _Traits::int_type __c = __sbin->sgetc(); > while (!_Traits::eq_int_type(__c, _Traits::eof())) > { > __c = __sbout->sputc(_Traits::to_char_type(__c)); > if (_Traits::eq_int_type(__c, _Traits::eof())) > { > __ineof = false; > break; > } > ++__ret; > __c = __sbin->snextc(); > } > return __ret; > } > > template<typename _CharT, typename _Traits> > inline streamsize > __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout) > { > bool __ineof; > return __copy_streambufs_eof(__sbin, __sbout, __ineof); > } > > > > > > extern template class basic_streambuf<char>; > extern template > streamsize > __copy_streambufs(basic_streambuf<char>*, > basic_streambuf<char>*); > extern template > streamsize > __copy_streambufs_eof(basic_streambuf<char>*, > basic_streambuf<char>*, bool&); > > > extern template class basic_streambuf<wchar_t>; > extern template > streamsize > __copy_streambufs(basic_streambuf<wchar_t>*, > basic_streambuf<wchar_t>*); > extern template > streamsize > __copy_streambufs_eof(basic_streambuf<wchar_t>*, > basic_streambuf<wchar_t>*, bool&); > > > >} ># 802 "/usr/include/c++/4.3/streambuf" 2 3 ># 50 "/usr/include/c++/4.3/ios" 2 3 ># 1 "/usr/include/c++/4.3/bits/basic_ios.h" 1 3 ># 40 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > ># 41 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > > > ># 1 "/usr/include/c++/4.3/bits/locale_facets.h" 1 3 ># 44 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > ># 45 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > ># 1 "/usr/include/c++/4.3/cwctype" 1 3 ># 46 "/usr/include/c++/4.3/cwctype" 3 > ># 47 "/usr/include/c++/4.3/cwctype" 3 > > > > ># 1 "/usr/include/wctype.h" 1 3 4 ># 50 "/usr/include/wctype.h" 3 4 > > > >typedef unsigned long int wctype_t; > ># 72 "/usr/include/wctype.h" 3 4 >enum >{ > __ISwupper = 0, > __ISwlower = 1, > __ISwalpha = 2, > __ISwdigit = 3, > __ISwxdigit = 4, > __ISwspace = 5, > __ISwprint = 6, > __ISwgraph = 7, > __ISwblank = 8, > __ISwcntrl = 9, > __ISwpunct = 10, > __ISwalnum = 11, > > _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), > _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), > _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), > _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), > _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), > _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), > _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), > _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), > _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), > _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), > _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), > _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) >}; > > > >extern "C" { > > > > > > > > >extern int iswalnum (wint_t __wc) throw (); > > > > > >extern int iswalpha (wint_t __wc) throw (); > > >extern int iswcntrl (wint_t __wc) throw (); > > > >extern int iswdigit (wint_t __wc) throw (); > > > >extern int iswgraph (wint_t __wc) throw (); > > > > >extern int iswlower (wint_t __wc) throw (); > > >extern int iswprint (wint_t __wc) throw (); > > > > >extern int iswpunct (wint_t __wc) throw (); > > > > >extern int iswspace (wint_t __wc) throw (); > > > > >extern int iswupper (wint_t __wc) throw (); > > > > >extern int iswxdigit (wint_t __wc) throw (); > > > > > >extern int iswblank (wint_t __wc) throw (); ># 172 "/usr/include/wctype.h" 3 4 >extern wctype_t wctype (__const char *__property) throw (); > > > >extern int iswctype (wint_t __wc, wctype_t __desc) throw (); > > > > > > > > > > >typedef __const __int32_t *wctrans_t; > > > > > > > >extern wint_t towlower (wint_t __wc) throw (); > > >extern wint_t towupper (wint_t __wc) throw (); > > >} ># 214 "/usr/include/wctype.h" 3 4 >extern "C" { > > > > >extern wctrans_t wctrans (__const char *__property) throw (); > > >extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); > > > > > > > > >extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw (); > > > > > >extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswprint_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswspace_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswupper_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswblank_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctype_t wctype_l (__const char *__property, __locale_t __locale) > throw (); > > > >extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale) > throw (); > > > > > > > >extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale) > throw (); > > >extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, > __locale_t __locale) throw (); > > > >} ># 52 "/usr/include/c++/4.3/cwctype" 2 3 ># 81 "/usr/include/c++/4.3/cwctype" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > using ::wctrans_t; > using ::wctype_t; > using ::wint_t; > > using ::iswalnum; > using ::iswalpha; > > using ::iswblank; > > using ::iswcntrl; > using ::iswctype; > using ::iswdigit; > using ::iswgraph; > using ::iswlower; > using ::iswprint; > using ::iswpunct; > using ::iswspace; > using ::iswupper; > using ::iswxdigit; > using ::towctrans; > using ::towlower; > using ::towupper; > using ::wctrans; > using ::wctype; > >} ># 47 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 ># 1 "/usr/include/c++/4.3/cctype" 1 3 ># 46 "/usr/include/c++/4.3/cctype" 3 > ># 47 "/usr/include/c++/4.3/cctype" 3 ># 48 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/ctype_base.h" 1 3 ># 42 "/usr/include/c++/4.3/x86_64-suse-linux/bits/ctype_base.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > > struct ctype_base > { > > typedef const int* __to_type; > > > > typedef unsigned short mask; > static const mask upper = _ISupper; > static const mask lower = _ISlower; > static const mask alpha = _ISalpha; > static const mask digit = _ISdigit; > static const mask xdigit = _ISxdigit; > static const mask space = _ISspace; > static const mask print = _ISprint; > static const mask graph = _ISalpha | _ISdigit | _ISpunct; > static const mask cntrl = _IScntrl; > static const mask punct = _ISpunct; > static const mask alnum = _ISalpha | _ISdigit; > }; > >} ># 49 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 > > > > > > ># 1 "/usr/include/c++/4.3/bits/streambuf_iterator.h" 1 3 ># 40 "/usr/include/c++/4.3/bits/streambuf_iterator.h" 3 > ># 41 "/usr/include/c++/4.3/bits/streambuf_iterator.h" 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > > template<typename _CharT, typename _Traits> > class istreambuf_iterator > : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type, > _CharT*, _CharT&> > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename _Traits::int_type int_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_istream<_CharT, _Traits> istream_type; > > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > ostreambuf_iterator<_CharT2> >::__type > copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > ostreambuf_iterator<_CharT2>); > > template<bool _IsMove, typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > _CharT2*>::__type > __copy_move_a2(istreambuf_iterator<_CharT2>, > istreambuf_iterator<_CharT2>, _CharT2*); > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > istreambuf_iterator<_CharT2> >::__type > find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > const _CharT2&); > > private: > > > > > > > > mutable streambuf_type* _M_sbuf; > mutable int_type _M_c; > > public: > > istreambuf_iterator() throw() > : _M_sbuf(0), _M_c(traits_type::eof()) { } > > > istreambuf_iterator(istream_type& __s) throw() > : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } > > > istreambuf_iterator(streambuf_type* __s) throw() > : _M_sbuf(__s), _M_c(traits_type::eof()) { } > > > > > char_type > operator*() const > { > > > > > > > > return traits_type::to_char_type(_M_get()); > } > > > istreambuf_iterator& > operator++() > { > ; > > > if (_M_sbuf) > { > _M_sbuf->sbumpc(); > _M_c = traits_type::eof(); > } > return *this; > } > > > istreambuf_iterator > operator++(int) > { > ; > > > > istreambuf_iterator __old = *this; > if (_M_sbuf) > { > __old._M_c = _M_sbuf->sbumpc(); > _M_c = traits_type::eof(); > } > return __old; > } > > > > > > bool > equal(const istreambuf_iterator& __b) const > { return _M_at_eof() == __b._M_at_eof(); } > > private: > int_type > _M_get() const > { > const int_type __eof = traits_type::eof(); > int_type __ret = __eof; > if (_M_sbuf) > { > if (!traits_type::eq_int_type(_M_c, __eof)) > __ret = _M_c; > else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), > __eof)) > _M_c = __ret; > else > _M_sbuf = 0; > } > return __ret; > } > > bool > _M_at_eof() const > { > const int_type __eof = traits_type::eof(); > return traits_type::eq_int_type(_M_get(), __eof); > } > }; > > template<typename _CharT, typename _Traits> > inline bool > operator==(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return __a.equal(__b); } > > template<typename _CharT, typename _Traits> > inline bool > operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return !__a.equal(__b); } > > > template<typename _CharT, typename _Traits> > class ostreambuf_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_ostream<_CharT, _Traits> ostream_type; > > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > ostreambuf_iterator<_CharT2> >::__type > copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > ostreambuf_iterator<_CharT2>); > > private: > streambuf_type* _M_sbuf; > bool _M_failed; > > public: > > ostreambuf_iterator(ostream_type& __s) throw () > : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator(streambuf_type* __s) throw () > : _M_sbuf(__s), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator& > operator=(_CharT __c) > { > if (!_M_failed && > _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) > _M_failed = true; > return *this; > } > > > ostreambuf_iterator& > operator*() > { return *this; } > > > ostreambuf_iterator& > operator++(int) > { return *this; } > > > ostreambuf_iterator& > operator++() > { return *this; } > > > bool > failed() const throw() > { return _M_failed; } > > ostreambuf_iterator& > _M_put(const _CharT* __ws, streamsize __len) > { > if (__builtin_expect(!_M_failed, true) > && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, > false)) > _M_failed = true; > return *this; > } > }; > > > template<typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > copy(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, > ostreambuf_iterator<_CharT> __result) > { > if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) > { > bool __ineof; > __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); > if (!__ineof) > __result._M_failed = true; > } > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > __copy_move_a2(_CharT* __first, _CharT* __last, > ostreambuf_iterator<_CharT> __result) > { > const streamsize __num = __last - __first; > if (__num > 0) > __result._M_put(__first, __num); > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > __copy_move_a2(const _CharT* __first, const _CharT* __last, > ostreambuf_iterator<_CharT> __result) > { > const streamsize __num = __last - __first; > if (__num > 0) > __result._M_put(__first, __num); > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > _CharT*>::__type > __copy_move_a2(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, _CharT* __result) > { > typedef istreambuf_iterator<_CharT> __is_iterator_type; > typedef typename __is_iterator_type::traits_type traits_type; > typedef typename __is_iterator_type::streambuf_type streambuf_type; > typedef typename traits_type::int_type int_type; > > if (__first._M_sbuf && !__last._M_sbuf) > { > streambuf_type* __sb = __first._M_sbuf; > int_type __c = __sb->sgetc(); > while (!traits_type::eq_int_type(__c, traits_type::eof())) > { > const streamsize __n = __sb->egptr() - __sb->gptr(); > if (__n > 1) > { > traits_type::copy(__result, __sb->gptr(), __n); > __sb->gbump(__n); > __result += __n; > __c = __sb->underflow(); > } > else > { > *__result++ = traits_type::to_char_type(__c); > __c = __sb->snextc(); > } > } > } > return __result; > } > > template<typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > istreambuf_iterator<_CharT> >::__type > find(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, const _CharT& __val) > { > typedef istreambuf_iterator<_CharT> __is_iterator_type; > typedef typename __is_iterator_type::traits_type traits_type; > typedef typename __is_iterator_type::streambuf_type streambuf_type; > typedef typename traits_type::int_type int_type; > > if (__first._M_sbuf && !__last._M_sbuf) > { > const int_type __ival = traits_type::to_int_type(__val); > streambuf_type* __sb = __first._M_sbuf; > int_type __c = __sb->sgetc(); > while (!traits_type::eq_int_type(__c, traits_type::eof()) > && !traits_type::eq_int_type(__c, __ival)) > { > streamsize __n = __sb->egptr() - __sb->gptr(); > if (__n > 1) > { > const _CharT* __p = traits_type::find(__sb->gptr(), > __n, __val); > if (__p) > __n = __p - __sb->gptr(); > __sb->gbump(__n); > __c = __sb->sgetc(); > } > else > __c = __sb->snextc(); > } > > if (!traits_type::eq_int_type(__c, traits_type::eof())) > __first._M_c = __c; > else > __first._M_sbuf = 0; > } > return __first; > } > >} ># 56 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 69 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _Tv> > void > __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err, > const __c_locale& __cloc); > > > template<> > void > __convert_to_v(const char*, float&, ios_base::iostate&, > const __c_locale&); > > template<> > void > __convert_to_v(const char*, double&, ios_base::iostate&, > const __c_locale&); > > template<> > void > __convert_to_v(const char*, long double&, ios_base::iostate&, > const __c_locale&); > > > > template<typename _CharT, typename _Traits> > struct __pad > { > static void > _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, > const _CharT* __olds, const streamsize __newlen, > const streamsize __oldlen); > }; > > > > > > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last); > > > > > template<typename _CharT> > inline > ostreambuf_iterator<_CharT> > __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) > { > __s._M_put(__ws, __len); > return __s; > } > > > template<typename _CharT, typename _OutIter> > inline > _OutIter > __write(_OutIter __s, const _CharT* __ws, int __len) > { > for (int __j = 0; __j < __len; __j++, ++__s) > *__s = __ws[__j]; > return __s; > } ># 149 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _CharT> > class __ctype_abstract_base : public locale::facet, public ctype_base > { > public: > > > typedef _CharT char_type; ># 167 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > bool > is(mask __m, char_type __c) const > { return this->do_is(__m, __c); } ># 184 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > is(const char_type *__lo, const char_type *__hi, mask *__vec) const > { return this->do_is(__lo, __hi, __vec); } ># 200 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > scan_is(mask __m, const char_type* __lo, const char_type* __hi) const > { return this->do_scan_is(__m, __lo, __hi); } ># 216 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > scan_not(mask __m, const char_type* __lo, const char_type* __hi) const > { return this->do_scan_not(__m, __lo, __hi); } ># 230 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 245 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 259 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 274 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 291 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { return this->do_widen(__c); } ># 310 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char* > widen(const char* __lo, const char* __hi, char_type* __to) const > { return this->do_widen(__lo, __hi, __to); } ># 329 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { return this->do_narrow(__c, __dfault); } ># 351 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char *__to) const > { return this->do_narrow(__lo, __hi, __dfault, __to); } > > protected: > explicit > __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } > > virtual > ~__ctype_abstract_base() { } ># 376 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const = 0; ># 395 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, > mask* __vec) const = 0; ># 414 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 433 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 451 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const = 0; ># 468 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const = 0; ># 484 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const = 0; ># 501 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const = 0; ># 520 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char) const = 0; ># 541 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, > char_type* __dest) const = 0; ># 563 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type, char __dfault) const = 0; ># 587 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const = 0; > }; ># 610 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _CharT> > class ctype : public __ctype_abstract_base<_CharT> > { > public: > > typedef _CharT char_type; > typedef typename __ctype_abstract_base<_CharT>::mask mask; > > > static locale::id id; > > explicit > ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } > > protected: > virtual > ~ctype(); > > virtual bool > do_is(mask __m, char_type __c) const; > > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; > > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; > > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; > > virtual char_type > do_toupper(char_type __c) const; > > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_tolower(char_type __c) const; > > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_widen(char __c) const; > > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const; > > virtual char > do_narrow(char_type, char __dfault) const; > > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const; > }; > > template<typename _CharT> > locale::id ctype<_CharT>::id; ># 679 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<> > class ctype<char> : public locale::facet, public ctype_base > { > public: > > > typedef char char_type; > > protected: > > __c_locale _M_c_locale_ctype; > bool _M_del; > __to_type _M_toupper; > __to_type _M_tolower; > const mask* _M_table; > mutable char _M_widen_ok; > mutable char _M_widen[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow_ok; > > > public: > > static locale::id id; > > static const size_t table_size = 1 + static_cast<unsigned char>(-1); ># 716 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); ># 729 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, > size_t __refs = 0); ># 742 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > inline bool > is(mask __m, char __c) const; ># 757 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > inline const char* > is(const char* __lo, const char* __hi, mask* __vec) const; ># 771 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > inline const char* > scan_is(mask __m, const char* __lo, const char* __hi) const; ># 785 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > inline const char* > scan_not(mask __m, const char* __lo, const char* __hi) const; ># 800 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 817 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 833 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 850 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 870 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { > if (_M_widen_ok) > return _M_widen[static_cast<unsigned char>(__c)]; > this->_M_widen_init(); > return this->do_widen(__c); > } ># 897 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char* > widen(const char* __lo, const char* __hi, char_type* __to) const > { > if (_M_widen_ok == 1) > { > __builtin_memcpy(__to, __lo, __hi - __lo); > return __hi; > } > if (!_M_widen_ok) > _M_widen_init(); > return this->do_widen(__lo, __hi, __to); > } ># 928 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { > if (_M_narrow[static_cast<unsigned char>(__c)]) > return _M_narrow[static_cast<unsigned char>(__c)]; > const char __t = do_narrow(__c, __dfault); > if (__t != __dfault) > _M_narrow[static_cast<unsigned char>(__c)] = __t; > return __t; > } ># 961 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > const char_type* > narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char *__to) const > { > if (__builtin_expect(_M_narrow_ok == 1, true)) > { > __builtin_memcpy(__to, __lo, __hi - __lo); > return __hi; > } > if (!_M_narrow_ok) > _M_narrow_init(); > return this->do_narrow(__lo, __hi, __dfault, __to); > } > > > > > > const mask* > table() const throw() > { return _M_table; } > > > static const mask* > classic_table() throw(); > protected: > > > > > > > > virtual > ~ctype(); ># 1010 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const; ># 1027 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1043 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const; ># 1060 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1080 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char __c) const > { return __c; } ># 1103 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const > { > __builtin_memcpy(__dest, __lo, __hi - __lo); > return __hi; > } ># 1129 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type __c, char) const > { return __c; } ># 1155 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char, char* __dest) const > { > __builtin_memcpy(__dest, __lo, __hi - __lo); > return __hi; > } > > private: > > void _M_widen_init() const > { > char __tmp[sizeof(_M_widen)]; > for (size_t __i = 0; __i < sizeof(_M_widen); ++__i) > __tmp[__i] = __i; > do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen); > > _M_widen_ok = 1; > > if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen))) > _M_widen_ok = 2; > } > > > > > void _M_narrow_init() const > { > char __tmp[sizeof(_M_narrow)]; > for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i) > __tmp[__i] = __i; > do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow); > > _M_narrow_ok = 1; > if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow))) > _M_narrow_ok = 2; > else > { > > > char __c; > do_narrow(__tmp, __tmp + 1, 1, &__c); > if (__c == 1) > _M_narrow_ok = 2; > } > } > }; > > template<> > const ctype<char>& > use_facet<ctype<char> >(const locale& __loc); ># 1219 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<> > class ctype<wchar_t> : public __ctype_abstract_base<wchar_t> > { > public: > > > typedef wchar_t char_type; > typedef wctype_t __wmask_type; > > protected: > __c_locale _M_c_locale_ctype; > > > bool _M_narrow_ok; > char _M_narrow[128]; > wint_t _M_widen[1 + static_cast<unsigned char>(-1)]; > > > mask _M_bit[16]; > __wmask_type _M_wmask[16]; > > public: > > > static locale::id id; ># 1252 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > ctype(size_t __refs = 0); ># 1263 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, size_t __refs = 0); > > protected: > __wmask_type > _M_convert_to_wmask(const mask __m) const; > > > virtual > ~ctype(); ># 1287 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const; ># 1306 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; ># 1324 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; ># 1342 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; ># 1359 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type) const; ># 1376 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1392 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type) const; ># 1409 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1429 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_widen(char) const; ># 1451 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const; ># 1474 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type, char __dfault) const; ># 1500 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __dest) const; > > > void > _M_initialize_ctype(); > }; > > template<> > const ctype<wchar_t>& > use_facet<ctype<wchar_t> >(const locale& __loc); > > > > template<typename _CharT> > class ctype_byname : public ctype<_CharT> > { > public: > typedef typename ctype<_CharT>::mask mask; > > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname() { }; > }; > > > template<> > class ctype_byname<char> : public ctype<char> > { > public: > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname(); > }; > > > template<> > class ctype_byname<wchar_t> : public ctype<wchar_t> > { > public: > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname(); > }; > > >} > > ># 1 "/usr/include/c++/4.3/x86_64-suse-linux/bits/ctype_inline.h" 1 3 ># 42 "/usr/include/c++/4.3/x86_64-suse-linux/bits/ctype_inline.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) { > > bool > ctype<char>:: > is(mask __m, char __c) const > { return _M_table[static_cast<unsigned char>(__c)] & __m; } > > const char* > ctype<char>:: > is(const char* __low, const char* __high, mask* __vec) const > { > while (__low < __high) > *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; > return __high; > } > > const char* > ctype<char>:: > scan_is(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) > ++__low; > return __low; > } > > const char* > ctype<char>:: > scan_not(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) > ++__low; > return __low; > } > >} ># 1560 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > class __num_base > { > public: > > > enum > { > _S_ominus, > _S_oplus, > _S_ox, > _S_oX, > _S_odigits, > _S_odigits_end = _S_odigits + 16, > _S_oudigits = _S_odigits_end, > _S_oudigits_end = _S_oudigits + 16, > _S_oe = _S_odigits + 14, > _S_oE = _S_oudigits + 14, > _S_oend = _S_oudigits_end > }; > > > > > > > static const char* _S_atoms_out; > > > > static const char* _S_atoms_in; > > enum > { > _S_iminus, > _S_iplus, > _S_ix, > _S_iX, > _S_izero, > _S_ie = _S_izero + 14, > _S_iE = _S_izero + 20, > _S_iend = 26 > }; > > > > static void > _S_format_float(const ios_base& __io, char* __fptr, char __mod); > }; > > template<typename _CharT> > struct __numpunct_cache : public locale::facet > { > const char* _M_grouping; > size_t _M_grouping_size; > bool _M_use_grouping; > const _CharT* _M_truename; > size_t _M_truename_size; > const _CharT* _M_falsename; > size_t _M_falsename_size; > _CharT _M_decimal_point; > _CharT _M_thousands_sep; > > > > > > _CharT _M_atoms_out[__num_base::_S_oend]; > > > > > > _CharT _M_atoms_in[__num_base::_S_iend]; > > bool _M_allocated; > > __numpunct_cache(size_t __refs = 0) : facet(__refs), > _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false), > _M_truename(__null), _M_truename_size(0), _M_falsename(__null), > _M_falsename_size(0), _M_decimal_point(_CharT()), > _M_thousands_sep(_CharT()), _M_allocated(false) > { } > > ~__numpunct_cache(); > > void > _M_cache(const locale& __loc); > > private: > __numpunct_cache& > operator=(const __numpunct_cache&); > > explicit > __numpunct_cache(const __numpunct_cache&); > }; > > template<typename _CharT> > __numpunct_cache<_CharT>::~__numpunct_cache() > { > if (_M_allocated) > { > delete [] _M_grouping; > delete [] _M_truename; > delete [] _M_falsename; > } > } ># 1684 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _CharT> > class numpunct : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > typedef __numpunct_cache<_CharT> __cache_type; > > protected: > __cache_type* _M_data; > > public: > > static locale::id id; > > > > > > > explicit > numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null) > { _M_initialize_numpunct(); } ># 1721 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > numpunct(__cache_type* __cache, size_t __refs = 0) > : facet(__refs), _M_data(__cache) > { _M_initialize_numpunct(); } ># 1735 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > numpunct(__c_locale __cloc, size_t __refs = 0) > : facet(__refs), _M_data(__null) > { _M_initialize_numpunct(__cloc); } ># 1749 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > decimal_point() const > { return this->do_decimal_point(); } ># 1762 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > char_type > thousands_sep() const > { return this->do_thousands_sep(); } ># 1793 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > string > grouping() const > { return this->do_grouping(); } ># 1806 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > string_type > truename() const > { return this->do_truename(); } ># 1819 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > string_type > falsename() const > { return this->do_falsename(); } > > protected: > > virtual > ~numpunct(); ># 1836 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_decimal_point() const > { return _M_data->_M_decimal_point; } ># 1848 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual char_type > do_thousands_sep() const > { return _M_data->_M_thousands_sep; } ># 1861 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual string > do_grouping() const > { return _M_data->_M_grouping; } ># 1874 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual string_type > do_truename() const > { return _M_data->_M_truename; } ># 1887 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual string_type > do_falsename() const > { return _M_data->_M_falsename; } > > > void > _M_initialize_numpunct(__c_locale __cloc = __null); > }; > > template<typename _CharT> > locale::id numpunct<_CharT>::id; > > template<> > numpunct<char>::~numpunct(); > > template<> > void > numpunct<char>::_M_initialize_numpunct(__c_locale __cloc); > > > template<> > numpunct<wchar_t>::~numpunct(); > > template<> > void > numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc); > > > > template<typename _CharT> > class numpunct_byname : public numpunct<_CharT> > { > public: > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > explicit > numpunct_byname(const char* __s, size_t __refs = 0) > : numpunct<_CharT>(__refs) > { > if (__builtin_strcmp(__s, "C") != 0 > && __builtin_strcmp(__s, "POSIX") != 0) > { > __c_locale __tmp; > this->_S_create_c_locale(__tmp, __s); > this->_M_initialize_numpunct(__tmp); > this->_S_destroy_c_locale(__tmp); > } > } > > protected: > virtual > ~numpunct_byname() { } > }; > > ># 1956 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _CharT, typename _InIter> > class num_get : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _InIter iter_type; > > > > static locale::id id; ># 1977 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > num_get(size_t __refs = 0) : facet(__refs) { } ># 2003 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, bool& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2039 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned short& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned int& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long long& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2098 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, float& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, double& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long double& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } ># 2140 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > get(iter_type __in, iter_type __end, ios_base& __io, > ios_base::iostate& __err, void*& __v) const > { return this->do_get(__in, __end, __io, __err, __v); } > > protected: > > virtual ~num_get() { } > > iter_type > _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, > string& __xtrc) const; > > template<typename _ValueT> > iter_type > _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, > _ValueT& __v) const; > > template<typename _CharT2> > typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type > _M_find(const _CharT2*, size_t __len, _CharT2 __c) const > { > int __ret = -1; > if (__len <= 10) > { > if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) > __ret = __c - _CharT2('0'); > } > else > { > if (__c >= _CharT2('0') && __c <= _CharT2('9')) > __ret = __c - _CharT2('0'); > else if (__c >= _CharT2('a') && __c <= _CharT2('f')) > __ret = 10 + (__c - _CharT2('a')); > else if (__c >= _CharT2('A') && __c <= _CharT2('F')) > __ret = 10 + (__c - _CharT2('A')); > } > return __ret; > } > > template<typename _CharT2> > typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value, > int>::__type > _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const > { > int __ret = -1; > const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); > if (__q) > { > __ret = __q - __zero; > if (__ret > 15) > __ret -= 6; > } > return __ret; > } ># 2211 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned short&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned int&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned long&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > long long&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > unsigned long long&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > float&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > double&) const; > > > > > > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > long double&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, > void*&) const; ># 2270 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > }; > > template<typename _CharT, typename _InIter> > locale::id num_get<_CharT, _InIter>::id; ># 2287 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > template<typename _CharT, typename _OutIter> > class num_put : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _OutIter iter_type; > > > > static locale::id id; ># 2308 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > explicit > num_put(size_t __refs = 0) : facet(__refs) { } ># 2326 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2368 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > unsigned long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > unsigned long long __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2431 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, double __v) const > { return this->do_put(__s, __f, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > long double __v) const > { return this->do_put(__s, __f, __fill, __v); } ># 2456 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __f, char_type __fill, > const void* __v) const > { return this->do_put(__s, __f, __fill, __v); } > > protected: > template<typename _ValueT> > iter_type > _M_insert_float(iter_type, ios_base& __io, char_type __fill, > char __mod, _ValueT __v) const; > > void > _M_group_float(const char* __grouping, size_t __grouping_size, > char_type __sep, const char_type* __p, char_type* __new, > char_type* __cs, int& __len) const; > > template<typename _ValueT> > iter_type > _M_insert_int(iter_type, ios_base& __io, char_type __fill, > _ValueT __v) const; > > void > _M_group_int(const char* __grouping, size_t __grouping_size, > char_type __sep, ios_base& __io, char_type* __new, > char_type* __cs, int& __len) const; > > void > _M_pad(char_type __fill, streamsize __w, ios_base& __io, > char_type* __new, const char_type* __cs, int& __len) const; > > > virtual > ~num_put() { }; ># 2504 "/usr/include/c++/4.3/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, bool __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, unsigned long) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long long __v) const; > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, double __v) const; > > > > > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, long double __v) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type __fill, const void* __v) const; > > > > > > > > }; > > template <typename _CharT, typename _OutIter> > locale::id num_put<_CharT, _OutIter>::id; > > > > > > > > > > template<typename _CharT> > inline bool > isspace(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); } > > > template<typename _CharT> > inline bool > isprint(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); } > > > template<typename _CharT> > inline bool > iscntrl(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); } > > > template<typename _CharT> > inline bool > isupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); } > > > template<typename _CharT> > inline bool > islower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); } > > > template<typename _CharT> > inline bool > isalpha(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); } > > > template<typename _CharT> > inline bool > isdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); } > > > template<typename _CharT> > inline bool > ispunct(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); } > > > template<typename _CharT> > inline bool > isxdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); } > > > template<typename _CharT> > inline bool > isalnum(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); } > > > template<typename _CharT> > inline bool > isgraph(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); } > > > template<typename _CharT> > inline _CharT > toupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).toupper(__c); } > > > template<typename _CharT> > inline _CharT > tolower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).tolower(__c); } > >} > > ># 1 "/usr/include/c++/4.3/bits/locale_facets.tcc" 1 3 ># 40 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > ># 41 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > > > template<typename _Facet> > struct __use_cache > { > const _Facet* > operator() (const locale& __loc) const; > }; > > > template<typename _CharT> > struct __use_cache<__numpunct_cache<_CharT> > > { > const __numpunct_cache<_CharT>* > operator() (const locale& __loc) const > { > const size_t __i = numpunct<_CharT>::id._M_id(); > const locale::facet** __caches = __loc._M_impl->_M_caches; > if (!__caches[__i]) > { > __numpunct_cache<_CharT>* __tmp = __null; > try > { > __tmp = new __numpunct_cache<_CharT>; > __tmp->_M_cache(__loc); > } > catch(...) > { > delete __tmp; > throw; > } > __loc._M_impl->_M_install_cache(__tmp, __i); > } > return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]); > } > }; > > template<typename _CharT> > void > __numpunct_cache<_CharT>::_M_cache(const locale& __loc) > { > _M_allocated = true; > > const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc); > > _M_grouping_size = __np.grouping().size(); > char* __grouping = new char[_M_grouping_size]; > __np.grouping().copy(__grouping, _M_grouping_size); > _M_grouping = __grouping; > _M_use_grouping = (_M_grouping_size > && static_cast<signed char>(__np.grouping()[0]) > 0); > > _M_truename_size = __np.truename().size(); > _CharT* __truename = new _CharT[_M_truename_size]; > __np.truename().copy(__truename, _M_truename_size); > _M_truename = __truename; > > _M_falsename_size = __np.falsename().size(); > _CharT* __falsename = new _CharT[_M_falsename_size]; > __np.falsename().copy(__falsename, _M_falsename_size); > _M_falsename = __falsename; > > _M_decimal_point = __np.decimal_point(); > _M_thousands_sep = __np.thousands_sep(); > > const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc); > __ct.widen(__num_base::_S_atoms_out, > __num_base::_S_atoms_out + __num_base::_S_oend, _M_atoms_out); > __ct.widen(__num_base::_S_atoms_in, > __num_base::_S_atoms_in + __num_base::_S_iend, _M_atoms_in); > } ># 124 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > bool > __verify_grouping(const char* __grouping, size_t __grouping_size, > const string& __grouping_tmp); > > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, string& __xtrc) const > { > typedef char_traits<_CharT> __traits_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > char_type __c = char_type(); > > > bool __testeof = __beg == __end; > > > if (!__testeof) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if ((__plus || __c == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > { > __xtrc += __plus ? '+' : '-'; > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > } > > > bool __found_mantissa = false; > int __sep_pos = 0; > while (!__testeof) > { > if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > || __c == __lc->_M_decimal_point) > break; > else if (__c == __lit[__num_base::_S_izero]) > { > if (!__found_mantissa) > { > __xtrc += '0'; > __found_mantissa = true; > } > ++__sep_pos; > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > break; > } > > > bool __found_dec = false; > bool __found_sci = false; > string __found_grouping; > if (__lc->_M_use_grouping) > __found_grouping.reserve(32); > const char_type* __lit_zero = __lit + __num_base::_S_izero; > > if (!__lc->_M_allocated) > > while (!__testeof) > { > const int __digit = _M_find(__lit_zero, 10, __c); > if (__digit != -1) > { > __xtrc += '0' + __digit; > __found_mantissa = true; > } > else if (__c == __lc->_M_decimal_point > && !__found_dec && !__found_sci) > { > __xtrc += '.'; > __found_dec = true; > } > else if ((__c == __lit[__num_base::_S_ie] > || __c == __lit[__num_base::_S_iE]) > && !__found_sci && __found_mantissa) > { > > __xtrc += 'e'; > __found_sci = true; > > > if (++__beg != __end) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if (__plus || __c == __lit[__num_base::_S_iminus]) > __xtrc += __plus ? '+' : '-'; > else > continue; > } > else > { > __testeof = true; > break; > } > } > else > break; > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > while (!__testeof) > { > > > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > if (!__found_dec && !__found_sci) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > > > __xtrc.clear(); > break; > } > } > else > break; > } > else if (__c == __lc->_M_decimal_point) > { > if (!__found_dec && !__found_sci) > { > > > > if (__found_grouping.size()) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += '.'; > __found_dec = true; > } > else > break; > } > else > { > const char_type* __q = > __traits_type::find(__lit_zero, 10, __c); > if (__q) > { > __xtrc += '0' + (__q - __lit_zero); > __found_mantissa = true; > ++__sep_pos; > } > else if ((__c == __lit[__num_base::_S_ie] > || __c == __lit[__num_base::_S_iE]) > && !__found_sci && __found_mantissa) > { > > if (__found_grouping.size() && !__found_dec) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += 'e'; > __found_sci = true; > > > if (++__beg != __end) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if ((__plus || __c == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping > && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > __xtrc += __plus ? '+' : '-'; > else > continue; > } > else > { > __testeof = true; > break; > } > } > else > break; > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > > > > if (__found_grouping.size()) > { > > if (!__found_dec && !__found_sci) > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err |= ios_base::failbit; > } > > > if (__testeof) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > template<typename _ValueT> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, _ValueT& __v) const > { > typedef char_traits<_CharT> __traits_type; > using __gnu_cxx::__add_unsigned; > typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > char_type __c = char_type(); > > > const ios_base::fmtflags __basefield = __io.flags() > & ios_base::basefield; > const bool __oct = __basefield == ios_base::oct; > int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); > > > bool __testeof = __beg == __end; > > > bool __negative = false; > if (!__testeof) > { > __c = *__beg; > if (__gnu_cxx::__numeric_traits<_ValueT>::__is_signed) > __negative = __c == __lit[__num_base::_S_iminus]; > if ((__negative || __c == __lit[__num_base::_S_iplus]) > && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > { > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > } > > > > bool __found_zero = false; > int __sep_pos = 0; > while (!__testeof) > { > if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > || __c == __lc->_M_decimal_point) > break; > else if (__c == __lit[__num_base::_S_izero] > && (!__found_zero || __base == 10)) > { > __found_zero = true; > ++__sep_pos; > if (__basefield == 0) > __base = 8; > if (__base == 8) > __sep_pos = 0; > } > else if (__found_zero > && (__c == __lit[__num_base::_S_ix] > || __c == __lit[__num_base::_S_iX])) > { > if (__basefield == 0) > __base = 16; > if (__base == 16) > { > __found_zero = false; > __sep_pos = 0; > } > else > break; > } > else > break; > > if (++__beg != __end) > { > __c = *__beg; > if (!__found_zero) > break; > } > else > __testeof = true; > } > > > > const size_t __len = (__base == 16 ? __num_base::_S_iend > - __num_base::_S_izero : __base); > > > string __found_grouping; > if (__lc->_M_use_grouping) > __found_grouping.reserve(32); > bool __testfail = false; > const __unsigned_type __max = __negative > ? -__gnu_cxx::__numeric_traits<_ValueT>::__min > : __gnu_cxx::__numeric_traits<_ValueT>::__max; > const __unsigned_type __smax = __max / __base; > __unsigned_type __result = 0; > int __digit = 0; > const char_type* __lit_zero = __lit + __num_base::_S_izero; > > if (!__lc->_M_allocated) > > while (!__testeof) > { > __digit = _M_find(__lit_zero, __len, __c); > if (__digit == -1) > break; > > if (__result > __smax) > __testfail = true; > else > { > __result *= __base; > __testfail |= __result > __max - __digit; > __result += __digit; > ++__sep_pos; > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > while (!__testeof) > { > > > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > __testfail = true; > break; > } > } > else if (__c == __lc->_M_decimal_point) > break; > else > { > const char_type* __q = > __traits_type::find(__lit_zero, __len, __c); > if (!__q) > break; > > __digit = __q - __lit_zero; > if (__digit > 15) > __digit -= 6; > if (__result > __smax) > __testfail = true; > else > { > __result *= __base; > __testfail |= __result > __max - __digit; > __result += __digit; > ++__sep_pos; > } > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > > > > if (__found_grouping.size()) > { > > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err |= ios_base::failbit; > } > > if (!__testfail && (__sep_pos || __found_zero > || __found_grouping.size())) > __v = __negative ? -__result : __result; > else > __err |= ios_base::failbit; > > if (__testeof) > __err |= ios_base::eofbit; > return __beg; > } > > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, bool& __v) const > { > if (!(__io.flags() & ios_base::boolalpha)) > { > > > > long __l = -1; > __beg = _M_extract_int(__beg, __end, __io, __err, __l); > if (__l == 0 || __l == 1) > __v = bool(__l); > else > __err |= ios_base::failbit; > } > else > { > > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > bool __testf = true; > bool __testt = true; > size_t __n; > bool __testeof = __beg == __end; > for (__n = 0; !__testeof; ++__n) > { > const char_type __c = *__beg; > > if (__testf) > { > if (__n < __lc->_M_falsename_size) > __testf = __c == __lc->_M_falsename[__n]; > else > break; > } > > if (__testt) > { > if (__n < __lc->_M_truename_size) > __testt = __c == __lc->_M_truename[__n]; > else > break; > } > > if (!__testf && !__testt) > break; > > if (++__beg == __end) > __testeof = true; > } > if (__testf && __n == __lc->_M_falsename_size) > __v = false; > else if (__testt && __n == __lc->_M_truename_size) > __v = true; > else > __err |= ios_base::failbit; > > if (__testeof) > __err |= ios_base::eofbit; > } > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned short& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned int& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, unsigned long long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, float& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, double& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } ># 717 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long double& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, void*& __v) const > { > > typedef ios_base::fmtflags fmtflags; > const fmtflags __fmt = __io.flags(); > __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); > > typedef __gnu_cxx::__conditional_type<(sizeof(void*) > <= sizeof(unsigned long)), > unsigned long, unsigned long long>::__type _UIntPtrType; > > _UIntPtrType __ul; > __beg = _M_extract_int(__beg, __end, __io, __err, __ul); > > > __io.flags(__fmt); > > if (!(__err & ios_base::failbit)) > __v = reinterpret_cast<void*>(__ul); > return __beg; > } > > > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_pad(_CharT __fill, streamsize __w, ios_base& __io, > _CharT* __new, const _CharT* __cs, int& __len) const > { > > > __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, > __cs, __w, __len); > __len = static_cast<int>(__w); > } > > > > template<typename _CharT, typename _ValueT> > int > __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, > ios_base::fmtflags __flags, bool __dec) > { > _CharT* __buf = __bufend; > if (__builtin_expect(__dec, true)) > { > > do > { > *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; > __v /= 10; > } > while (__v != 0); > } > else if ((__flags & ios_base::basefield) == ios_base::oct) > { > > do > { > *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; > __v >>= 3; > } > while (__v != 0); > } > else > { > > const bool __uppercase = __flags & ios_base::uppercase; > const int __case_offset = __uppercase ? __num_base::_S_oudigits > : __num_base::_S_odigits; > do > { > *--__buf = __lit[(__v & 0xf) + __case_offset]; > __v >>= 4; > } > while (__v != 0); > } > return __bufend - __buf; > } > > > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, > ios_base&, _CharT* __new, _CharT* __cs, int& __len) const > { > _CharT* __p = std::__add_grouping(__new, __sep, __grouping, > __grouping_size, __cs, __cs + __len); > __len = __p - __new; > } > > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, > _ValueT __v) const > { > using __gnu_cxx::__add_unsigned; > typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_out; > const ios_base::fmtflags __flags = __io.flags(); > > > const int __ilen = 5 * sizeof(_ValueT); > _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __ilen)); > > > > const ios_base::fmtflags __basefield = __flags & ios_base::basefield; > const bool __dec = (__basefield != ios_base::oct > && __basefield != ios_base::hex); > const __unsigned_type __u = ((__v > 0 || !__dec) > ? __unsigned_type(__v) > : -__unsigned_type(__v)); > int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); > __cs += __ilen - __len; > > > if (__lc->_M_use_grouping) > { > > > _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * (__len + 1) > * 2)); > _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); > __cs = __cs2 + 2; > } > > > if (__builtin_expect(__dec, true)) > { > > if (__v >= 0) > { > if (bool(__flags & ios_base::showpos) > && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) > *--__cs = __lit[__num_base::_S_oplus], ++__len; > } > else > *--__cs = __lit[__num_base::_S_ominus], ++__len; > } > else if (bool(__flags & ios_base::showbase) && __v) > { > if (__basefield == ios_base::oct) > *--__cs = __lit[__num_base::_S_odigits], ++__len; > else > { > > const bool __uppercase = __flags & ios_base::uppercase; > *--__cs = __lit[__num_base::_S_ox + __uppercase]; > > *--__cs = __lit[__num_base::_S_odigits]; > __len += 2; > } > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __cs3, __cs, __len); > __cs = __cs3; > } > __io.width(0); > > > > return std::__write(__s, __cs, __len); > } > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_float(const char* __grouping, size_t __grouping_size, > _CharT __sep, const _CharT* __p, _CharT* __new, > _CharT* __cs, int& __len) const > { > > > > const int __declen = __p ? __p - __cs : __len; > _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, > __grouping_size, > __cs, __cs + __declen); > > > int __newlen = __p2 - __new; > if (__p) > { > char_traits<_CharT>::copy(__p2, __p, __len - __declen); > __newlen += __len - __declen; > } > __len = __newlen; > } ># 952 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, > _ValueT __v) const > { > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > > const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); > > const int __max_digits = > __gnu_cxx::__numeric_traits<_ValueT>::__digits10; > > > int __len; > > char __fbuf[16]; > __num_base::_S_format_float(__io, __fbuf, __mod); > > > > > int __cs_size = __max_digits * 3; > char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, > __fbuf, __prec, __v); > > > if (__len >= __cs_size) > { > __cs_size = __len + 1; > __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, > __fbuf, __prec, __v); > } ># 1013 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len)); > __ctype.widen(__cs, __cs + __len, __ws); > > > _CharT* __wp = 0; > const char* __p = char_traits<char>::find(__cs, __len, '.'); > if (__p) > { > __wp = __ws + (__p - __cs); > *__wp = __lc->_M_decimal_point; > } > > > > > if (__lc->_M_use_grouping > && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' > && __cs[1] >= '0' && __cs[2] >= '0'))) > { > > > _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len * 2)); > > streamsize __off = 0; > if (__cs[0] == '-' || __cs[0] == '+') > { > __off = 1; > __ws2[0] = __ws[0]; > __len -= 1; > } > > _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __wp, __ws2 + __off, > __ws + __off, __len); > __len += __off; > > __ws = __ws2; > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __ws3, __ws, __len); > __ws = __ws3; > } > __io.width(0); > > > > return std::__write(__s, __ws, __len); > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > if ((__flags & ios_base::boolalpha) == 0) > { > const long __l = __v; > __s = _M_insert_int(__s, __io, __fill, __l); > } > else > { > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > const _CharT* __name = __v ? __lc->_M_truename > : __lc->_M_falsename; > int __len = __v ? __lc->_M_truename_size > : __lc->_M_falsename_size; > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __cs > = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __cs, __name, __len); > __name = __cs; > } > __io.width(0); > __s = std::__write(__s, __name, __len); > } > return __s; > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const > { return _M_insert_float(__s, __io, __fill, char(), __v); } ># 1152 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > long double __v) const > { return _M_insert_float(__s, __io, __fill, 'L', __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > const void* __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > const ios_base::fmtflags __fmt = ~(ios_base::basefield > | ios_base::uppercase > | ios_base::internal); > __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); > > typedef __gnu_cxx::__conditional_type<(sizeof(const void*) > <= sizeof(unsigned long)), > unsigned long, unsigned long long>::__type _UIntPtrType; > > __s = _M_insert_int(__s, __io, __fill, > reinterpret_cast<_UIntPtrType>(__v)); > __io.flags(__flags); > return __s; > } > > ># 1190 "/usr/include/c++/4.3/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _Traits> > void > __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, > _CharT* __news, const _CharT* __olds, > const streamsize __newlen, > const streamsize __oldlen) > { > const size_t __plen = static_cast<size_t>(__newlen - __oldlen); > const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; > > > if (__adjust == ios_base::left) > { > _Traits::copy(__news, __olds, __oldlen); > _Traits::assign(__news + __oldlen, __plen, __fill); > return; > } > > size_t __mod = 0; > if (__adjust == ios_base::internal) > { > > > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > if (__ctype.widen('-') == __olds[0] > || __ctype.widen('+') == __olds[0]) > { > __news[0] = __olds[0]; > __mod = 1; > ++__news; > } > else if (__ctype.widen('0') == __olds[0] > && __oldlen > 1 > && (__ctype.widen('x') == __olds[1] > || __ctype.widen('X') == __olds[1])) > { > __news[0] = __olds[0]; > __news[1] = __olds[1]; > __mod = 2; > __news += 2; > } > > } > _Traits::assign(__news, __plen, __fill); > _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); > } > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last) > { > size_t __idx = 0; > size_t __ctr = 0; > > while (__last - __first > __gbeg[__idx] > && static_cast<signed char>(__gbeg[__idx]) > 0) > { > __last -= __gbeg[__idx]; > __idx < __gsize - 1 ? ++__idx : ++__ctr; > } > > while (__first != __last) > *__s++ = *__first++; > > while (__ctr--) > { > *__s++ = __sep; > for (char __i = __gbeg[__idx]; __i > 0; --__i) > *__s++ = *__first++; > } > > while (__idx--) > { > *__s++ = __sep; > for (char __i = __gbeg[__idx]; __i > 0; --__i) > *__s++ = *__first++; > } > > return __s; > } > > > > > > extern template class numpunct<char>; > extern template class numpunct_byname<char>; > extern template class num_get<char>; > extern template class num_put<char>; > extern template class ctype_byname<char>; > > extern template > const numpunct<char>& > use_facet<numpunct<char> >(const locale&); > > extern template > const num_put<char>& > use_facet<num_put<char> >(const locale&); > > extern template > const num_get<char>& > use_facet<num_get<char> >(const locale&); > > extern template > bool > has_facet<ctype<char> >(const locale&); > > extern template > bool > has_facet<numpunct<char> >(const locale&); > > extern template > bool > has_facet<num_put<char> >(const locale&); > > extern template > bool > has_facet<num_get<char> >(const locale&); > > > extern template class numpunct<wchar_t>; > extern template class numpunct_byname<wchar_t>; > extern template class num_get<wchar_t>; > extern template class num_put<wchar_t>; > extern template class ctype_byname<wchar_t>; > > extern template > const numpunct<wchar_t>& > use_facet<numpunct<wchar_t> >(const locale&); > > extern template > const num_put<wchar_t>& > use_facet<num_put<wchar_t> >(const locale&); > > extern template > const num_get<wchar_t>& > use_facet<num_get<wchar_t> >(const locale&); > > extern template > bool > has_facet<ctype<wchar_t> >(const locale&); > > extern template > bool > has_facet<numpunct<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_put<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_get<wchar_t> >(const locale&); > > > >} ># 2636 "/usr/include/c++/4.3/bits/locale_facets.h" 2 3 ># 45 "/usr/include/c++/4.3/bits/basic_ios.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _Facet> > inline const _Facet& > __check_facet(const _Facet* __f) > { > if (!__f) > __throw_bad_cast(); > return *__f; > } ># 65 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > template<typename _CharT, typename _Traits> > class basic_ios : public ios_base > { > public: > > > > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > > > > > typedef ctype<_CharT> __ctype_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > > > > protected: > basic_ostream<_CharT, _Traits>* _M_tie; > mutable char_type _M_fill; > mutable bool _M_fill_init; > basic_streambuf<_CharT, _Traits>* _M_streambuf; > > > const __ctype_type* _M_ctype; > > const __num_put_type* _M_num_put; > > const __num_get_type* _M_num_get; > > public: > > > > > > > > operator void*() const > { return this->fail() ? 0 : const_cast<basic_ios*>(this); } > > bool > operator!() const > { return this->fail(); } ># 130 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > iostate > rdstate() const > { return _M_streambuf_state; } ># 141 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > void > clear(iostate __state = goodbit); > > > > > > > > void > setstate(iostate __state) > { this->clear(this->rdstate() | __state); } > > > > > void > _M_setstate(iostate __state) > { > > > _M_streambuf_state |= __state; > if (this->exceptions() & __state) > throw; > } > > > > > > > > bool > good() const > { return this->rdstate() == 0; } > > > > > > > > bool > eof() const > { return (this->rdstate() & eofbit) != 0; } ># 194 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > bool > fail() const > { return (this->rdstate() & (badbit | failbit)) != 0; } > > > > > > > > bool > bad() const > { return (this->rdstate() & badbit) != 0; } ># 215 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > iostate > exceptions() const > { return _M_exception; } ># 250 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > void > exceptions(iostate __except) > { > _M_exception = __except; > this->clear(_M_streambuf_state); > } > > > > > > > > explicit > basic_ios(basic_streambuf<_CharT, _Traits>* __sb) > : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), > _M_ctype(0), _M_num_put(0), _M_num_get(0) > { this->init(__sb); } > > > > > > > > virtual > ~basic_ios() { } ># 288 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > basic_ostream<_CharT, _Traits>* > tie() const > { return _M_tie; } ># 300 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > basic_ostream<_CharT, _Traits>* > tie(basic_ostream<_CharT, _Traits>* __tiestr) > { > basic_ostream<_CharT, _Traits>* __old = _M_tie; > _M_tie = __tiestr; > return __old; > } > > > > > > > > basic_streambuf<_CharT, _Traits>* > rdbuf() const > { return _M_streambuf; } ># 340 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > basic_streambuf<_CharT, _Traits>* > rdbuf(basic_streambuf<_CharT, _Traits>* __sb); ># 354 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > basic_ios& > copyfmt(const basic_ios& __rhs); > > > > > > > > char_type > fill() const > { > if (!_M_fill_init) > { > _M_fill = this->widen(' '); > _M_fill_init = true; > } > return _M_fill; > } ># 383 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > char_type > fill(char_type __ch) > { > char_type __old = this->fill(); > _M_fill = __ch; > return __old; > } ># 403 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > locale > imbue(const locale& __loc); ># 423 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > char > narrow(char_type __c, char __dfault) const > { return __check_facet(_M_ctype).narrow(__c, __dfault); } ># 442 "/usr/include/c++/4.3/bits/basic_ios.h" 3 > char_type > widen(char __c) const > { return __check_facet(_M_ctype).widen(__c); } > > protected: > > > > > > > > basic_ios() > : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), > _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) > { } > > > > > > > > void > init(basic_streambuf<_CharT, _Traits>* __sb); > > void > _M_cache_locale(const locale& __loc); > }; > >} > > ># 1 "/usr/include/c++/4.3/bits/basic_ios.tcc" 1 3 ># 39 "/usr/include/c++/4.3/bits/basic_ios.tcc" 3 > ># 40 "/usr/include/c++/4.3/bits/basic_ios.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::clear(iostate __state) > { > if (this->rdbuf()) > _M_streambuf_state = __state; > else > _M_streambuf_state = __state | badbit; > if (this->exceptions() & this->rdstate()) > __throw_ios_failure(("basic_ios::clear")); > } > > template<typename _CharT, typename _Traits> > basic_streambuf<_CharT, _Traits>* > basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) > { > basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; > _M_streambuf = __sb; > this->clear(); > return __old; > } > > template<typename _CharT, typename _Traits> > basic_ios<_CharT, _Traits>& > basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) > { > > > if (this != &__rhs) > { > > > > > _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? > _M_local_word : new _Words[__rhs._M_word_size]; > > > _Callback_list* __cb = __rhs._M_callbacks; > if (__cb) > __cb->_M_add_reference(); > _M_call_callbacks(erase_event); > if (_M_word != _M_local_word) > { > delete [] _M_word; > _M_word = 0; > } > _M_dispose_callbacks(); > > > _M_callbacks = __cb; > for (int __i = 0; __i < __rhs._M_word_size; ++__i) > __words[__i] = __rhs._M_word[__i]; > _M_word = __words; > _M_word_size = __rhs._M_word_size; > > this->flags(__rhs.flags()); > this->width(__rhs.width()); > this->precision(__rhs.precision()); > this->tie(__rhs.tie()); > this->fill(__rhs.fill()); > _M_ios_locale = __rhs.getloc(); > _M_cache_locale(_M_ios_locale); > > _M_call_callbacks(copyfmt_event); > > > this->exceptions(__rhs.exceptions()); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > locale > basic_ios<_CharT, _Traits>::imbue(const locale& __loc) > { > locale __old(this->getloc()); > ios_base::imbue(__loc); > _M_cache_locale(__loc); > if (this->rdbuf() != 0) > this->rdbuf()->pubimbue(__loc); > return __old; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) > { > > ios_base::_M_init(); > > > _M_cache_locale(_M_ios_locale); ># 150 "/usr/include/c++/4.3/bits/basic_ios.tcc" 3 > _M_fill = _CharT(); > _M_fill_init = false; > > _M_tie = 0; > _M_exception = goodbit; > _M_streambuf = __sb; > _M_streambuf_state = __sb ? goodbit : badbit; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) > { > if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) > _M_ctype = &use_facet<__ctype_type>(__loc); > else > _M_ctype = 0; > > if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) > _M_num_put = &use_facet<__num_put_type>(__loc); > else > _M_num_put = 0; > > if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) > _M_num_get = &use_facet<__num_get_type>(__loc); > else > _M_num_get = 0; > } > > > > > > extern template class basic_ios<char>; > > > extern template class basic_ios<wchar_t>; > > > >} ># 476 "/usr/include/c++/4.3/bits/basic_ios.h" 2 3 ># 51 "/usr/include/c++/4.3/ios" 2 3 ># 46 "/usr/include/c++/4.3/ostream" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 58 "/usr/include/c++/4.3/ostream" 3 > template<typename _CharT, typename _Traits> > class basic_ostream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef ctype<_CharT> __ctype_type; ># 85 "/usr/include/c++/4.3/ostream" 3 > explicit > basic_ostream(__streambuf_type* __sb) > { this->init(__sb); } > > > > > > > virtual > ~basic_ostream() { } > > > class sentry; > friend class sentry; ># 111 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > operator<<(__ostream_type& (*__pf)(__ostream_type&)) > { > > > > return __pf(*this); > } > > __ostream_type& > operator<<(__ios_type& (*__pf)(__ios_type&)) > { > > > > __pf(*this); > return *this; > } > > __ostream_type& > operator<<(ios_base& (*__pf) (ios_base&)) > { > > > > __pf(*this); > return *this; > } ># 168 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > operator<<(long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(unsigned long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(bool __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(short __n); > > __ostream_type& > operator<<(unsigned short __n) > { > > > return _M_insert(static_cast<unsigned long>(__n)); > } > > __ostream_type& > operator<<(int __n); > > __ostream_type& > operator<<(unsigned int __n) > { > > > return _M_insert(static_cast<unsigned long>(__n)); > } > > > __ostream_type& > operator<<(long long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(unsigned long long __n) > { return _M_insert(__n); } > > > __ostream_type& > operator<<(double __f) > { return _M_insert(__f); } > > __ostream_type& > operator<<(float __f) > { > > > return _M_insert(static_cast<double>(__f)); > } > > __ostream_type& > operator<<(long double __f) > { return _M_insert(__f); } > > __ostream_type& > operator<<(const void* __p) > { return _M_insert(__p); } ># 253 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > operator<<(__streambuf_type* __sb); ># 286 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > put(char_type __c); > > > void > _M_write(const char_type* __s, streamsize __n) > { > const streamsize __put = this->rdbuf()->sputn(__s, __n); > if (__put != __n) > this->setstate(ios_base::badbit); > } ># 314 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > write(const char_type* __s, streamsize __n); ># 327 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > flush(); ># 338 "/usr/include/c++/4.3/ostream" 3 > pos_type > tellp(); ># 349 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > seekp(pos_type); ># 361 "/usr/include/c++/4.3/ostream" 3 > __ostream_type& > seekp(off_type, ios_base::seekdir); > > protected: > basic_ostream() > { this->init(0); } > > template<typename _ValueT> > __ostream_type& > _M_insert(_ValueT __v); > }; ># 383 "/usr/include/c++/4.3/ostream" 3 > template <typename _CharT, typename _Traits> > class basic_ostream<_CharT, _Traits>::sentry > { > > bool _M_ok; > basic_ostream<_CharT, _Traits>& _M_os; > > public: ># 402 "/usr/include/c++/4.3/ostream" 3 > explicit > sentry(basic_ostream<_CharT, _Traits>& __os); ># 412 "/usr/include/c++/4.3/ostream" 3 > ~sentry() > { > > if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) > { > > if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) > _M_os.setstate(ios_base::badbit); > } > } ># 430 "/usr/include/c++/4.3/ostream" 3 > operator bool() const > { return _M_ok; } > }; ># 451 "/usr/include/c++/4.3/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) > { return __ostream_insert(__out, &__c, 1); } > > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) > { return (__out << __out.widen(__c)); } > > > template <class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, char __c) > { return __ostream_insert(__out, &__c, 1); } > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, signed char __c) > { return (__out << static_cast<char>(__c)); } > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c) > { return (__out << static_cast<char>(__c)); } ># 493 "/usr/include/c++/4.3/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > __ostream_insert(__out, __s, > static_cast<streamsize>(_Traits::length(__s))); > return __out; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits> & > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const char* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > __ostream_insert(__out, __s, > static_cast<streamsize>(_Traits::length(__s))); > return __out; > } > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } > > template<class _Traits> > inline basic_ostream<char, _Traits> & > operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } ># 543 "/usr/include/c++/4.3/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > endl(basic_ostream<_CharT, _Traits>& __os) > { return flush(__os.put(__os.widen('\n'))); } > > > > > > > > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > ends(basic_ostream<_CharT, _Traits>& __os) > { return __os.put(_CharT()); } > > > > > > > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > flush(basic_ostream<_CharT, _Traits>& __os) > { return __os.flush(); } > >} > > ># 1 "/usr/include/c++/4.3/bits/ostream.tcc" 1 3 ># 44 "/usr/include/c++/4.3/bits/ostream.tcc" 3 > ># 45 "/usr/include/c++/4.3/bits/ostream.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>::sentry:: > sentry(basic_ostream<_CharT, _Traits>& __os) > : _M_ok(false), _M_os(__os) > { > > if (__os.tie() && __os.good()) > __os.tie()->flush(); > > if (__os.good()) > _M_ok = true; > else > __os.setstate(ios_base::failbit); > } > > template<typename _CharT, typename _Traits> > template<typename _ValueT> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > _M_insert(_ValueT __v) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __v).failed()) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(short __n) > { > > > const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt == ios_base::oct || __fmt == ios_base::hex) > return _M_insert(static_cast<long>(static_cast<unsigned short>(__n))); > else > return _M_insert(static_cast<long>(__n)); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(int __n) > { > > > const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt == ios_base::oct || __fmt == ios_base::hex) > return _M_insert(static_cast<long>(static_cast<unsigned int>(__n))); > else > return _M_insert(static_cast<long>(__n)); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(__streambuf_type* __sbin) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this); > if (__cerb && __sbin) > { > try > { > if (!__copy_streambufs(__sbin, this->rdbuf())) > __err |= ios_base::failbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbin) > __err |= ios_base::badbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > put(char_type __c) > { > > > > > > > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __put = this->rdbuf()->sputc(__c); > if (traits_type::eq_int_type(__put, traits_type::eof())) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > write(const _CharT* __s, streamsize __n) > { > > > > > > > > sentry __cerb(*this); > if (__cerb) > { > try > { _M_write(__s, __n); } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > flush() > { > > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (this->rdbuf() && this->rdbuf()->pubsync() == -1) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_ostream<_CharT, _Traits>::pos_type > basic_ostream<_CharT, _Traits>:: > tellp() > { > pos_type __ret = pos_type(-1); > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(pos_type __pos) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(off_type __off, ios_base::seekdir __dir) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > { > > > const size_t __clen = char_traits<char>::length(__s); > try > { > struct __ptr_guard > { > _CharT *__p; > __ptr_guard (_CharT *__ip): __p(__ip) { } > ~__ptr_guard() { delete[] __p; } > _CharT* __get() { return __p; } > } __pg (new _CharT[__clen]); > > _CharT *__ws = __pg.__get(); > for (size_t __i = 0; __i < __clen; ++__i) > __ws[__i] = __out.widen(__s[__i]); > __ostream_insert(__out, __ws, __clen); > } > catch(__cxxabiv1::__forced_unwind&) > { > __out._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > return __out; > } > > > > > > extern template class basic_ostream<char>; > extern template ostream& endl(ostream&); > extern template ostream& ends(ostream&); > extern template ostream& flush(ostream&); > extern template ostream& operator<<(ostream&, char); > extern template ostream& operator<<(ostream&, unsigned char); > extern template ostream& operator<<(ostream&, signed char); > extern template ostream& operator<<(ostream&, const char*); > extern template ostream& operator<<(ostream&, const unsigned char*); > extern template ostream& operator<<(ostream&, const signed char*); > > extern template ostream& ostream::_M_insert(long); > extern template ostream& ostream::_M_insert(unsigned long); > extern template ostream& ostream::_M_insert(bool); > > extern template ostream& ostream::_M_insert(long long); > extern template ostream& ostream::_M_insert(unsigned long long); > > extern template ostream& ostream::_M_insert(double); > extern template ostream& ostream::_M_insert(long double); > extern template ostream& ostream::_M_insert(const void*); > > > extern template class basic_ostream<wchar_t>; > extern template wostream& endl(wostream&); > extern template wostream& ends(wostream&); > extern template wostream& flush(wostream&); > extern template wostream& operator<<(wostream&, wchar_t); > extern template wostream& operator<<(wostream&, char); > extern template wostream& operator<<(wostream&, const wchar_t*); > extern template wostream& operator<<(wostream&, const char*); > > extern template wostream& wostream::_M_insert(long); > extern template wostream& wostream::_M_insert(unsigned long); > extern template wostream& wostream::_M_insert(bool); > > extern template wostream& wostream::_M_insert(long long); > extern template wostream& wostream::_M_insert(unsigned long long); > > extern template wostream& wostream::_M_insert(double); > extern template wostream& wostream::_M_insert(long double); > extern template wostream& wostream::_M_insert(const void*); > > > >} ># 573 "/usr/include/c++/4.3/ostream" 2 3 ># 46 "/usr/include/c++/4.3/iostream" 2 3 ># 1 "/usr/include/c++/4.3/istream" 1 3 ># 43 "/usr/include/c++/4.3/istream" 3 > ># 44 "/usr/include/c++/4.3/istream" 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 58 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > typedef ctype<_CharT> __ctype_type; > > protected: > > > > > > streamsize _M_gcount; > > public: ># 94 "/usr/include/c++/4.3/istream" 3 > explicit > basic_istream(__streambuf_type* __sb) > : _M_gcount(streamsize(0)) > { this->init(__sb); } > > > > > > > virtual > ~basic_istream() > { _M_gcount = streamsize(0); } > > > class sentry; > friend class sentry; ># 122 "/usr/include/c++/4.3/istream" 3 > __istream_type& > operator>>(__istream_type& (*__pf)(__istream_type&)) > { return __pf(*this); } > > __istream_type& > operator>>(__ios_type& (*__pf)(__ios_type&)) > { > __pf(*this); > return *this; > } > > __istream_type& > operator>>(ios_base& (*__pf)(ios_base&)) > { > __pf(*this); > return *this; > } ># 169 "/usr/include/c++/4.3/istream" 3 > __istream_type& > operator>>(bool& __n) > { return _M_extract(__n); } > > __istream_type& > operator>>(short& __n); > > __istream_type& > operator>>(unsigned short& __n) > { return _M_extract(__n); } > > __istream_type& > operator>>(int& __n); > > __istream_type& > operator>>(unsigned int& __n) > { return _M_extract(__n); } > > __istream_type& > operator>>(long& __n) > { return _M_extract(__n); } > > __istream_type& > operator>>(unsigned long& __n) > { return _M_extract(__n); } > > > __istream_type& > operator>>(long long& __n) > { return _M_extract(__n); } > > __istream_type& > operator>>(unsigned long long& __n) > { return _M_extract(__n); } > > > __istream_type& > operator>>(float& __f) > { return _M_extract(__f); } > > __istream_type& > operator>>(double& __f) > { return _M_extract(__f); } > > __istream_type& > operator>>(long double& __f) > { return _M_extract(__f); } > > __istream_type& > operator>>(void*& __p) > { return _M_extract(__p); } ># 241 "/usr/include/c++/4.3/istream" 3 > __istream_type& > operator>>(__streambuf_type* __sb); ># 251 "/usr/include/c++/4.3/istream" 3 > streamsize > gcount() const > { return _M_gcount; } ># 283 "/usr/include/c++/4.3/istream" 3 > int_type > get(); ># 297 "/usr/include/c++/4.3/istream" 3 > __istream_type& > get(char_type& __c); ># 324 "/usr/include/c++/4.3/istream" 3 > __istream_type& > get(char_type* __s, streamsize __n, char_type __delim); ># 335 "/usr/include/c++/4.3/istream" 3 > __istream_type& > get(char_type* __s, streamsize __n) > { return this->get(__s, __n, this->widen('\n')); } ># 358 "/usr/include/c++/4.3/istream" 3 > __istream_type& > get(__streambuf_type& __sb, char_type __delim); ># 368 "/usr/include/c++/4.3/istream" 3 > __istream_type& > get(__streambuf_type& __sb) > { return this->get(__sb, this->widen('\n')); } ># 397 "/usr/include/c++/4.3/istream" 3 > __istream_type& > getline(char_type* __s, streamsize __n, char_type __delim); ># 408 "/usr/include/c++/4.3/istream" 3 > __istream_type& > getline(char_type* __s, streamsize __n) > { return this->getline(__s, __n, this->widen('\n')); } ># 432 "/usr/include/c++/4.3/istream" 3 > __istream_type& > ignore(); > > __istream_type& > ignore(streamsize __n); > > __istream_type& > ignore(streamsize __n, int_type __delim); ># 449 "/usr/include/c++/4.3/istream" 3 > int_type > peek(); ># 467 "/usr/include/c++/4.3/istream" 3 > __istream_type& > read(char_type* __s, streamsize __n); ># 486 "/usr/include/c++/4.3/istream" 3 > streamsize > readsome(char_type* __s, streamsize __n); ># 502 "/usr/include/c++/4.3/istream" 3 > __istream_type& > putback(char_type __c); ># 517 "/usr/include/c++/4.3/istream" 3 > __istream_type& > unget(); ># 535 "/usr/include/c++/4.3/istream" 3 > int > sync(); ># 549 "/usr/include/c++/4.3/istream" 3 > pos_type > tellg(); ># 564 "/usr/include/c++/4.3/istream" 3 > __istream_type& > seekg(pos_type); ># 580 "/usr/include/c++/4.3/istream" 3 > __istream_type& > seekg(off_type, ios_base::seekdir); > > > protected: > basic_istream() > : _M_gcount(streamsize(0)) > { this->init(0); } > > template<typename _ValueT> > __istream_type& > _M_extract(_ValueT& __v); > }; > > > template<> > basic_istream<char>& > basic_istream<char>:: > getline(char_type* __s, streamsize __n, char_type __delim); > > template<> > basic_istream<char>& > basic_istream<char>:: > ignore(streamsize __n); > > template<> > basic_istream<char>& > basic_istream<char>:: > ignore(streamsize __n, int_type __delim); > > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > getline(char_type* __s, streamsize __n, char_type __delim); > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > ignore(streamsize __n); > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > ignore(streamsize __n, int_type __delim); ># 638 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream<_CharT, _Traits>::sentry > { > public: > > typedef _Traits traits_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::__ctype_type __ctype_type; > typedef typename _Traits::int_type __int_type; ># 670 "/usr/include/c++/4.3/istream" 3 > explicit > sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); ># 680 "/usr/include/c++/4.3/istream" 3 > operator bool() const > { return _M_ok; } > > private: > bool _M_ok; > }; ># 700 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, signed char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } ># 741 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); > > > template<> > basic_istream<char>& > operator>>(basic_istream<char>& __in, char* __s); > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, signed char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } ># 768 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > class basic_iostream > : public basic_istream<_CharT, _Traits>, > public basic_ostream<_CharT, _Traits> > { > public: > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > > > > > > > > explicit > basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) > : __istream_type(__sb), __ostream_type(__sb) { } > > > > > virtual > ~basic_iostream() { } > > protected: > basic_iostream() > : __istream_type(), __ostream_type() { } > }; ># 829 "/usr/include/c++/4.3/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > ws(basic_istream<_CharT, _Traits>& __is); > >} > > ># 1 "/usr/include/c++/4.3/bits/istream.tcc" 1 3 ># 44 "/usr/include/c++/4.3/bits/istream.tcc" 3 > ># 45 "/usr/include/c++/4.3/bits/istream.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) { > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>::sentry:: > sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > if (__in.good()) > { > if (__in.tie()) > __in.tie()->flush(); > if (!__noskip && bool(__in.flags() & ios_base::skipws)) > { > const __int_type __eof = traits_type::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > const __ctype_type& __ct = __check_facet(__in._M_ctype); > while (!traits_type::eq_int_type(__c, __eof) > && __ct.is(ctype_base::space, > traits_type::to_char_type(__c))) > __c = __sb->snextc(); > > > > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > } > > if (__in.good() && __err == ios_base::goodbit) > _M_ok = true; > else > { > __err |= ios_base::failbit; > __in.setstate(__err); > } > } > > template<typename _CharT, typename _Traits> > template<typename _ValueT> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > _M_extract(_ValueT& __v) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __v); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(short& __n) > { > > > long __l; > _M_extract(__l); > if (!this->fail()) > { > if (__gnu_cxx::__numeric_traits<short>::__min <= __l > && __l <= __gnu_cxx::__numeric_traits<short>::__max) > __n = short(__l); > else > this->setstate(ios_base::failbit); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(int& __n) > { > > > long __l; > _M_extract(__l); > if (!this->fail()) > { > if (__gnu_cxx::__numeric_traits<int>::__min <= __l > && __l <= __gnu_cxx::__numeric_traits<int>::__max) > __n = int(__l); > else > this->setstate(ios_base::failbit); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(__streambuf_type* __sbout) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, false); > if (__cerb && __sbout) > { > try > { > bool __ineof; > if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) > __err |= ios_base::failbit; > if (__ineof) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::failbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbout) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > get(void) > { > const int_type __eof = traits_type::eof(); > int_type __c = __eof; > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > __c = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__c, __eof)) > _M_gcount = 1; > else > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type& __c) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __cb = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__cb, traits_type::eof())) > { > _M_gcount = 1; > __c = traits_type::to_char_type(__cb); > } > else > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > *__s++ = traits_type::to_char_type(__c); > ++_M_gcount; > __c = __sb->snextc(); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > > > if (__n > 0) > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(__streambuf_type& __sb, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __this_sb = this->rdbuf(); > int_type __c = __this_sb->sgetc(); > char_type __c2 = traits_type::to_char_type(__c); > > while (!traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim) > && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) > { > ++_M_gcount; > __c = __this_sb->snextc(); > __c2 = traits_type::to_char_type(__c); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > getline(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > *__s++ = traits_type::to_char_type(__c); > __c = __sb->snextc(); > ++_M_gcount; > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else > { > if (traits_type::eq_int_type(__c, __idelim)) > { > __sb->sbumpc(); > ++_M_gcount; > } > else > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > > > if (__n > 0) > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(void) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > > if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) > __err |= ios_base::eofbit; > else > _M_gcount = 1; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb && __n > 0) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); ># 468 "/usr/include/c++/4.3/bits/istream.tcc" 3 > bool __large_ignore = false; > while (true) > { > while (_M_gcount < __n > && !traits_type::eq_int_type(__c, __eof)) > { > ++_M_gcount; > __c = __sb->snextc(); > } > if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max > && !traits_type::eq_int_type(__c, __eof)) > { > _M_gcount = > __gnu_cxx::__numeric_traits<streamsize>::__min; > __large_ignore = true; > } > else > break; > } > > if (__large_ignore) > _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(streamsize __n, int_type __delim) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb && __n > 0) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > > bool __large_ignore = false; > while (true) > { > while (_M_gcount < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __delim)) > { > ++_M_gcount; > __c = __sb->snextc(); > } > if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __delim)) > { > _M_gcount = > __gnu_cxx::__numeric_traits<streamsize>::__min; > __large_ignore = true; > } > else > break; > } > > if (__large_ignore) > _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else if (traits_type::eq_int_type(__c, __delim)) > { > if (_M_gcount > < __gnu_cxx::__numeric_traits<streamsize>::__max) > ++_M_gcount; > __sb->sbumpc(); > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > peek(void) > { > int_type __c = traits_type::eof(); > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > __c = this->rdbuf()->sgetc(); > if (traits_type::eq_int_type(__c, traits_type::eof())) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > read(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > _M_gcount = this->rdbuf()->sgetn(__s, __n); > if (_M_gcount != __n) > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_istream<_CharT, _Traits>:: > readsome(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > > const streamsize __num = this->rdbuf()->in_avail(); > if (__num > 0) > _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); > else if (__num == -1) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return _M_gcount; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > putback(char_type __c) > { > > > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > unget(void) > { > > > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sungetc(), __eof)) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > int > basic_istream<_CharT, _Traits>:: > sync(void) > { > > > int __ret = -1; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > __streambuf_type* __sb = this->rdbuf(); > if (__sb) > { > if (__sb->pubsync() == -1) > __err |= ios_base::badbit; > else > __ret = 0; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __ret; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::pos_type > basic_istream<_CharT, _Traits>:: > tellg(void) > { > > > pos_type __ret = pos_type(-1); > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, > ios_base::in); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(pos_type __pos) > { > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(off_type __off, ios_base::seekdir __dir) > { > > > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::int_type __int_type; > > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > try > { > const __int_type __cb = __in.rdbuf()->sbumpc(); > if (!_Traits::eq_int_type(__cb, _Traits::eof())) > __c = _Traits::to_char_type(__cb); > else > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > if (__err) > __in.setstate(__err); > } > return __in; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef typename _Traits::int_type int_type; > typedef _CharT char_type; > typedef ctype<_CharT> __ctype_type; > > streamsize __extracted = 0; > ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > streamsize __num = __in.width(); > if (__num <= 0) > __num = __gnu_cxx::__numeric_traits<streamsize>::__max; > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > > const int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > int_type __c = __sb->sgetc(); > > while (__extracted < __num - 1 > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(ctype_base::space, > _Traits::to_char_type(__c))) > { > *__s++ = _Traits::to_char_type(__c); > ++__extracted; > __c = __sb->snextc(); > } > if (_Traits::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > > > > *__s = char_type(); > __in.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > } > if (!__extracted) > __err |= ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > ws(basic_istream<_CharT, _Traits>& __in) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef typename __istream_type::int_type __int_type; > typedef ctype<_CharT> __ctype_type; > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > while (!_Traits::eq_int_type(__c, __eof) > && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) > __c = __sb->snextc(); > > if (_Traits::eq_int_type(__c, __eof)) > __in.setstate(ios_base::eofbit); > return __in; > } > > > > > > extern template class basic_istream<char>; > extern template istream& ws(istream&); > extern template istream& operator>>(istream&, char&); > extern template istream& operator>>(istream&, char*); > extern template istream& operator>>(istream&, unsigned char&); > extern template istream& operator>>(istream&, signed char&); > extern template istream& operator>>(istream&, unsigned char*); > extern template istream& operator>>(istream&, signed char*); > > extern template istream& istream::_M_extract(unsigned short&); > extern template istream& istream::_M_extract(unsigned int&); > extern template istream& istream::_M_extract(long&); > extern template istream& istream::_M_extract(unsigned long&); > extern template istream& istream::_M_extract(bool&); > > extern template istream& istream::_M_extract(long long&); > extern template istream& istream::_M_extract(unsigned long long&); > > extern template istream& istream::_M_extract(float&); > extern template istream& istream::_M_extract(double&); > extern template istream& istream::_M_extract(long double&); > extern template istream& istream::_M_extract(void*&); > > extern template class basic_iostream<char>; > > > extern template class basic_istream<wchar_t>; > extern template wistream& ws(wistream&); > extern template wistream& operator>>(wistream&, wchar_t&); > extern template wistream& operator>>(wistream&, wchar_t*); > > extern template wistream& wistream::_M_extract(unsigned short&); > extern template wistream& wistream::_M_extract(unsigned int&); > extern template wistream& wistream::_M_extract(long&); > extern template wistream& wistream::_M_extract(unsigned long&); > extern template wistream& wistream::_M_extract(bool&); > > extern template wistream& wistream::_M_extract(long long&); > extern template wistream& wistream::_M_extract(unsigned long long&); > > extern template wistream& wistream::_M_extract(float&); > extern template wistream& wistream::_M_extract(double&); > extern template wistream& wistream::_M_extract(long double&); > extern template wistream& wistream::_M_extract(void*&); > > extern template class basic_iostream<wchar_t>; > > > >} ># 837 "/usr/include/c++/4.3/istream" 2 3 ># 47 "/usr/include/c++/4.3/iostream" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) { ># 63 "/usr/include/c++/4.3/iostream" 3 > extern istream cin; > extern ostream cout; > extern ostream cerr; > extern ostream clog; > > > extern wistream wcin; > extern wostream wcout; > extern wostream wcerr; > extern wostream wclog; > > > > > static ios_base::Init __ioinit; > >} ># 24 "../XrdSys/XrdSysHeaders.hh" 2 >using namespace std; ># 47 "XrdSecProtocolpwd.cc" 2 ># 1 "../XrdSys/XrdSysLogger.hh" 1 ># 18 "../XrdSys/XrdSysLogger.hh" ># 1 "/usr/include/string.h" 1 3 4 ># 28 "/usr/include/string.h" 3 4 >extern "C" { > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 34 "/usr/include/string.h" 2 3 4 > > > > >extern void *memcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern void *memmove (void *__dest, __const void *__src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, > int __c, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > >extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern void *memchr (__const void *__s, int __c, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern void *rawmemchr (__const void *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern void *memrchr (__const void *__s, int __c, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); > >extern char *strncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern char *strcat (char *__restrict __dest, __const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); > >extern char *strncat (char *__restrict __dest, __const char *__restrict __src, > size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int strcmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > >extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern int strcoll (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > >extern size_t strxfrm (char *__restrict __dest, > __const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (2))); > ># 121 "/usr/include/string.h" 3 4 >extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); > >extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, > __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); > > > > >extern char *strdup (__const char *__s) > throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); > > > > > > >extern char *strndup (__const char *__string, size_t __n) > throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); ># 165 "/usr/include/string.h" 3 4 > > >extern char *strchr (__const char *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > >extern char *strrchr (__const char *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern char *strchrnul (__const char *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern size_t strcspn (__const char *__s, __const char *__reject) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern size_t strspn (__const char *__s, __const char *__accept) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > >extern char *strpbrk (__const char *__s, __const char *__accept) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > >extern char *strstr (__const char *__haystack, __const char *__needle) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > >extern char *strtok (char *__restrict __s, __const char *__restrict __delim) > throw () __attribute__ ((__nonnull__ (2))); > > > > >extern char *__strtok_r (char *__restrict __s, > __const char *__restrict __delim, > char **__restrict __save_ptr) > throw () __attribute__ ((__nonnull__ (2, 3))); > >extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, > char **__restrict __save_ptr) > throw () __attribute__ ((__nonnull__ (2, 3))); > > > > >extern char *strcasestr (__const char *__haystack, __const char *__needle) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern void *memmem (__const void *__haystack, size_t __haystacklen, > __const void *__needle, size_t __needlelen) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); > > > >extern void *__mempcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern void *mempcpy (void *__restrict __dest, > __const void *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern size_t strlen (__const char *__s) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern size_t strnlen (__const char *__string, size_t __maxlen) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > >extern char *strerror (int __errnum) throw (); > ># 281 "/usr/include/string.h" 3 4 >extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern char *strerror_l (int __errnum, __locale_t __l) throw (); > > > > > >extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > > >extern void bcopy (__const void *__src, void *__dest, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > >extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern char *index (__const char *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern char *rindex (__const char *__s, int __c) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > >extern int ffs (int __i) throw () __attribute__ ((__const__)); > > > > >extern int ffsl (long int __l) throw () __attribute__ ((__const__)); > >__extension__ extern int ffsll (long long int __ll) > throw () __attribute__ ((__const__)); > > > > >extern int strcasecmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int strcasecmp_l (__const char *__s1, __const char *__s2, > __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); > >extern int strncasecmp_l (__const char *__s1, __const char *__s2, > size_t __n, __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); > > > > > >extern char *strsep (char **__restrict __stringp, > __const char *__restrict __delim) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int strverscmp (__const char *__s1, __const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern char *strsignal (int __sig) throw (); > > >extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern char *__stpncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern char *stpncpy (char *__restrict __dest, > __const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); > > >extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern char *basename (__const char *__filename) throw () __attribute__ ((__nonnull__ (1))); ># 432 "/usr/include/string.h" 3 4 >} ># 19 "../XrdSys/XrdSysLogger.hh" 2 > > > > > > > ># 1 "../XrdSys/XrdSysPthread.hh" 1 ># 15 "../XrdSys/XrdSysPthread.hh" ># 1 "/usr/include/errno.h" 1 3 4 ># 16 "../XrdSys/XrdSysPthread.hh" 2 > > > > ># 1 "/usr/include/signal.h" 1 3 4 ># 31 "/usr/include/signal.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 104 "/usr/include/bits/sigset.h" 3 4 >extern int __sigismember (__const __sigset_t *, int); >extern int __sigaddset (__sigset_t *, int); >extern int __sigdelset (__sigset_t *, int); ># 118 "/usr/include/bits/sigset.h" 3 4 >extern __inline __attribute__ ((__gnu_inline__)) int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; } >extern __inline __attribute__ ((__gnu_inline__)) int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); } >extern __inline __attribute__ ((__gnu_inline__)) int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); } ># 34 "/usr/include/signal.h" 2 3 4 > > > > > > > >typedef __sig_atomic_t sig_atomic_t; > ># 58 "/usr/include/signal.h" 3 4 ># 1 "/usr/include/bits/signum.h" 1 3 4 ># 59 "/usr/include/signal.h" 2 3 4 ># 75 "/usr/include/signal.h" 3 4 >typedef void (*__sighandler_t) (int); > > > > >extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) > throw (); > >extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) > throw (); > > > > > > > >extern __sighandler_t signal (int __sig, __sighandler_t __handler) > throw (); ># 104 "/usr/include/signal.h" 3 4 > > > > > >extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) > throw (); > > > > > > >extern int kill (__pid_t __pid, int __sig) throw (); > > > > > > >extern int killpg (__pid_t __pgrp, int __sig) throw (); > > > > >extern int raise (int __sig) throw (); > > > > >extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) > throw (); >extern int gsignal (int __sig) throw (); > > > > >extern void psignal (int __sig, __const char *__s); ># 153 "/usr/include/signal.h" 3 4 >extern int __sigpause (int __sig_or_mask, int __is_sig); ># 162 "/usr/include/signal.h" 3 4 >extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); ># 181 "/usr/include/signal.h" 3 4 >extern int sigblock (int __mask) throw () __attribute__ ((__deprecated__)); > > >extern int sigsetmask (int __mask) throw () __attribute__ ((__deprecated__)); > > >extern int siggetmask (void) throw () __attribute__ ((__deprecated__)); ># 196 "/usr/include/signal.h" 3 4 >typedef __sighandler_t sighandler_t; > > > > >typedef __sighandler_t sig_t; ># 212 "/usr/include/signal.h" 3 4 ># 1 "/usr/include/bits/siginfo.h" 1 3 4 ># 25 "/usr/include/bits/siginfo.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 26 "/usr/include/bits/siginfo.h" 2 3 4 > > > > > > > >typedef union sigval > { > int sival_int; > void *sival_ptr; > } sigval_t; ># 51 "/usr/include/bits/siginfo.h" 3 4 >typedef struct siginfo > { > int si_signo; > int si_errno; > > int si_code; > > union > { > int _pad[((128 / sizeof (int)) - 4)]; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > } _kill; > > > struct > { > int si_tid; > int si_overrun; > sigval_t si_sigval; > } _timer; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > sigval_t si_sigval; > } _rt; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > int si_status; > __clock_t si_utime; > __clock_t si_stime; > } _sigchld; > > > struct > { > void *si_addr; > } _sigfault; > > > struct > { > long int si_band; > int si_fd; > } _sigpoll; > } _sifields; > } siginfo_t; ># 129 "/usr/include/bits/siginfo.h" 3 4 >enum >{ > SI_ASYNCNL = -60, > > SI_TKILL = -6, > > SI_SIGIO, > > SI_ASYNCIO, > > SI_MESGQ, > > SI_TIMER, > > SI_QUEUE, > > SI_USER, > > SI_KERNEL = 0x80 > >}; > > > >enum >{ > ILL_ILLOPC = 1, > > ILL_ILLOPN, > > ILL_ILLADR, > > ILL_ILLTRP, > > ILL_PRVOPC, > > ILL_PRVREG, > > ILL_COPROC, > > ILL_BADSTK > >}; > > >enum >{ > FPE_INTDIV = 1, > > FPE_INTOVF, > > FPE_FLTDIV, > > FPE_FLTOVF, > > FPE_FLTUND, > > FPE_FLTRES, > > FPE_FLTINV, > > FPE_FLTSUB > >}; > > >enum >{ > SEGV_MAPERR = 1, > > SEGV_ACCERR > >}; > > >enum >{ > BUS_ADRALN = 1, > > BUS_ADRERR, > > BUS_OBJERR > >}; > > >enum >{ > TRAP_BRKPT = 1, > > TRAP_TRACE > >}; > > >enum >{ > CLD_EXITED = 1, > > CLD_KILLED, > > CLD_DUMPED, > > CLD_TRAPPED, > > CLD_STOPPED, > > CLD_CONTINUED > >}; > > >enum >{ > POLL_IN = 1, > > POLL_OUT, > > POLL_MSG, > > POLL_ERR, > > POLL_PRI, > > POLL_HUP > >}; ># 273 "/usr/include/bits/siginfo.h" 3 4 >typedef struct sigevent > { > sigval_t sigev_value; > int sigev_signo; > int sigev_notify; > > union > { > int _pad[((64 / sizeof (int)) - 4)]; > > > > __pid_t _tid; > > struct > { > void (*_function) (sigval_t); > void *_attribute; > } _sigev_thread; > } _sigev_un; > } sigevent_t; > > > > > > >enum >{ > SIGEV_SIGNAL = 0, > > SIGEV_NONE, > > SIGEV_THREAD, > > > SIGEV_THREAD_ID = 4 > >}; ># 213 "/usr/include/signal.h" 2 3 4 > > > >extern int sigemptyset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigfillset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigaddset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigdelset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigismember (__const sigset_t *__set, int __signo) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int sigisemptyset (__const sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigandset (sigset_t *__set, __const sigset_t *__left, > __const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > >extern int sigorset (sigset_t *__set, __const sigset_t *__left, > __const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > > > ># 1 "/usr/include/bits/sigaction.h" 1 3 4 ># 25 "/usr/include/bits/sigaction.h" 3 4 >struct sigaction > { > > > union > { > > __sighandler_t sa_handler; > > void (*sa_sigaction) (int, siginfo_t *, void *); > } > __sigaction_handler; > > > > > > > > __sigset_t sa_mask; > > > int sa_flags; > > > void (*sa_restorer) (void); > }; ># 247 "/usr/include/signal.h" 2 3 4 > > >extern int sigprocmask (int __how, __const sigset_t *__restrict __set, > sigset_t *__restrict __oset) throw (); > > > > > > >extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1))); > > >extern int sigaction (int __sig, __const struct sigaction *__restrict __act, > struct sigaction *__restrict __oact) throw (); > > >extern int sigpending (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) > __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern int sigwaitinfo (__const sigset_t *__restrict __set, > siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); > > > > > > >extern int sigtimedwait (__const sigset_t *__restrict __set, > siginfo_t *__restrict __info, > __const struct timespec *__restrict __timeout) > __attribute__ ((__nonnull__ (1))); > > > >extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) > throw (); ># 304 "/usr/include/signal.h" 3 4 >extern __const char *__const _sys_siglist[65]; >extern __const char *__const sys_siglist[65]; > > >struct sigvec > { > __sighandler_t sv_handler; > int sv_mask; > > int sv_flags; > > }; ># 328 "/usr/include/signal.h" 3 4 >extern int sigvec (int __sig, __const struct sigvec *__vec, > struct sigvec *__ovec) throw (); > > > ># 1 "/usr/include/bits/sigcontext.h" 1 3 4 ># 26 "/usr/include/bits/sigcontext.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 27 "/usr/include/bits/sigcontext.h" 2 3 4 > >struct _fpreg >{ > unsigned short significand[4]; > unsigned short exponent; >}; > >struct _fpxreg >{ > unsigned short significand[4]; > unsigned short exponent; > unsigned short padding[3]; >}; > >struct _xmmreg >{ > __uint32_t element[4]; >}; ># 109 "/usr/include/bits/sigcontext.h" 3 4 >struct _fpstate >{ > > __uint16_t cwd; > __uint16_t swd; > __uint16_t ftw; > __uint16_t fop; > __uint64_t rip; > __uint64_t rdp; > __uint32_t mxcsr; > __uint32_t mxcr_mask; > struct _fpxreg _st[8]; > struct _xmmreg _xmm[16]; > __uint32_t padding[24]; >}; > >struct sigcontext >{ > unsigned long r8; > unsigned long r9; > unsigned long r10; > unsigned long r11; > unsigned long r12; > unsigned long r13; > unsigned long r14; > unsigned long r15; > unsigned long rdi; > unsigned long rsi; > unsigned long rbp; > unsigned long rbx; > unsigned long rdx; > unsigned long rax; > unsigned long rcx; > unsigned long rsp; > unsigned long rip; > unsigned long eflags; > unsigned short cs; > unsigned short gs; > unsigned short fs; > unsigned short __pad0; > unsigned long err; > unsigned long trapno; > unsigned long oldmask; > unsigned long cr2; > struct _fpstate * fpstate; > unsigned long __reserved1 [8]; >}; ># 334 "/usr/include/signal.h" 2 3 4 > > >extern int sigreturn (struct sigcontext *__scp) throw (); > > > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 344 "/usr/include/signal.h" 2 3 4 > > > > >extern int siginterrupt (int __sig, int __interrupt) throw (); > ># 1 "/usr/include/bits/sigstack.h" 1 3 4 ># 26 "/usr/include/bits/sigstack.h" 3 4 >struct sigstack > { > void *ss_sp; > int ss_onstack; > }; > > > >enum >{ > SS_ONSTACK = 1, > > SS_DISABLE > >}; ># 50 "/usr/include/bits/sigstack.h" 3 4 >typedef struct sigaltstack > { > void *ss_sp; > int ss_flags; > size_t ss_size; > } stack_t; ># 351 "/usr/include/signal.h" 2 3 4 > > ># 1 "/usr/include/sys/ucontext.h" 1 3 4 ># 24 "/usr/include/sys/ucontext.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 25 "/usr/include/sys/ucontext.h" 2 3 4 ># 33 "/usr/include/sys/ucontext.h" 3 4 >typedef long int greg_t; > > > > > >typedef greg_t gregset_t[23]; > > > >enum >{ > REG_R8 = 0, > > REG_R9, > > REG_R10, > > REG_R11, > > REG_R12, > > REG_R13, > > REG_R14, > > REG_R15, > > REG_RDI, > > REG_RSI, > > REG_RBP, > > REG_RBX, > > REG_RDX, > > REG_RAX, > > REG_RCX, > > REG_RSP, > > REG_RIP, > > REG_EFL, > > REG_CSGSFS, > > REG_ERR, > > REG_TRAPNO, > > REG_OLDMASK, > > REG_CR2 > >}; > > >struct _libc_fpxreg >{ > unsigned short int significand[4]; > unsigned short int exponent; > unsigned short int padding[3]; >}; > >struct _libc_xmmreg >{ > __uint32_t element[4]; >}; > >struct _libc_fpstate >{ > > __uint16_t cwd; > __uint16_t swd; > __uint16_t ftw; > __uint16_t fop; > __uint64_t rip; > __uint64_t rdp; > __uint32_t mxcsr; > __uint32_t mxcr_mask; > struct _libc_fpxreg _st[8]; > struct _libc_xmmreg _xmm[16]; > __uint32_t padding[24]; >}; > > >typedef struct _libc_fpstate *fpregset_t; > > >typedef struct > { > gregset_t gregs; > > fpregset_t fpregs; > unsigned long __reserved1 [8]; >} mcontext_t; > > >typedef struct ucontext > { > unsigned long int uc_flags; > struct ucontext *uc_link; > stack_t uc_stack; > mcontext_t uc_mcontext; > __sigset_t uc_sigmask; > struct _libc_fpstate __fpregs_mem; > } ucontext_t; ># 354 "/usr/include/signal.h" 2 3 4 > > > > > >extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) > throw () __attribute__ ((__deprecated__)); > > > >extern int sigaltstack (__const struct sigaltstack *__restrict __ss, > struct sigaltstack *__restrict __oss) throw (); > > > > > > > >extern int sighold (int __sig) throw (); > > >extern int sigrelse (int __sig) throw (); > > >extern int sigignore (int __sig) throw (); > > >extern __sighandler_t sigset (int __sig, __sighandler_t __disp) throw (); > > > > > > ># 1 "/usr/include/bits/sigthread.h" 1 3 4 ># 31 "/usr/include/bits/sigthread.h" 3 4 >extern int pthread_sigmask (int __how, > __const __sigset_t *__restrict __newmask, > __sigset_t *__restrict __oldmask)throw (); > > >extern int pthread_kill (pthread_t __threadid, int __signo) throw (); ># 390 "/usr/include/signal.h" 2 3 4 > > > > > > >extern int __libc_current_sigrtmin (void) throw (); > >extern int __libc_current_sigrtmax (void) throw (); > > > >} ># 21 "../XrdSys/XrdSysPthread.hh" 2 > > > ># 1 "/usr/include/semaphore.h" 1 3 4 ># 30 "/usr/include/semaphore.h" 3 4 ># 1 "/usr/include/bits/semaphore.h" 1 3 4 ># 24 "/usr/include/bits/semaphore.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 25 "/usr/include/bits/semaphore.h" 2 3 4 ># 37 "/usr/include/bits/semaphore.h" 3 4 >typedef union >{ > char __size[32]; > long int __align; >} sem_t; ># 31 "/usr/include/semaphore.h" 2 3 4 > > >extern "C" { > > > >extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) > throw (); > >extern int sem_destroy (sem_t *__sem) throw (); > > >extern sem_t *sem_open (__const char *__name, int __oflag, ...) throw (); > > >extern int sem_close (sem_t *__sem) throw (); > > >extern int sem_unlink (__const char *__name) throw (); > > > > > >extern int sem_wait (sem_t *__sem); > > > > > > >extern int sem_timedwait (sem_t *__restrict __sem, > __const struct timespec *__restrict __abstime); > > > >extern int sem_trywait (sem_t *__sem) throw (); > > >extern int sem_post (sem_t *__sem) throw (); > > >extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval) > throw (); > > >} ># 25 "../XrdSys/XrdSysPthread.hh" 2 > > > > > > > ># 1 "../XrdSys/XrdSysError.hh" 1 ># 28 "../XrdSys/XrdSysError.hh" >class XrdSysError_Table >{ >public: >friend class XrdSysError; > >char *Lookup(int mnum) > {return (char *)(mnum < base_msgnum || mnum > last_msgnum > ? 0 : msg_text[mnum - base_msgnum]); > } > XrdSysError_Table(int base, int last, const char **text) > : next(0), > base_msgnum(base), > last_msgnum(last), > msg_text(text) {} > ~XrdSysError_Table() {} > >private: >XrdSysError_Table *next; >int base_msgnum; >int last_msgnum; >const char **msg_text; >}; > > > > > >const int SYS_LOG_01 = 1; >const int SYS_LOG_02 = 2; >const int SYS_LOG_03 = 4; >const int SYS_LOG_04 = 8; >const int SYS_LOG_05 = 16; >const int SYS_LOG_06 = 32; >const int SYS_LOG_07 = 64; >const int SYS_LOG_08 = 128; > > > > > >class XrdSysLogger; > >class XrdSysError >{ >public: > XrdSysError(XrdSysLogger *lp, const char *ErrPrefix="sys") > : epfx(0), > epfxlen(0), > msgMask(-1), > Logger(lp) > { SetPrefix(ErrPrefix); } > > ~XrdSysError() {} > > > > > > >static void addTable(XrdSysError_Table *etp) {etp->next = etab; etab = etp;} > > > >int baseFD(); > > > > >static char *ec2text(int ecode); > > > > > > > >int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0); > > > >void Emsg(const char *esfx, const char *text1, > const char *text2=0, > const char *text3=0); > > > >inline void Log(int mask, const char *esfx, > const char *text1, > const char *text2=0, > const char *text3=0) > {if (mask & msgMask) Emsg(esfx, text1, text2, text3);} > > > >XrdSysLogger *logger(XrdSysLogger *lp=0) > {XrdSysLogger *oldp = Logger; > if (lp) Logger = lp; > return oldp; > } > > > >void Say(const char *text1, const char *text2=0, const char *txt3=0); > > > >void setMsgMask(int mask) {msgMask = mask;} > > > >inline const char *SetPrefix(const char *prefix) > {const char *oldpfx = epfx; > epfx = prefix; epfxlen = strlen(epfx); > return oldpfx; > } > > > >void TBeg(const char *txt1=0, const char *txt2=0, const char *txt3=0); >void TEnd(); > >private: > >static XrdSysError_Table *etab; >const char *epfx; >int epfxlen; >int msgMask; >XrdSysLogger *Logger; >}; ># 33 "../XrdSys/XrdSysPthread.hh" 2 ># 41 "../XrdSys/XrdSysPthread.hh" >class XrdSysCondVar >{ >public: > >inline void Lock() {pthread_mutex_lock(&cmut);} > >inline void Signal() {if (relMutex) pthread_mutex_lock(&cmut); > pthread_cond_signal(&cvar); > if (relMutex) pthread_mutex_unlock(&cmut); > } > >inline void Broadcast() {if (relMutex) pthread_mutex_lock(&cmut); > pthread_cond_broadcast(&cvar); > if (relMutex) pthread_mutex_unlock(&cmut); > } > >inline void UnLock() {pthread_mutex_unlock(&cmut);} > > int Wait(); > int Wait(int sec); > int WaitMS(int msec); > > XrdSysCondVar( int relm=1, > const char *cid=0 > ) {pthread_cond_init(&cvar, __null); > pthread_mutex_init(&cmut, __null); > relMutex = relm; condID = (cid ? cid : "unk"); > } > ~XrdSysCondVar() {pthread_cond_destroy(&cvar); > pthread_mutex_destroy(&cmut); > } >private: > >pthread_cond_t cvar; >pthread_mutex_t cmut; >int relMutex; >const char *condID; >}; ># 92 "../XrdSys/XrdSysPthread.hh" >class XrdSysCondVarHelper >{ >public: > >inline void Lock(XrdSysCondVar *CndVar) > {if (cnd) {if (cnd != CndVar) cnd->UnLock(); > else return; > } > CndVar->Lock(); > cnd = CndVar; > }; > >inline void UnLock() {if (cnd) {cnd->UnLock(); cnd = 0;}} > > XrdSysCondVarHelper(XrdSysCondVar *CndVar=0) > {if (CndVar) CndVar->Lock(); > cnd = CndVar; > } > XrdSysCondVarHelper(XrdSysCondVar &CndVar) { > CndVar.Lock(); > cnd = &CndVar; > } > > ~XrdSysCondVarHelper() {if (cnd) UnLock();} >private: >XrdSysCondVar *cnd; >}; ># 128 "../XrdSys/XrdSysPthread.hh" >class XrdSysMutex >{ >public: > >inline int CondLock() > {if (pthread_mutex_trylock( &cs )) return 0; > return 1; > } > >inline void Lock() {pthread_mutex_lock(&cs);} > >inline void UnLock() {pthread_mutex_unlock(&cs);} > > XrdSysMutex() {pthread_mutex_init(&cs, __null);} > ~XrdSysMutex() {pthread_mutex_destroy(&cs);} > >protected: > >pthread_mutex_t cs; >}; ># 156 "../XrdSys/XrdSysPthread.hh" >class XrdSysRecMutex: public XrdSysMutex >{ >public: > >XrdSysRecMutex(); > >}; ># 174 "../XrdSys/XrdSysPthread.hh" >class XrdSysMutexHelper >{ >public: > >inline void Lock(XrdSysMutex *Mutex) > {if (mtx) {if (mtx != Mutex) mtx->UnLock(); > else return; > } > Mutex->Lock(); > mtx = Mutex; > }; > >inline void UnLock() {if (mtx) {mtx->UnLock(); mtx = 0;}} > > XrdSysMutexHelper(XrdSysMutex *mutex=0) > {if (mutex) mutex->Lock(); > mtx = mutex; > } > XrdSysMutexHelper(XrdSysMutex &mutex) { > mutex.Lock(); > mtx = &mutex; > } > > ~XrdSysMutexHelper() {if (mtx) UnLock();} >private: >XrdSysMutex *mtx; >}; ># 235 "../XrdSys/XrdSysPthread.hh" >class XrdSysSemaphore >{ >public: > >inline int CondWait() > {if (sem_trywait( &h_semaphore )) > {if ((*__errno_location ()) == 11) return 0; > else { throw "sem_CondWait() failed";} > } > return 1; > } > >inline void Post() {if (sem_post(&h_semaphore)) > {throw "sem_post() failed";} > } > >inline void Wait() {while (sem_wait(&h_semaphore)) > {if (4 != (*__errno_location ())) > {throw "sem_wait() failed";} > } > } > > XrdSysSemaphore(int semval=1, const char * =0) > {if (sem_init(&h_semaphore, 0, semval)) > {throw "sem_init() failed";} > } > ~XrdSysSemaphore() {if (sem_destroy(&h_semaphore)) > {throw "sem_destroy() failed";} > } > >private: > >sem_t h_semaphore; >}; ># 292 "../XrdSys/XrdSysPthread.hh" >class XrdSysThread >{ >public: > >static int Cancel(pthread_t tid) {return pthread_cancel(tid);} > >static int Detach(pthread_t tid) {return pthread_detach(tid);} > > >static int SetCancelOff() { > return pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0); > }; > >static int Join(pthread_t tid, void **ret) { > return pthread_join(tid, ret); > }; > >static int SetCancelOn() { > return pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); > }; > >static int SetCancelAsynchronous() { > return pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); > }; > >static int SetCancelDeferred() { > return pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, 0); > }; > >static void CancelPoint() { > pthread_testcancel(); > }; > > >static pthread_t ID(void) {return pthread_self();} > >static int Kill(pthread_t tid) {return pthread_cancel(tid);} > >static unsigned long Num(void) > {if (!initDone) doInit(); > return (unsigned long)pthread_getspecific(threadNumkey); > } > >static int Run(pthread_t *, void *(*proc)(void *), void *arg, > int opts=0, const char *desc = 0); > >static void setDebug(XrdSysError *erp) {eDest = erp;} > >static void setStackSize(size_t stsz) {stackSize = stsz;} > >static int Signal(pthread_t tid, int snum) > {return pthread_kill(tid, snum);} > >static int Wait(pthread_t tid); > > XrdSysThread() {} > ~XrdSysThread() {} > >private: >static void doInit(void); >static XrdSysError *eDest; >static pthread_key_t threadNumkey; >static size_t stackSize; >static int initDone; >}; ># 27 "../XrdSys/XrdSysLogger.hh" 2 > >class XrdSysLogger >{ >public: > XrdSysLogger(int ErrFD=2, int xrotate=1); > > ~XrdSysLogger() {if (ePath) free(ePath);} > > > > >int Bind(const char *path, int intsec=0); > > > >void Flush() {fsync(eFD);} > > > >int originalFD() {return baseFD;} > > > >void Put(int iovcnt, struct iovec *iov); > > > > >void setKeep(long long knum) {eKeep = knum;} > > > >void setRotate(int onoff) {doLFR = onoff;} > > > >int Time(char *tbuff); > > > > >char *traceBeg() {Logger_Mutex.Lock(); Time(TBuff); return TBuff;} >char traceEnd() {Logger_Mutex.UnLock(); return '\n';} > > > > >int xlogFD(); > >private: > >XrdSysMutex Logger_Mutex; >static int extLFD[4]; >long long eKeep; >char TBuff[24]; >int eFD; >int baseFD; >char *ePath; >char Filesfx[8]; >time_t eNTC; >int eInt; >time_t eNow; >int doLFR; > >int ReBind(int dorename=1); >void Trim(); >}; ># 48 "XrdSecProtocolpwd.cc" 2 > ># 1 "../XrdOuc/XrdOucStream.hh" 1 ># 24 "../XrdOuc/XrdOucStream.hh" >class XrdOucEnv; > >class XrdOucStream >{ >public: > > > > > > XrdOucStream(XrdSysError *erobj=0, const char *ifname=0, > XrdOucEnv *anEnv=0, const char *Pfx=0); > > ~XrdOucStream() {Close(); if (myInst) free(myInst); > if (varVal) delete [] varVal; > if (llBuff) free(llBuff); > } > > > > > >int Attach(int FileDescriptor, int bsz=2047); >int AttachIO(int infd, int outfd, int bsz=2047); > > > >void Close(int hold=0); > > > > >int Detach() {int oldFD = FD; FD = FE = -1; return oldFD;} > > > > >int Drain(); > > > > > >void Echo(); ># 76 "../XrdOuc/XrdOucStream.hh" >int Exec(char *, int inrd=0); >int Exec(char **, int inrd=0); > > > >int FDNum() {return FD;} >int FENum() {return FE;} > > > >void Flush() {fsync(FD); if (FE != FD) fsync(FE);} > > > > > > >char *GetLine(); ># 104 "../XrdOuc/XrdOucStream.hh" >char *GetToken(int lowcase=0); >char *GetToken(char **rest, int lowcase=0); >void RetToken(); ># 119 "../XrdOuc/XrdOucStream.hh" >char *GetFirstWord(int lowcase=0); >char *GetMyFirstWord(int lowcase=0); >int GetRest(char *theBuf, int Blen, int lowcase=0); >char *GetWord(int lowcase=0); > > > > >inline int isAlive() {return (child ? kill(child,0) == 0 : 0);} > > > > > > >inline int LastError() {int n = ecode; ecode = 0; return n;} > > > >char *LastLine() {return recp;} > > > >int noEcho() {llBok = 0; return 0;} > > > > >int Put(const char *data, const int dlen); >inline int Put(const char *data) {return Put(data, strlen(data));} > > > > >int Put(const char *data[], const int dlen[]); > > > > >XrdOucEnv *SetEnv(XrdOucEnv *newEnv) > {XrdOucEnv *oldEnv = myEnv; myEnv = newEnv; return oldEnv;} > > > >void SetEroute(XrdSysError *eroute) {Eroute = eroute;} > > > > >void Tabs(int x=1) {notabs = !x;} > > > > > > >int Wait4Data(int msMax=-1); > > > >private: > char *add2llB(char *tok, int reset=0); > int doif(); > int isSet(char *var); > char *vSubs(char *Var); > int xMsg(const char *txt1, const char *txt2=0, const char *txt3=0); > >static const int maxVLen = 512; >static const int llBsz = 1024; > > int FD; > int FE; > int bsize; > int bleft; > char *buff; > char *bnext; > char *recp; > char *token; > int flags; > pid_t child; > int ecode; > int notabs; > int xcont; > int xline; > char *myInst; > char *myHost; > char *myName; > char *myExec; > XrdSysError *Eroute; > XrdOucEnv *myEnv; > char *varVal; > const char *llPrefix; > char *llBuff; > char *llBcur; > int llBleft; > char Verbose; > char sawif; > char skpel; > char llBok; >}; ># 50 "XrdSecProtocolpwd.cc" 2 > ># 1 "../XrdSys/XrdSysPriv.hh" 1 ># 35 "../XrdSys/XrdSysPriv.hh" >class XrdSysPriv >{ > friend class XrdSysPrivGuard; > private: > > > static XrdSysRecMutex fgMutex; > > XrdSysPriv(); > > static bool fDebug; > > static int ChangeTo(uid_t uid, gid_t gid); > static void DumpUGID(const char *msg = 0); > static int Restore(bool saved = 1); > > public: > virtual ~XrdSysPriv() { } > static int ChangePerm(uid_t uid, gid_t gid); >}; ># 67 "../XrdSys/XrdSysPriv.hh" >class XrdSysPrivGuard >{ > public: > XrdSysPrivGuard(uid_t uid, gid_t gid); > XrdSysPrivGuard(const char *user); > virtual ~XrdSysPrivGuard(); > bool Valid() const { return valid; } > private: > bool dum; > bool valid; > void Init(uid_t uid, gid_t gid); >}; ># 52 "XrdSecProtocolpwd.cc" 2 > ># 1 "../XrdSut/XrdSutCache.hh" 1 ># 14 "../XrdSut/XrdSutCache.hh" ># 1 "../XProtocol/XPtypes.hh" 1 ># 11 "../XProtocol/XPtypes.hh" >typedef unsigned char kXR_char; >typedef short kXR_int16; >typedef unsigned short kXR_unt16; ># 35 "../XProtocol/XPtypes.hh" >typedef int kXR_int32; >typedef unsigned int kXR_unt32; > > > > > > > >typedef long long kXR_int64; ># 15 "../XrdSut/XrdSutCache.hh" 2 ># 1 "../XrdSut/XrdSutPFEntry.hh" 1 ># 15 "../XrdSut/XrdSutPFEntry.hh" ># 1 "../XProtocol/XProtocol.hh" 1 ># 29 "../XProtocol/XProtocol.hh" >enum XReqErrorType { > kGENERICERR = 0, > kREAD, > kWRITE, > kREDIRCONNECT, > kOK, > kNOMORESTREAMS > >}; > > > > > >enum XRequestTypes { > kXR_auth = 3000, > kXR_query, > kXR_chmod, > kXR_close, > kXR_dirlist, > kXR_getfile, > kXR_protocol, > kXR_login, > kXR_mkdir, > kXR_mv, > kXR_open, > kXR_ping, > kXR_putfile, > kXR_read, > kXR_rm, > kXR_rmdir, > kXR_sync, > kXR_stat, > kXR_set, > kXR_write, > kXR_admin, > kXR_prepare, > kXR_statx, > kXR_endsess, > kXR_bind, > kXR_readv, > kXR_verifyw, > kXR_locate, > kXR_truncate >}; > > >enum XOpenRequestMode { > kXR_ur = 0x100, > kXR_uw = 0x080, > kXR_ux = 0x040, > kXR_gr = 0x020, > kXR_gw = 0x010, > kXR_gx = 0x008, > kXR_or = 0x004, > kXR_ow = 0x002, > kXR_ox = 0x001 >}; > >enum XMkdirOptions { > kXR_mknone = 0, > kXR_mkdirpath = 1 >}; > > >enum XLoginCapVer { > kXR_lcvnone = 0, > kXR_vermask = 63, > kXR_asyncap = 128 >}; > > > >enum XLoginVersion { > kXR_ver000 = 0, > kXR_ver001 = 1, > kXR_ver002 = 2 >}; > >enum XStatRequestOption { > kXR_vfs = 1 >}; > >enum XStatRespFlags { > kXR_file = 0, > kXR_xset = 1, > kXR_isDir = 2, > kXR_other = 4, > kXR_offline = 8, > kXR_readable=16, > kXR_writable=32 >}; > >enum XDirlistRequestOption { > kXR_online = 1 >}; > >enum XOpenRequestOption { > kXR_compress = 1, > kXR_delete = 2, > kXR_force = 4, > kXR_new = 8, > kXR_open_read= 16, > kXR_open_updt= 32, > kXR_async = 64, > kXR_refresh = 128, > kXR_mkpath = 256, > kXR_open_apnd= 512, > kXR_retstat = 1024, > kXR_replica = 2048, > kXR_ulterior = 4096, > kXR_nowait = 8192 >}; > >enum XQueryType { > kXR_QStats = 1, > kXR_QPrep = 2, > kXR_Qcksum = 3, > kXR_Qxattr = 4, > kXR_Qspace = 5, > kXR_Qckscan= 6, > kXR_Qconfig= 7, > kXR_Qvisa = 8, > kXR_Qopaque=16, > kXR_Qopaquf=32 >}; > >enum XVerifyType { > kXR_nocrc = 0, > kXR_crc32 = 1 >}; > >enum XLogonType { > kXR_useruser = 0, > kXR_useradmin = 1 >}; > > >enum XPrepRequestOption { > kXR_cancel = 1, > kXR_notify = 2, > kXR_noerrs = 4, > kXR_stage = 8, > kXR_wmode = 16, > kXR_coloc = 32, > kXR_fresh = 64 >}; > > > > > >enum XResponseType { > kXR_ok = 0, > kXR_oksofar = 4000, > kXR_attn, > kXR_authmore, > kXR_error, > kXR_redirect, > kXR_wait, > kXR_waitresp, > kXR_noResponsesYet = 10000 >}; > > > > > >enum XActionCode { > kXR_asyncab = 5000, > kXR_asyncdi, > kXR_asyncms, > kXR_asyncrd, > kXR_asyncwt, > kXR_asyncav, > kXR_asynunav, > kXR_asyncgo, > kXR_asynresp >}; > > > > > >enum XErrorCode { > kXR_ArgInvalid = 3000, > kXR_ArgMissing, > kXR_ArgTooLong, > kXR_FileLocked, > kXR_FileNotOpen, > kXR_FSError, > kXR_InvalidRequest, > kXR_IOError, > kXR_NoMemory, > kXR_NoSpace, > kXR_NotAuthorized, > kXR_NotFound, > kXR_ServerError, > kXR_Unsupported, > kXR_noserver, > kXR_NotFile, > kXR_isDirectory, > kXR_Cancelled, > kXR_ChkLenErr, > kXR_ChkSumErr, > kXR_inProgress, > kXR_noErrorYet = 10000 >}; ># 252 "../XProtocol/XProtocol.hh" >struct ClientAdminRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientAuthRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[12]; > kXR_char credtype[4]; > kXR_int32 dlen; >}; >struct ClientBindRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char sessid[16]; > kXR_int32 dlen; >}; >struct ClientChmodRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[14]; > kXR_unt16 mode; > kXR_int32 dlen; >}; >struct ClientCloseRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_int64 fsize; > kXR_char reserved[4]; > kXR_int32 dlen; >}; >struct ClientDirlistRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[15]; > kXR_char options[1]; > kXR_int32 dlen; >}; >struct ClientEndsessRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char sessid[16]; > kXR_int32 dlen; >}; >struct ClientGetfileRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_int32 options; > kXR_char reserved[8]; > kXR_int32 buffsz; > kXR_int32 dlen; >}; >struct ClientLocateRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_unt16 options; > kXR_char reserved[14]; > kXR_int32 dlen; >}; >struct ClientLoginRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_int32 pid; > kXR_char username[8]; > kXR_char reserved[2]; > kXR_char capver[1]; > kXR_char role[1]; > kXR_int32 dlen; >}; >struct ClientMkdirRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char options[1]; > kXR_char reserved[13]; > kXR_unt16 mode; > kXR_int32 dlen; >}; >struct ClientMvRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientOpenRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_unt16 mode; > kXR_unt16 options; > kXR_char reserved[12]; > kXR_int32 dlen; >}; >struct ClientPingRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientProtocolRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientPrepareRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char options; > kXR_char prty; > kXR_char reserved[14]; > kXR_int32 dlen; >}; >struct ClientPutfileRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_int32 options; > kXR_char reserved[8]; > kXR_int32 buffsz; > kXR_int32 dlen; >}; >struct ClientQueryRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_unt16 infotype; > kXR_char reserved1[2]; > kXR_char fhandle[4]; > kXR_char reserved2[8]; > kXR_int32 dlen; >}; >struct ClientReadRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_int64 offset; > kXR_int32 rlen; > kXR_int32 dlen; >}; >struct ClientReadVRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientRmRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientRmdirRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientSetRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char reserved[16]; > kXR_int32 dlen; >}; >struct ClientStatRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char options; > kXR_char reserved[15]; > kXR_int32 dlen; >}; >struct ClientSyncRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_char reserved[12]; > kXR_int32 dlen; >}; >struct ClientTruncateRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_int64 offset; > kXR_char reserved[4]; > kXR_int32 dlen; >}; >struct ClientWriteRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_int64 offset; > kXR_char pathid; > kXR_char reserved[3]; > kXR_int32 dlen; >}; >struct ClientVerifywRequest { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char fhandle[4]; > kXR_int64 offset; > kXR_char pathid; > kXR_char vertype; > kXR_char reserved[2]; > kXR_int32 dlen; >}; > >struct ClientRequestHdr { > kXR_char streamid[2]; > kXR_unt16 requestid; > kXR_char body[16]; > kXR_int32 dlen; >}; > >typedef union { > struct ClientRequestHdr header; > struct ClientAdminRequest admin; > struct ClientAuthRequest auth; > struct ClientBindRequest bind; > struct ClientChmodRequest chmod; > struct ClientCloseRequest close; > struct ClientDirlistRequest dirlist; > struct ClientEndsessRequest endsess; > struct ClientGetfileRequest getfile; > struct ClientLocateRequest locate; > struct ClientLoginRequest login; > struct ClientMkdirRequest mkdir; > struct ClientMvRequest mv; > struct ClientOpenRequest open; > struct ClientPingRequest ping; > struct ClientPrepareRequest prepare; > struct ClientProtocolRequest protocol; > struct ClientPutfileRequest putfile; > struct ClientQueryRequest query; > struct ClientReadRequest read; > struct ClientReadVRequest readv; > struct ClientRmRequest rm; > struct ClientRmdirRequest rmdir; > struct ClientSetRequest set; > struct ClientStatRequest stat; > struct ClientSyncRequest sync; > struct ClientTruncateRequest truncate; > struct ClientWriteRequest write; >} ClientRequest; > >struct readahead_list { > kXR_char fhandle[4]; > kXR_int32 rlen; > kXR_int64 offset; >}; > >struct read_args { > kXR_char pathid; > kXR_char reserved[7]; > >}; ># 519 "../XProtocol/XProtocol.hh" >struct ServerResponseHeader { > kXR_char streamid[2]; > kXR_unt16 status; > kXR_int32 dlen; >}; > > >struct ServerResponseBody_Bind { > kXR_char substreamid; >}; > > >struct ServerResponseBody_Open { > kXR_char fhandle[4]; > kXR_int32 cpsize; > kXR_char cptype[4]; >}; > > >struct ServerResponseBody_Protocol { > kXR_int32 pval; > kXR_int32 flags; >}; > >struct ServerResponseBody_Redirect { > kXR_int32 port; > char host[4096]; >}; > >struct ServerResponseBody_Error { > kXR_int32 errnum; > char errmsg[4096]; >}; > >struct ServerResponseBody_Wait { > kXR_int32 seconds; > char infomsg[4096]; >}; > >struct ServerResponseBody_Attn { > kXR_int32 actnum; > char parms[4096]; >}; > >struct ServerResponseBody_Attn_asyncrd { > kXR_int32 actnum; > kXR_int32 port; > char host[4092]; >}; > >struct ServerResponseBody_Attn_asynresp { > kXR_int32 actnum; > char reserved[4]; > ServerResponseHeader resphdr; > char respdata[4096]; >}; > >struct ServerResponseBody_Attn_asyncwt { > kXR_int32 actnum; > kXR_int32 wsec; >}; > >struct ServerResponseBody_Attn_asyncdi { > kXR_int32 actnum; > kXR_int32 wsec; > kXR_int32 msec; >}; > >void ServerResponseHeader2NetFmt(struct ServerResponseHeader *srh); > > >struct ClientInitHandShake { > kXR_int32 first; > kXR_int32 second; > kXR_int32 third; > kXR_int32 fourth; > kXR_int32 fifth; >}; > > >struct ServerInitHandShake { > kXR_int32 msglen; > kXR_int32 protover; > kXR_int32 msgval; >}; > > > >typedef kXR_int32 ServerResponseType; > >struct ALIGN_CHECK {char chkszreq[25-sizeof(ClientRequest)]; > char chkszrsp[ 9-sizeof(ServerResponseHeader)]; >}; ># 16 "../XrdSut/XrdSutPFEntry.hh" 2 > > > > > > > >enum kPFEntryStatus { > kPFE_inactive = -2, > kPFE_disabled, > kPFE_allowed, > kPFE_ok, > kPFE_onetime, > kPFE_expired, > kPFE_special, > kPFE_anonymous, > kPFE_crypt >}; > > > > >class XrdSutPFBuf { >public: > char *buf; > kXR_int32 len; > XrdSutPFBuf(char *b = 0, kXR_int32 l = 0); > XrdSutPFBuf(const XrdSutPFBuf &b); > > virtual ~XrdSutPFBuf() { if (len > 0 && buf) delete[] buf; } > > void SetBuf(const char *b = 0, kXR_int32 l = 0); >}; ># 61 "../XrdSut/XrdSutPFEntry.hh" >class XrdSutPFEntry { >public: > char *name; > short status; > short cnt; > kXR_int32 mtime; > XrdSutPFBuf buf1; > XrdSutPFBuf buf2; > XrdSutPFBuf buf3; > XrdSutPFBuf buf4; > XrdSutPFEntry(const char *n = 0, short st = 0, short cn = 0, > kXR_int32 mt = 0); > XrdSutPFEntry(const XrdSutPFEntry &e); > virtual ~XrdSutPFEntry() { if (name) delete[] name; } > kXR_int32 Length() const { return (buf1.len + buf2.len + 2*sizeof(short) + > buf3.len + buf4.len + 5*sizeof(kXR_int32)); } > void Reset(); > void SetName(const char *n = 0); > char *AsString() const; > > XrdSutPFEntry &operator=(const XrdSutPFEntry &pfe); >}; ># 16 "../XrdSut/XrdSutCache.hh" 2 ># 1 "../XrdOuc/XrdOucHash.hh" 1 ># 34 "../XrdOuc/XrdOucHash.hh" >enum XrdOucHash_Options {Hash_default = 0x0000, > Hash_data_is_key = 0x0001, > Hash_replace = 0x0002, > Hash_count = 0x0004, > Hash_keep = 0x0008, > Hash_dofree = 0x0010, > Hash_keepdata = 0x0020 > }; > >template<class T> >class XrdOucHash_Item >{ >public: >int Count() {return keycount;} > >T *Data() {return keydata;} > > unsigned long Hash() {return keyhash;} > >const char *Key() {return keyval;} > >XrdOucHash_Item<T> *Next() {return next;} > >time_t Time() {return keytime;} > >void Update(int newcount, time_t newtime) > {keycount = newcount; > if (newtime) keytime = newtime; > } > >int Same(const unsigned long KeyHash, const char *KeyVal) > {return keyhash == KeyHash && !strcmp(keyval, KeyVal);} > >void SetNext(XrdOucHash_Item<T> *item) {next = item;} > > XrdOucHash_Item(unsigned long KeyHash, > const char *KeyVal, > T *KeyData, > time_t KeyTime, > XrdOucHash_Item<T> *KeyNext, > XrdOucHash_Options KeyOpts) > {keyhash = KeyHash; > if (KeyOpts & Hash_keep) keyval = KeyVal; > else keyval = strdup(KeyVal); > if (KeyOpts & Hash_data_is_key) keydata = (T *)keyval; > else keydata = KeyData; > keytime = KeyTime; > entopts = KeyOpts; > next = KeyNext; > keycount= 0; > } > > ~XrdOucHash_Item() > {if (!(entopts & Hash_keep)) > {if (keydata && keydata != (T *)keyval > && !(entopts & Hash_keepdata)) > {if (entopts & Hash_dofree) free(keydata); > else delete keydata; > } > if (keyval) free((void *)keyval); > } > keydata = 0; keyval = 0; keycount = 0; > } > >private: > >XrdOucHash_Item<T> *next; >const char *keyval; >unsigned long keyhash; >T *keydata; >time_t keytime; >int keycount; >XrdOucHash_Options entopts; >}; > >template<class T> >class XrdOucHash >{ >public: ># 125 "../XrdOuc/XrdOucHash.hh" >T *Add(const char *KeyVal, T *KeyData, const int LifeTime=0, > XrdOucHash_Options opt=Hash_default); > > > > > >int Del(const char *KeyVal, XrdOucHash_Options opt = Hash_default); > > > > >T *Find(const char *KeyVal, time_t *KeyTime=0); > > > >int Num() {return hashnum;} > > > >void Purge(); > > > >T *Rep(const char *KeyVal, T *KeyData, const int LifeTime=0, > XrdOucHash_Options opt=Hash_default) > {return Add(KeyVal, KeyData, LifeTime, > (XrdOucHash_Options)(opt | Hash_replace));} ># 162 "../XrdOuc/XrdOucHash.hh" >T *Apply(int (*func)(const char *, T *, void *), void *Arg); > > > > > > XrdOucHash(int psize = 89, int size=144, int load=80); > ~XrdOucHash() {if (hashtable) {Purge(); free(hashtable); hashtable = 0;}} > >private: >void Remove(int kent, XrdOucHash_Item<T> *hip, XrdOucHash_Item<T> *phip); > >XrdOucHash_Item<T> *Search(XrdOucHash_Item<T> *hip, > const unsigned long khash, > const char *kval, > XrdOucHash_Item<T> **phip=0); > >unsigned long HashVal(const char *KeyVal); > >void Expand(); > >XrdOucHash_Item<T> **hashtable; >int prevtablesize; >int hashtablesize; >int hashnum; >int hashmax; >int hashload; >}; > > > > > ># 1 "../XrdOuc/XrdOucHash.icc" 1 ># 13 "../XrdOuc/XrdOucHash.icc" ># 1 "/usr/include/errno.h" 1 3 4 ># 14 "../XrdOuc/XrdOucHash.icc" 2 > > ># 1 "../XrdOuc/XrdOucHash.hh" 1 ># 17 "../XrdOuc/XrdOucHash.icc" 2 > > > > > >extern unsigned long XrdOucHashVal(const char *KeyVal); > > > > > >template<class T> >XrdOucHash<T>::XrdOucHash(int psize, int csize, int load) >{ > prevtablesize = psize; > hashtablesize = csize; > hashload = load; > hashmax = (csize * load) / 100; > hashnum = 0; > hashtable = (XrdOucHash_Item<T> **) > malloc( (size_t)(csize*sizeof(XrdOucHash_Item<T> *)) ); > memset((void *)hashtable, 0, (size_t)(csize*sizeof(XrdOucHash_Item<T> *))); >} > > > > > >template<class T> >T *XrdOucHash<T>::Add(const char *KeyVal, T *KeyData, const int LifeTime, > XrdOucHash_Options opt) >{ > unsigned long khash = XrdOucHashVal(KeyVal); > int hent; > time_t lifetime, KeyTime=0; > XrdOucHash_Item<T> *hip, *newhip, *prevhip; > > > > > > hent = khash % hashtablesize; > if ((hip = hashtable[hent]) && (hip = Search(hip, khash, KeyVal, &prevhip))) > {if (opt & Hash_count) > {hip->Update(hip->Count()+1, > (LifeTime || hip->Time() ? LifeTime + time(0) : 0) );} > if (!(opt & Hash_replace) > && ((lifetime=hip->Time())==0||lifetime>=time(0))) return hip->Data(); > Remove(hent, hip, prevhip); > } else { > > > if (hashnum >= hashmax) {Expand(); hent = khash % hashtablesize;} > } > > > > if (LifeTime) KeyTime = LifeTime + time(0); > if ( !(newhip = new XrdOucHash_Item<T>(khash, KeyVal, KeyData, KeyTime, > hashtable[hent], opt)) ) throw 12; > hashtable[hent] = newhip; > hashnum++; > return (T *)0; >} > > > > > >template<class T> >T *XrdOucHash<T>::Apply(int (*func)(const char *, T *, void *), void *Arg) >{ > int i, rc; > time_t lifetime; > XrdOucHash_Item<T> *hip, *prevhip, *nexthip; > > > > > for (i = 0; i < hashtablesize; i++) > {hip = hashtable[i]; prevhip = 0; > while(hip) > {nexthip = hip->Next(); > if ((lifetime = hip->Time()) && lifetime < time(0)) rc = -1; > else if ( (rc = (*func)(hip->Key(), hip->Data(), Arg)) > 0 ) > return hip->Data(); > if (rc < 0) > {delete hip; > if (prevhip) prevhip->SetNext(nexthip); > else hashtable[i] = nexthip; > hashnum--; > } > else prevhip = hip; > hip = nexthip; > } > } > return (T *)0; >} > > > > > >template<class T> >int XrdOucHash<T>::Del(const char *KeyVal, XrdOucHash_Options) >{ > unsigned long khash = XrdOucHashVal(KeyVal); > int hent, cnt; > XrdOucHash_Item<T> *hip, *phip, *thip; > > > > hent = khash % hashtablesize; > if (!(thip = hashtable[hent])) return -2; > if (!( hip = Search(thip, khash, KeyVal, &phip) ) ) return -2; > > > > if ((cnt = hip->Count()) <= 0) Remove(hent, hip, phip); > else hip->Update(cnt-1, 0); > return 0; >} > > > > > >template<class T> >T *XrdOucHash<T>::Find(const char *KeyVal, time_t *KeyTime) >{ > unsigned long khash = XrdOucHashVal(KeyVal); > int kent; > time_t lifetime = 0; > XrdOucHash_Item<T> *phip, *hip; > > > > kent = khash%hashtablesize; > > > > if ((hip = hashtable[kent])) > if ((hip = Search(hip, khash, KeyVal, &phip))) > if ( (lifetime = hip->Time()) && lifetime < time(0) ) > {Remove(kent, hip, phip); > if (KeyTime) *KeyTime = (time_t)0; > return (T *)0; > } > > > > if (KeyTime) *KeyTime = lifetime; > if (hip) return hip->Data(); > return (T *)0; >} > > > > > >template<class T> >void XrdOucHash<T>::Purge() >{ > int i; > XrdOucHash_Item<T> *hip, *nexthip; > > > > for (i = 0; i < hashtablesize; i++) > {hip = hashtable[i]; hashtable[i] = 0; > while(hip) > {nexthip = hip->Next(); > delete hip; > hip = nexthip; > } > } > hashnum = 0; >} ># 204 "../XrdOuc/XrdOucHash.icc" >template<class T> >void XrdOucHash<T>::Expand() >{ > int newsize, newent, i; > size_t memlen; > XrdOucHash_Item<T> **newtab, *hip, *nexthip; > > > > newsize = prevtablesize +hashtablesize; > > > > memlen = (size_t)(newsize*sizeof(XrdOucHash_Item<T> *)); > if (!(newtab = (XrdOucHash_Item<T> **) malloc(memlen))) throw 12; > memset((void *)newtab, 0, memlen); > > > > for (i = 0; i < hashtablesize; i++) > {hip = hashtable[i]; > while(hip) > {nexthip = hip->Next(); > newent = (hip->Hash()) % newsize; > hip->SetNext(newtab[newent]); > newtab[newent] = hip; > hip = nexthip; > } > } > > > > free((void *)hashtable); > hashtable = newtab; > prevtablesize = hashtablesize; > hashtablesize = newsize; > > > > hashmax = static_cast<int>((static_cast<long long>(newsize)*hashload)/100); >} > > > > > >template<class T> >void XrdOucHash<T>::Remove(int kent, XrdOucHash_Item<T> *hip, > XrdOucHash_Item<T> *phip) >{ > if (phip) phip->SetNext(hip->Next()); > else hashtable[kent] = hip->Next(); > delete hip; > hashnum--; >} > > > > > >template<class T> >XrdOucHash_Item<T> *XrdOucHash<T>::Search(XrdOucHash_Item<T> *hip, > const unsigned long khash, > const char *kval, > XrdOucHash_Item<T> **pitem) >{ > XrdOucHash_Item<T> *prevp = 0; > > > > while(hip && !hip->Same(khash, kval)) > {prevp = hip; > hip = hip->Next(); > } > if (pitem) *pitem = prevp; > return hip; >} ># 196 "../XrdOuc/XrdOucHash.hh" 2 ># 17 "../XrdSut/XrdSutCache.hh" 2 ># 1 "../XrdOuc/XrdOucString.hh" 1 ># 230 "../XrdOuc/XrdOucString.hh" ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stdarg.h" 1 3 4 ># 231 "../XrdOuc/XrdOucString.hh" 2 > >using namespace std; > > > >class XrdOucString { > >private: > char *str; > int len; > int siz; > > > > > static int blksize; > > > int adjust(int ls, int &j, int &k, int nmx = 0); > char *bufalloc(int nsz); > inline void init() { str = 0; len = 0; siz = 0; } > >public: > XrdOucString(int lmx = 0) { init(); if (lmx > 0) str = bufalloc(lmx+1); } > XrdOucString(const char *s, int lmx = 0); > XrdOucString(const char c, int lmx = 0); > XrdOucString(const XrdOucString &s); > XrdOucString(const XrdOucString &s, int j, int k = -1, int lmx = 0); > virtual ~XrdOucString(); > > > const char *c_str() const { return (const char *)str; } > int length() const { return len; } > int capacity() const { return siz; } > char &operator[](int j); > int find(const char c, int start = 0, bool forward = 1); > int find(const char *s, int start = 0); > int find(XrdOucString s, int start = 0); > int rfind(const char c, int start = -1) > { return find(c, start, 0); } > int rfind(const char *s, int start = -1); > int rfind(XrdOucString s, int start = -1); > bool beginswith(char c) { return (find(c) == 0); } > bool beginswith(const char *s) { return (find(s) == 0); } > bool beginswith(XrdOucString s) { return (find(s) == 0); } > bool endswith(char c); > bool endswith(const char *s); > bool endswith(XrdOucString s) { return (endswith(s.c_str())); } > int matches(const char *s, char wch = '*'); > > > int tokenize(XrdOucString &tok, int from, char del = ':'); > > > void resize(int lmx = 0) { int ns = (lmx > 0) ? lmx + 1 : 0; > str = bufalloc(ns); } > void append(const int i); > void append(const char c); > void append(const char *s); > void append(const XrdOucString s); > void assign(const char *s, int j, int k = -1); > void assign(const XrdOucString s, int j, int k = -1); > > int form(const char *fmt, ...); > > int keep(int start = 0, int size = 0); > void insert(const int i, int start = -1); > void insert(const char c, int start = -1); > void insert(const char *s, int start = -1, int lmx = 0); > void insert(const XrdOucString s, int start = -1); > int replace(const char *s1, const char *s2, > int from = 0, int to = -1); > int replace(const XrdOucString s1, const XrdOucString s2, > int from = 0, int to = -1); > int replace(const XrdOucString s1, const char *s2, > int from = 0, int to = -1); > int replace(const char *s1, const XrdOucString s2, > int from = 0, int to = -1); > int erase(int start = 0, int size = 0); > int erase(const char *s, int from = 0, int to = -1); > int erase(XrdOucString s, int from = 0, int to = -1); > int erasefromstart(int sz = 0) { return erase(0,sz); } > int erasefromend(int sz = 0) { return erase(len-sz,sz); } > void lower(int pos, int size = 0); > void upper(int pos, int size = 0); > void reset(const char c, int j = 0, int k = -1); > void hardreset(); > void setbuffer(char *buf); > > > XrdOucString &operator=(const int i); > XrdOucString &operator=(const char c); > XrdOucString &operator=(const char *s); > XrdOucString &operator=(const XrdOucString s); > > > XrdOucString &operator+(const int i); > XrdOucString &operator+(const char c); > XrdOucString &operator+(const char *s); > XrdOucString &operator+(const XrdOucString s); > XrdOucString &operator+=(const int i); > XrdOucString &operator+=(const char c); > XrdOucString &operator+=(const char *s); > XrdOucString &operator+=(const XrdOucString s); > > > int operator==(const int i); > int operator==(const char c); > int operator==(const char *s); > int operator==(const XrdOucString s); > > > int operator!=(const int i) { return !(*this == i); } > int operator!=(const char c) { return !(*this == c); } > int operator!=(const char *s) { return !(*this == s); } > int operator!=(const XrdOucString s) { return !(*this == s); } > > > bool isdigit(int from = 0, int to = -1); > long atoi(int from = 0, int to = -1); > > > static int getblksize(); > static void setblksize(const int bs); > > > > static int form(XrdOucString &str, const char *fmt, ...); > >}; > > >ostream &operator<< (ostream &, const XrdOucString s); > >XrdOucString const operator+(const char *s1, const XrdOucString s2); >XrdOucString const operator+(const char c, const XrdOucString s); >XrdOucString const operator+(const int i, const XrdOucString s); ># 18 "../XrdSut/XrdSutCache.hh" 2 > > > > > > > >class XrdSutCache >{ >private: > int cachesz; > int cachemx; > XrdSutPFEntry **cachent; > kXR_int32 utime; > int lifetime; > XrdOucHash<kXR_int32> hashtable; > kXR_int32 htmtime; > XrdOucString pfile; > >public: > XrdSutCache() { cachemx = -1; cachesz = 0; cachent = 0; lifetime = 300; > utime = -1; htmtime = -1; pfile = "";} > virtual ~XrdSutCache(); > > > int Entries() const { return (cachemx+1); } > bool Empty() const { return (cachemx == -1); } > > > int Init(int capacity = 100); > int Reset(int newsz = -1); > int Load(const char *pfname); > int Flush(const char *pfname = 0); > int Refresh(); > int Rehash(bool force = 0); > void SetLifetime(int lifet = 300) { lifetime = lifet; } > > > XrdSutPFEntry *Get(int i) const { return (i<=cachemx) ? cachent[i] : > (XrdSutPFEntry *)0; } > XrdSutPFEntry *Get(const char *ID, bool *wild = 0); > XrdSutPFEntry *Add(const char *ID, bool force = 0); > bool Remove(const char *ID, int opt = 1); > int Trim(int lifet = 0); > > > void Dump(const char *msg= 0); >}; ># 54 "XrdSecProtocolpwd.cc" 2 > ># 1 "../XrdSecpwd/XrdSecProtocolpwd.hh" 1 ># 11 "../XrdSecpwd/XrdSecProtocolpwd.hh" ># 1 "../XrdOuc/XrdOucErrInfo.hh" 1 ># 19 "../XrdOuc/XrdOucErrInfo.hh" ># 1 "../XrdSys/XrdSysPlatform.hh" 1 ># 19 "../XrdSys/XrdSysPlatform.hh" ># 1 "/usr/include/memory.h" 1 3 4 ># 20 "../XrdSys/XrdSysPlatform.hh" 2 > > > ># 1 "/usr/include/byteswap.h" 1 3 4 ># 23 "/usr/include/byteswap.h" 3 4 ># 1 "/usr/include/bits/byteswap.h" 1 3 4 ># 28 "/usr/include/bits/byteswap.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/usr/include/bits/byteswap.h" 2 3 4 ># 24 "/usr/include/byteswap.h" 2 3 4 ># 24 "../XrdSys/XrdSysPlatform.hh" 2 ># 63 "../XrdSys/XrdSysPlatform.hh" >typedef off_t offset_t; ># 192 "../XrdSys/XrdSysPlatform.hh" >extern "C" >{extern size_t strlcpy(char *dst, const char *src, size_t size);} ># 20 "../XrdOuc/XrdOucErrInfo.hh" 2 > > > > > >struct XrdOucEI >{ > static const size_t Max_Error_Len = 2048; > >const char *user; > int code; > char message[Max_Error_Len]; > > void clear(const char *usr=0) > {code=0; message[0]='\0'; user = (usr ? usr : "?");} > > XrdOucEI &operator =(const XrdOucEI &rhs) > {code = rhs.code; > user = rhs.user; > strcpy(message, rhs.message); > return *this; > } > XrdOucEI(const char *usr) {clear(usr);} >}; > > > > > >class XrdOucEICB; >class XrdSysSemaphore; > >class XrdOucErrInfo >{ >public: > void clear() {ErrInfo.clear();} > >inline void setErrArg(unsigned long long cbarg=0) {ErrCBarg = cbarg;} >inline void setErrCB(XrdOucEICB *cb, unsigned long long cbarg=0) > {ErrCB = cb; ErrCBarg = cbarg;} >inline int setErrCode(int code) {return ErrInfo.code = code;} >inline int setErrInfo(int code, const char *message) > {strlcpy(ErrInfo.message, message, sizeof(ErrInfo.message)); > return ErrInfo.code = code; > } >inline int setErrInfo(int code, const char *txtlist[], int n) > {int i, j = 0, k = sizeof(ErrInfo.message), l; > for (i = 0; i < n && k > 1; i++) > {l = strlcpy(&ErrInfo.message[j], txtlist[i], k); > j += l; k -= l; > } > return ErrInfo.code = code; > } >inline void setErrUser(const char *user) {ErrInfo.user = (user ? user : "?");} > >inline unsigned long long getErrArg() {return ErrCBarg;} > >inline char *getMsgBuff(int &mblen) > {mblen = sizeof(ErrInfo.message); > return ErrInfo.message; > } >inline XrdOucEICB *getErrCB() {return ErrCB;} >inline XrdOucEICB *getErrCB(unsigned long long &ap) > {ap = ErrCBarg; return ErrCB;} >inline int getErrInfo() {return ErrInfo.code;} >inline int getErrInfo(XrdOucEI &errorParm) > {errorParm = ErrInfo; return ErrInfo.code;} >inline const char *getErrText() > {return (const char *)ErrInfo.message;} >inline const char *getErrText(int &ecode) > {ecode = ErrInfo.code; > return (const char *)ErrInfo.message;} >inline const char *getErrUser() {return ErrInfo.user;} > > XrdOucErrInfo &operator =(const XrdOucErrInfo &rhs) > {ErrInfo = rhs.ErrInfo; > ErrCB = rhs.ErrCB; > ErrCBarg= rhs.ErrCBarg; > return *this; > } > > XrdOucErrInfo(const char *user=0,XrdOucEICB *cb=0,unsigned long long ca=0) > : ErrInfo(user) {ErrCB = cb; ErrCBarg = ca;} > >virtual ~XrdOucErrInfo() {} > >protected: > >XrdOucEI ErrInfo; >XrdOucEICB *ErrCB; >unsigned long long ErrCBarg; >}; > > > > > >class XrdOucEICB >{ >public: > > > > > > > >virtual void Done(int &Result, > XrdOucErrInfo *eInfo)=0; > > > > >virtual int Same(unsigned long long arg1, unsigned long long arg2)=0; > > XrdOucEICB() {} >virtual ~XrdOucEICB() {} >}; ># 12 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 > > ># 1 "../XrdOuc/XrdOucTokenizer.hh" 1 ># 15 "../XrdOuc/XrdOucTokenizer.hh" >class XrdOucTokenizer >{ >public: > > XrdOucTokenizer(char *bp) {Attach(bp);} > > ~XrdOucTokenizer() {} > > > >void Attach(char *bp); > > > >char *GetLine(); ># 38 "../XrdOuc/XrdOucTokenizer.hh" >char *GetToken(char **rest=0, int lowcase=0); > > > > >void RetToken(); > > > > >void Tabs(int x=1) {notabs = !x;} > > > >private: > char *buff; > char *token; > char *tnext; > int notabs; >}; ># 15 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 > ># 1 "../XrdSec/XrdSecInterface.hh" 1 ># 15 "../XrdSec/XrdSecInterface.hh" ># 1 "/usr/include/errno.h" 1 3 4 ># 16 "../XrdSec/XrdSecInterface.hh" 2 > ># 1 "/usr/include/netdb.h" 1 3 4 ># 28 "/usr/include/netdb.h" 3 4 ># 1 "/usr/include/netinet/in.h" 1 3 4 ># 25 "/usr/include/netinet/in.h" 3 4 ># 1 "/usr/include/sys/socket.h" 1 3 4 ># 26 "/usr/include/sys/socket.h" 3 4 >extern "C" { > ># 1 "/usr/include/sys/uio.h" 1 3 4 ># 26 "/usr/include/sys/uio.h" 3 4 >extern "C" { > > ># 1 "/usr/include/bits/uio.h" 1 3 4 ># 30 "/usr/include/sys/uio.h" 2 3 4 ># 40 "/usr/include/sys/uio.h" 3 4 >extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count); ># 50 "/usr/include/sys/uio.h" 3 4 >extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count); > >} ># 29 "/usr/include/sys/socket.h" 2 3 4 > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 31 "/usr/include/sys/socket.h" 2 3 4 > > > > > ># 1 "/usr/include/bits/socket.h" 1 3 4 ># 30 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 31 "/usr/include/bits/socket.h" 2 3 4 > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include-fixed/limits.h" 1 3 4 ># 33 "/usr/include/bits/socket.h" 2 3 4 ># 42 "/usr/include/bits/socket.h" 3 4 >enum __socket_type >{ > SOCK_STREAM = 1, > > > SOCK_DGRAM = 2, > > > SOCK_RAW = 3, > > SOCK_RDM = 4, > > SOCK_SEQPACKET = 5, > > > SOCK_PACKET = 10 > > > >}; ># 147 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/include/bits/sockaddr.h" 1 3 4 ># 29 "/usr/include/bits/sockaddr.h" 3 4 >typedef unsigned short int sa_family_t; ># 148 "/usr/include/bits/socket.h" 2 3 4 > > >struct sockaddr > { > sa_family_t sa_family; > char sa_data[14]; > }; ># 167 "/usr/include/bits/socket.h" 3 4 >struct sockaddr_storage > { > sa_family_t ss_family; > __uint64_t __ss_align; > char __ss_padding[(128 - (2 * sizeof (__uint64_t)))]; > }; > > > >enum > { > MSG_OOB = 0x01, > > MSG_PEEK = 0x02, > > MSG_DONTROUTE = 0x04, > > > > MSG_TRYHARD = MSG_DONTROUTE, > > > MSG_CTRUNC = 0x08, > > MSG_PROXY = 0x10, > > MSG_TRUNC = 0x20, > > MSG_DONTWAIT = 0x40, > > MSG_EOR = 0x80, > > MSG_WAITALL = 0x100, > > MSG_FIN = 0x200, > > MSG_SYN = 0x400, > > MSG_CONFIRM = 0x800, > > MSG_RST = 0x1000, > > MSG_ERRQUEUE = 0x2000, > > MSG_NOSIGNAL = 0x4000, > > MSG_MORE = 0x8000, > > > MSG_CMSG_CLOEXEC = 0x40000000 > > > > }; > > > > >struct msghdr > { > void *msg_name; > socklen_t msg_namelen; > > struct iovec *msg_iov; > size_t msg_iovlen; > > void *msg_control; > size_t msg_controllen; > > > > > int msg_flags; > }; > > >struct cmsghdr > { > size_t cmsg_len; > > > > > int cmsg_level; > int cmsg_type; > > __extension__ unsigned char __cmsg_data []; > > }; ># 273 "/usr/include/bits/socket.h" 3 4 >extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, > struct cmsghdr *__cmsg) throw (); > > > > >extern __inline __attribute__ ((__gnu_inline__)) struct cmsghdr * >__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) throw () >{ > if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) > > return 0; > > __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg > + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))); > if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control > + __mhdr->msg_controllen) > || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) > > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) > > return 0; > return __cmsg; >} > > > > >enum > { > SCM_RIGHTS = 0x01 > > > , SCM_CREDENTIALS = 0x02 > > > }; > > > >struct ucred >{ > pid_t pid; > uid_t uid; > gid_t gid; >}; > > ># 1 "/usr/include/asm/socket.h" 1 3 4 > > > ># 1 "/usr/include/asm/sockios.h" 1 3 4 ># 5 "/usr/include/asm/socket.h" 2 3 4 ># 321 "/usr/include/bits/socket.h" 2 3 4 > > > >struct linger > { > int l_onoff; > int l_linger; > }; ># 37 "/usr/include/sys/socket.h" 2 3 4 > > > > >struct osockaddr > { > unsigned short int sa_family; > unsigned char sa_data[14]; > }; > > > > >enum >{ > SHUT_RD = 0, > > SHUT_WR, > > SHUT_RDWR > >}; ># 101 "/usr/include/sys/socket.h" 3 4 >extern int socket (int __domain, int __type, int __protocol) throw (); > > > > > >extern int socketpair (int __domain, int __type, int __protocol, > int __fds[2]) throw (); > > >extern int bind (int __fd, __const struct sockaddr * __addr, socklen_t __len) > throw (); > > >extern int getsockname (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __len) throw (); ># 125 "/usr/include/sys/socket.h" 3 4 >extern int connect (int __fd, __const struct sockaddr * __addr, socklen_t __len); > > > >extern int getpeername (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __len) throw (); > > > > > > >extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags); > > > > > > >extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); > > > > > > >extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, > int __flags, __const struct sockaddr * __addr, > socklen_t __addr_len); ># 162 "/usr/include/sys/socket.h" 3 4 >extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, > int __flags, struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len); > > > > > > > >extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, > int __flags); > > > > > > >extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); > > > > > >extern int getsockopt (int __fd, int __level, int __optname, > void *__restrict __optval, > socklen_t *__restrict __optlen) throw (); > > > > >extern int setsockopt (int __fd, int __level, int __optname, > __const void *__optval, socklen_t __optlen) throw (); > > > > > >extern int listen (int __fd, int __n) throw (); ># 210 "/usr/include/sys/socket.h" 3 4 >extern int accept (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len); > > > > > > > >extern int shutdown (int __fd, int __how) throw (); > > > > >extern int sockatmark (int __fd) throw (); > > > > > > > >extern int isfdtype (int __fd, int __fdtype) throw (); ># 241 "/usr/include/sys/socket.h" 3 4 >} ># 26 "/usr/include/netinet/in.h" 2 3 4 > > > >extern "C" { > > >enum > { > IPPROTO_IP = 0, > > IPPROTO_HOPOPTS = 0, > > IPPROTO_ICMP = 1, > > IPPROTO_IGMP = 2, > > IPPROTO_IPIP = 4, > > IPPROTO_TCP = 6, > > IPPROTO_EGP = 8, > > IPPROTO_PUP = 12, > > IPPROTO_UDP = 17, > > IPPROTO_IDP = 22, > > IPPROTO_TP = 29, > > IPPROTO_IPV6 = 41, > > IPPROTO_ROUTING = 43, > > IPPROTO_FRAGMENT = 44, > > IPPROTO_RSVP = 46, > > IPPROTO_GRE = 47, > > IPPROTO_ESP = 50, > > IPPROTO_AH = 51, > > IPPROTO_ICMPV6 = 58, > > IPPROTO_NONE = 59, > > IPPROTO_DSTOPTS = 60, > > IPPROTO_MTP = 92, > > IPPROTO_ENCAP = 98, > > IPPROTO_PIM = 103, > > IPPROTO_COMP = 108, > > IPPROTO_SCTP = 132, > > IPPROTO_RAW = 255, > > IPPROTO_MAX > }; > > > >typedef uint16_t in_port_t; > > >enum > { > IPPORT_ECHO = 7, > IPPORT_DISCARD = 9, > IPPORT_SYSTAT = 11, > IPPORT_DAYTIME = 13, > IPPORT_NETSTAT = 15, > IPPORT_FTP = 21, > IPPORT_TELNET = 23, > IPPORT_SMTP = 25, > IPPORT_TIMESERVER = 37, > IPPORT_NAMESERVER = 42, > IPPORT_WHOIS = 43, > IPPORT_MTP = 57, > > IPPORT_TFTP = 69, > IPPORT_RJE = 77, > IPPORT_FINGER = 79, > IPPORT_TTYLINK = 87, > IPPORT_SUPDUP = 95, > > > IPPORT_EXECSERVER = 512, > IPPORT_LOGINSERVER = 513, > IPPORT_CMDSERVER = 514, > IPPORT_EFSSERVER = 520, > > > IPPORT_BIFFUDP = 512, > IPPORT_WHOSERVER = 513, > IPPORT_ROUTESERVER = 520, > > > IPPORT_RESERVED = 1024, > > > IPPORT_USERRESERVED = 5000 > }; > > > >typedef uint32_t in_addr_t; >struct in_addr > { > in_addr_t s_addr; > }; ># 194 "/usr/include/netinet/in.h" 3 4 >struct in6_addr > { > union > { > uint8_t u6_addr8[16]; > uint16_t u6_addr16[8]; > uint32_t u6_addr32[4]; > } in6_u; > > > > }; > >extern const struct in6_addr in6addr_any; >extern const struct in6_addr in6addr_loopback; ># 217 "/usr/include/netinet/in.h" 3 4 >struct sockaddr_in > { > sa_family_t sin_family; > in_port_t sin_port; > struct in_addr sin_addr; > > > unsigned char sin_zero[sizeof (struct sockaddr) - > (sizeof (unsigned short int)) - > sizeof (in_port_t) - > sizeof (struct in_addr)]; > }; > > >struct sockaddr_in6 > { > sa_family_t sin6_family; > in_port_t sin6_port; > uint32_t sin6_flowinfo; > struct in6_addr sin6_addr; > uint32_t sin6_scope_id; > }; > > > >struct ip_mreq > { > > struct in_addr imr_multiaddr; > > > struct in_addr imr_interface; > }; > >struct ip_mreq_source > { > > struct in_addr imr_multiaddr; > > > struct in_addr imr_interface; > > > struct in_addr imr_sourceaddr; > }; > > >struct ipv6_mreq > { > > struct in6_addr ipv6mr_multiaddr; > > > unsigned int ipv6mr_interface; > }; > > > >struct group_req > { > > uint32_t gr_interface; > > > struct sockaddr_storage gr_group; > }; > >struct group_source_req > { > > uint32_t gsr_interface; > > > struct sockaddr_storage gsr_group; > > > struct sockaddr_storage gsr_source; > }; > > > >struct ip_msfilter > { > > struct in_addr imsf_multiaddr; > > > struct in_addr imsf_interface; > > > uint32_t imsf_fmode; > > > uint32_t imsf_numsrc; > > struct in_addr imsf_slist[1]; > }; > > > > > >struct group_filter > { > > uint32_t gf_interface; > > > struct sockaddr_storage gf_group; > > > uint32_t gf_fmode; > > > uint32_t gf_numsrc; > > struct sockaddr_storage gf_slist[1]; >}; ># 343 "/usr/include/netinet/in.h" 3 4 ># 1 "/usr/include/bits/in.h" 1 3 4 ># 82 "/usr/include/bits/in.h" 3 4 >struct ip_opts > { > struct in_addr ip_dst; > char ip_opts[40]; > }; > > >struct ip_mreqn > { > struct in_addr imr_multiaddr; > struct in_addr imr_address; > int imr_ifindex; > }; > > >struct in_pktinfo > { > int ipi_ifindex; > struct in_addr ipi_spec_dst; > struct in_addr ipi_addr; > }; ># 344 "/usr/include/netinet/in.h" 2 3 4 ># 352 "/usr/include/netinet/in.h" 3 4 >extern uint32_t ntohl (uint32_t __netlong) throw () __attribute__ ((__const__)); >extern uint16_t ntohs (uint16_t __netshort) > throw () __attribute__ ((__const__)); >extern uint32_t htonl (uint32_t __hostlong) > throw () __attribute__ ((__const__)); >extern uint16_t htons (uint16_t __hostshort) > throw () __attribute__ ((__const__)); > > > > ># 1 "/usr/include/bits/byteswap.h" 1 3 4 ># 364 "/usr/include/netinet/in.h" 2 3 4 ># 426 "/usr/include/netinet/in.h" 3 4 >extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) throw (); > > >extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) > throw (); ># 454 "/usr/include/netinet/in.h" 3 4 >struct in6_pktinfo > { > struct in6_addr ipi6_addr; > unsigned int ipi6_ifindex; > }; > > >struct ip6_mtuinfo > { > struct sockaddr_in6 ip6m_addr; > uint32_t ip6m_mtu; > }; > > > > >extern int inet6_option_space (int __nbytes) > throw () __attribute__ ((__deprecated__)); >extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, > int __type) throw () __attribute__ ((__deprecated__)); >extern int inet6_option_append (struct cmsghdr *__cmsg, > __const uint8_t *__typep, int __multx, > int __plusy) throw () __attribute__ ((__deprecated__)); >extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, > int __multx, int __plusy) > throw () __attribute__ ((__deprecated__)); >extern int inet6_option_next (__const struct cmsghdr *__cmsg, > uint8_t **__tptrp) > throw () __attribute__ ((__deprecated__)); >extern int inet6_option_find (__const struct cmsghdr *__cmsg, > uint8_t **__tptrp, int __type) > throw () __attribute__ ((__deprecated__)); > > > >extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) throw (); >extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset, > uint8_t __type, socklen_t __len, uint8_t __align, > void **__databufp) throw (); >extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset) > throw (); >extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val, > socklen_t __vallen) throw (); >extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset, > uint8_t *__typep, socklen_t *__lenp, > void **__databufp) throw (); >extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset, > uint8_t __type, socklen_t *__lenp, > void **__databufp) throw (); >extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val, > socklen_t __vallen) throw (); > > > >extern socklen_t inet6_rth_space (int __type, int __segments) throw (); >extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type, > int __segments) throw (); >extern int inet6_rth_add (void *__bp, __const struct in6_addr *__addr) throw (); >extern int inet6_rth_reverse (__const void *__in, void *__out) throw (); >extern int inet6_rth_segments (__const void *__bp) throw (); >extern struct in6_addr *inet6_rth_getaddr (__const void *__bp, int __index) > throw (); > > > > > >extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, > struct in_addr __group, uint32_t *__fmode, > uint32_t *__numsrc, struct in_addr *__slist) > throw (); > > >extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, > struct in_addr __group, uint32_t __fmode, > uint32_t __numsrc, > __const struct in_addr *__slist) > throw (); > > > >extern int getsourcefilter (int __s, uint32_t __interface_addr, > __const struct sockaddr *__group, > socklen_t __grouplen, uint32_t *__fmode, > uint32_t *__numsrc, > struct sockaddr_storage *__slist) throw (); > > >extern int setsourcefilter (int __s, uint32_t __interface_addr, > __const struct sockaddr *__group, > socklen_t __grouplen, uint32_t __fmode, > uint32_t __numsrc, > __const struct sockaddr_storage *__slist) throw (); > > >} ># 29 "/usr/include/netdb.h" 2 3 4 > > > > ># 1 "/usr/include/rpc/netdb.h" 1 3 4 ># 42 "/usr/include/rpc/netdb.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 43 "/usr/include/rpc/netdb.h" 2 3 4 > >extern "C" { > >struct rpcent >{ > char *r_name; > char **r_aliases; > int r_number; >}; > >extern void setrpcent (int __stayopen) throw (); >extern void endrpcent (void) throw (); >extern struct rpcent *getrpcbyname (__const char *__name) throw (); >extern struct rpcent *getrpcbynumber (int __number) throw (); >extern struct rpcent *getrpcent (void) throw (); > > >extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf, > char *__buffer, size_t __buflen, > struct rpcent **__result) throw (); > >extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, > char *__buffer, size_t __buflen, > struct rpcent **__result) throw (); > >extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, > size_t __buflen, struct rpcent **__result) throw (); > > >} ># 34 "/usr/include/netdb.h" 2 3 4 > > > > ># 1 "/usr/include/bits/siginfo.h" 1 3 4 ># 25 "/usr/include/bits/siginfo.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 26 "/usr/include/bits/siginfo.h" 2 3 4 ># 39 "/usr/include/netdb.h" 2 3 4 > > > > ># 1 "/usr/include/bits/netdb.h" 1 3 4 ># 27 "/usr/include/bits/netdb.h" 3 4 >struct netent >{ > char *n_name; > char **n_aliases; > int n_addrtype; > uint32_t n_net; >}; ># 44 "/usr/include/netdb.h" 2 3 4 ># 54 "/usr/include/netdb.h" 3 4 >extern "C" { > > > > > > >extern int *__h_errno_location (void) throw () __attribute__ ((__const__)); ># 88 "/usr/include/netdb.h" 3 4 >extern void herror (__const char *__str) throw (); > > >extern __const char *hstrerror (int __err_num) throw (); > > > > >struct hostent >{ > char *h_name; > char **h_aliases; > int h_addrtype; > int h_length; > char **h_addr_list; > >}; > > > > > > >extern void sethostent (int __stay_open); > > > > > >extern void endhostent (void); > > > > > > >extern struct hostent *gethostent (void); > > > > > > >extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len, > int __type); > > > > > >extern struct hostent *gethostbyname (__const char *__name); ># 149 "/usr/include/netdb.h" 3 4 >extern struct hostent *gethostbyname2 (__const char *__name, int __af); ># 161 "/usr/include/netdb.h" 3 4 >extern int gethostent_r (struct hostent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct hostent **__restrict __result, > int *__restrict __h_errnop); > >extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len, > int __type, > struct hostent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct hostent **__restrict __result, > int *__restrict __h_errnop); > >extern int gethostbyname_r (__const char *__restrict __name, > struct hostent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct hostent **__restrict __result, > int *__restrict __h_errnop); > >extern int gethostbyname2_r (__const char *__restrict __name, int __af, > struct hostent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct hostent **__restrict __result, > int *__restrict __h_errnop); ># 192 "/usr/include/netdb.h" 3 4 >extern void setnetent (int __stay_open); > > > > > >extern void endnetent (void); > > > > > > >extern struct netent *getnetent (void); > > > > > > >extern struct netent *getnetbyaddr (uint32_t __net, int __type); > > > > > >extern struct netent *getnetbyname (__const char *__name); ># 231 "/usr/include/netdb.h" 3 4 >extern int getnetent_r (struct netent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct netent **__restrict __result, > int *__restrict __h_errnop); > >extern int getnetbyaddr_r (uint32_t __net, int __type, > struct netent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct netent **__restrict __result, > int *__restrict __h_errnop); > >extern int getnetbyname_r (__const char *__restrict __name, > struct netent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct netent **__restrict __result, > int *__restrict __h_errnop); > > > > >struct servent >{ > char *s_name; > char **s_aliases; > int s_port; > char *s_proto; >}; > > > > > > >extern void setservent (int __stay_open); > > > > > >extern void endservent (void); > > > > > > >extern struct servent *getservent (void); > > > > > > >extern struct servent *getservbyname (__const char *__name, > __const char *__proto); > > > > > > >extern struct servent *getservbyport (int __port, __const char *__proto); ># 303 "/usr/include/netdb.h" 3 4 >extern int getservent_r (struct servent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct servent **__restrict __result); > >extern int getservbyname_r (__const char *__restrict __name, > __const char *__restrict __proto, > struct servent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct servent **__restrict __result); > >extern int getservbyport_r (int __port, __const char *__restrict __proto, > struct servent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct servent **__restrict __result); > > > > >struct protoent >{ > char *p_name; > char **p_aliases; > int p_proto; >}; > > > > > > >extern void setprotoent (int __stay_open); > > > > > >extern void endprotoent (void); > > > > > > >extern struct protoent *getprotoent (void); > > > > > >extern struct protoent *getprotobyname (__const char *__name); > > > > > >extern struct protoent *getprotobynumber (int __proto); ># 369 "/usr/include/netdb.h" 3 4 >extern int getprotoent_r (struct protoent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct protoent **__restrict __result); > >extern int getprotobyname_r (__const char *__restrict __name, > struct protoent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct protoent **__restrict __result); > >extern int getprotobynumber_r (int __proto, > struct protoent *__restrict __result_buf, > char *__restrict __buf, size_t __buflen, > struct protoent **__restrict __result); ># 390 "/usr/include/netdb.h" 3 4 >extern int setnetgrent (__const char *__netgroup); > > > > > > > >extern void endnetgrent (void); ># 407 "/usr/include/netdb.h" 3 4 >extern int getnetgrent (char **__restrict __hostp, > char **__restrict __userp, > char **__restrict __domainp); ># 418 "/usr/include/netdb.h" 3 4 >extern int innetgr (__const char *__netgroup, __const char *__host, > __const char *__user, __const char *domain); > > > > > > > >extern int getnetgrent_r (char **__restrict __hostp, > char **__restrict __userp, > char **__restrict __domainp, > char *__restrict __buffer, size_t __buflen); ># 446 "/usr/include/netdb.h" 3 4 >extern int rcmd (char **__restrict __ahost, unsigned short int __rport, > __const char *__restrict __locuser, > __const char *__restrict __remuser, > __const char *__restrict __cmd, int *__restrict __fd2p); ># 458 "/usr/include/netdb.h" 3 4 >extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport, > __const char *__restrict __locuser, > __const char *__restrict __remuser, > __const char *__restrict __cmd, int *__restrict __fd2p, > sa_family_t __af); ># 474 "/usr/include/netdb.h" 3 4 >extern int rexec (char **__restrict __ahost, int __rport, > __const char *__restrict __name, > __const char *__restrict __pass, > __const char *__restrict __cmd, int *__restrict __fd2p); ># 486 "/usr/include/netdb.h" 3 4 >extern int rexec_af (char **__restrict __ahost, int __rport, > __const char *__restrict __name, > __const char *__restrict __pass, > __const char *__restrict __cmd, int *__restrict __fd2p, > sa_family_t __af); ># 500 "/usr/include/netdb.h" 3 4 >extern int ruserok (__const char *__rhost, int __suser, > __const char *__remuser, __const char *__locuser); ># 510 "/usr/include/netdb.h" 3 4 >extern int ruserok_af (__const char *__rhost, int __suser, > __const char *__remuser, __const char *__locuser, > sa_family_t __af); ># 522 "/usr/include/netdb.h" 3 4 >extern int rresvport (int *__alport); ># 531 "/usr/include/netdb.h" 3 4 >extern int rresvport_af (int *__alport, sa_family_t __af); > > > > > > >struct addrinfo >{ > int ai_flags; > int ai_family; > int ai_socktype; > int ai_protocol; > socklen_t ai_addrlen; > struct sockaddr *ai_addr; > char *ai_canonname; > struct addrinfo *ai_next; >}; > > > >struct gaicb >{ > const char *ar_name; > const char *ar_service; > const struct addrinfo *ar_request; > struct addrinfo *ar_result; > > int __return; > int __unused[5]; >}; ># 631 "/usr/include/netdb.h" 3 4 >extern int getaddrinfo (__const char *__restrict __name, > __const char *__restrict __service, > __const struct addrinfo *__restrict __req, > struct addrinfo **__restrict __pai); > > >extern void freeaddrinfo (struct addrinfo *__ai) throw (); > > >extern __const char *gai_strerror (int __ecode) throw (); > > > > > >extern int getnameinfo (__const struct sockaddr *__restrict __sa, > socklen_t __salen, char *__restrict __host, > socklen_t __hostlen, char *__restrict __serv, > socklen_t __servlen, unsigned int __flags); ># 661 "/usr/include/netdb.h" 3 4 >extern int getaddrinfo_a (int __mode, struct gaicb *__list[], > int __ent, struct sigevent *__restrict __sig); ># 672 "/usr/include/netdb.h" 3 4 >extern int gai_suspend (__const struct gaicb *__const __list[], int __ent, > __const struct timespec *__timeout); > > >extern int gai_error (struct gaicb *__req) throw (); > > >extern int gai_cancel (struct gaicb *__gaicbp) throw (); > > >} ># 18 "../XrdSec/XrdSecInterface.hh" 2 ># 28 "../XrdSec/XrdSecInterface.hh" ># 1 "../XrdSec/XrdSecEntity.hh" 1 ># 30 "../XrdSec/XrdSecEntity.hh" >class XrdSecEntity >{ >public: > char prot[8]; > char *name; > char *host; > char *vorg; > char *role; > char *grps; > char *endorsements; > char *tident; > > XrdSecEntity() {prot[0] = '\0'; > name=host=vorg=role=grps=endorsements=tident = 0; > } > ~XrdSecEntity() {} >}; ># 29 "../XrdSec/XrdSecInterface.hh" 2 > > > > > > > >struct XrdSecBuffer >{ > int size; > char *buffer; > > XrdSecBuffer(char *bp=0, int sz=0) {buffer = membuf = bp; size=sz;} > ~XrdSecBuffer() {if (membuf) free(membuf);} > >private: > char *membuf; >}; > > > > > > >typedef XrdSecBuffer XrdSecCredentials; > > > > > > > >typedef XrdSecBuffer XrdSecParameters; ># 104 "../XrdSec/XrdSecInterface.hh" >class XrdOucErrInfo; > >class XrdSecProtocol >{ >public: > > > > >XrdSecEntity Entity; ># 122 "../XrdSec/XrdSecInterface.hh" >virtual int Authenticate (XrdSecCredentials *cred, > XrdSecParameters **parms, > XrdOucErrInfo *einfo=0)=0; > > > > > >virtual XrdSecCredentials *getCredentials(XrdSecParameters *parm=0, > XrdOucErrInfo *einfo=0)=0; ># 142 "../XrdSec/XrdSecInterface.hh" >virtual int Encrypt(const char * , > int , > XrdSecBuffer ** > ) {return -95;} > > > > > > >virtual int Decrypt(const char * , > int , > XrdSecBuffer ** > ) {return -95;} > > > > > > > >virtual int Sign(const char * , > int , > XrdSecBuffer ** > ) {return -95;} > > > > > > > >virtual int Verify(const char * , > int , > const char * , > int ) > {return -95;} ># 187 "../XrdSec/XrdSecInterface.hh" >virtual int getKey(char * =0, int =0) {return -95;} > > > > > > >virtual int setKey(char * , int ) {return -95;} > > > > > >virtual void Delete()=0; > > XrdSecProtocol() {} >protected: > >virtual ~XrdSecProtocol() {} >}; ># 276 "../XrdSec/XrdSecInterface.hh" >extern "C" >{ >extern XrdSecProtocol *XrdSecGetProtocol(const char *hostname, > const struct sockaddr &netaddr, > const XrdSecParameters &parms, > XrdOucErrInfo *einfo=0); >} ># 300 "../XrdSec/XrdSecInterface.hh" >class XrdSecService >{ >public: > > > > > > >virtual const char *getParms(int &size, const char *hname=0) = 0; > > > > > >virtual XrdSecProtocol *getProtocol(const char *host, > const struct sockaddr &hadr, > const XrdSecCredentials *cred, > XrdOucErrInfo *einfo)=0; > > XrdSecService() {} >virtual ~XrdSecService() {} >}; ># 334 "../XrdSec/XrdSecInterface.hh" >class XrdSysLogger; > >extern "C" >{ >extern XrdSecService *XrdSecgetService(XrdSysLogger *lp, const char *cfn); >} ># 17 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 ># 1 "../XrdSec/XrdSecTrace.hh" 1 ># 15 "../XrdSec/XrdSecTrace.hh" ># 1 "../XrdOuc/XrdOucTrace.hh" 1 ># 18 "../XrdOuc/XrdOucTrace.hh" >class XrdOucTrace >{ >public: > >inline void Beg(const char *tid=0, const char *usr=0, const char *sid=0) > {eDest->TBeg(usr, tid, sid);} > >inline void End() {eDest->TEnd();} > >inline int Tracing(int mask) {return mask & What;} > > int What; > > XrdOucTrace(XrdSysError *erp) {eDest = erp; What = 0;} > ~XrdOucTrace() {} > >static char *bin2hex(char *data, int dlen, char *buff=0); > >private: > XrdSysError *eDest; >}; ># 16 "../XrdSec/XrdSecTrace.hh" 2 ># 18 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 > > ># 1 "../XrdSut/XrdSutPFile.hh" 1 ># 47 "../XrdSut/XrdSutPFile.hh" >enum EPFileErrors { > kPFErrBadInputs, > kPFErrFileAlreadyOpen, > kPFErrNoFile, > kPFErrFileRename, > kPFErrStat, > kPFErrFileOpen, > kPFErrFileNotOpen, > kPFErrLocking, > kPFErrUnlocking, > kPFErrFileLocked, > kPFErrSeek, > kPFErrRead, > kPFErrOutOfMemory, > kPFErrLenMismatch, > kPFErrBadOp >}; > >class XrdSutPFEntry; > >class XrdSutPFEntInd { >public: > char *name; > kXR_int32 nxtofs; > kXR_int32 entofs; > kXR_int32 entsiz; > XrdSutPFEntInd(const char *n = 0, > kXR_int32 no = 0, kXR_int32 eo = 0, kXR_int32 es = 0); > XrdSutPFEntInd(const XrdSutPFEntInd &ei); > virtual ~XrdSutPFEntInd() { if (name) delete[] name; } > > kXR_int32 Length() const { return (strlen(name) + 4*sizeof(kXR_int32)); } > void SetName(const char *n = 0); > > > XrdSutPFEntInd &operator=(const XrdSutPFEntInd ei); >}; > >class XrdSutPFHeader { >public: > char fileID[8]; > kXR_int32 version; > kXR_int32 ctime; > kXR_int32 itime; > kXR_int32 entries; > kXR_int32 indofs; > kXR_int32 jnksiz; > XrdSutPFHeader(const char *id = " ", kXR_int32 v = 0, kXR_int32 ct = 0, > kXR_int32 it = 0, kXR_int32 ent = 0, kXR_int32 ofs = 0); > XrdSutPFHeader(const XrdSutPFHeader &fh); > virtual ~XrdSutPFHeader() { } > void Print() const; > > static kXR_int32 Length() { return (8 + 6*sizeof(kXR_int32)); } >}; > > >class XrdSutPFile { > > friend class XrdSutCache; > >private: > char *name; > bool valid; > kXR_int32 fFd; > XrdOucHash<kXR_int32> *fHashTable; > kXR_int32 fHTutime; > kXR_int32 fError; > XrdOucString fErrStr; > > > kXR_int32 WriteHeader(XrdSutPFHeader hd); > kXR_int32 ReadHeader(XrdSutPFHeader &hd); > kXR_int32 WriteInd(kXR_int32 ofs, XrdSutPFEntInd ind); > kXR_int32 ReadInd(kXR_int32 ofs, XrdSutPFEntInd &ind); > kXR_int32 WriteEnt(kXR_int32 ofs, XrdSutPFEntry ent); > kXR_int32 ReadEnt(kXR_int32 ofs, XrdSutPFEntry &ent); > > > kXR_int32 Reset(kXR_int32 ofs, kXR_int32 size); > > > kXR_int32 UpdateHashTable(bool force = 0); > > > kXR_int32 Err(kXR_int32 code, const char *loc, > const char *em1 = 0, const char *em2 = 0); > >public: > XrdSutPFile(const char *n, kXR_int32 openmode = 0x1, > kXR_int32 createmode = 0600, bool hashtab = 1); > XrdSutPFile(const XrdSutPFile &f); > virtual ~XrdSutPFile(); > > > bool Init(const char *n, kXR_int32 openmode = 0x1, > kXR_int32 createmode = 0600, bool hashtab = 1); > > > kXR_int32 Open(kXR_int32 opt, bool *wasopen = 0, > const char *nam = 0, kXR_int32 createmode = 0600); > kXR_int32 Close(kXR_int32 d = -1); > > > const char *Name() const { return (const char *)name; } > > bool IsValid() const { return valid; } > > kXR_int32 LastError() const { return fError; } > const char *LastErrStr() const { return (const char *)fErrStr.c_str(); } > > > kXR_int32 RemoveEntry(const char *name); > kXR_int32 RemoveEntry(kXR_int32 ofs); > kXR_int32 RemoveEntries(const char *name, char opt); > kXR_int32 Trim(const char *fbak = 0); > kXR_int32 UpdateHeader(XrdSutPFHeader hd); > kXR_int32 WriteEntry(XrdSutPFEntry ent); > kXR_int32 UpdateCount(const char *nm, int *cnt = 0, int step = 1, bool reset = 0); > kXR_int32 ResetCount(const char *nm) { return UpdateCount(nm,0,0,1); } > kXR_int32 ReadCount(const char *nm, int &cnt) { return UpdateCount(nm,&cnt,0); } > > > kXR_int32 RetrieveHeader(XrdSutPFHeader &hd); > kXR_int32 ReadEntry(const char *name, XrdSutPFEntry &ent, int opt = 0); > kXR_int32 ReadEntry(kXR_int32 ofs, XrdSutPFEntry &ent); > kXR_int32 SearchEntries(const char *name, char opt, > kXR_int32 *ofs = 0, kXR_int32 nofs = 1); > kXR_int32 SearchSpecialEntries(kXR_int32 *ofs = 0, kXR_int32 nofs = 1); > > > kXR_int32 Browse(void *out = 0); >}; ># 21 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 ># 1 "../XrdSut/XrdSutBuffer.hh" 1 ># 15 "../XrdSut/XrdSutBuffer.hh" ># 1 "../XrdSut/XrdSutBuckList.hh" 1 ># 15 "../XrdSut/XrdSutBuckList.hh" ># 1 "../XrdSut/XrdSutBucket.hh" 1 ># 15 "../XrdSut/XrdSutBucket.hh" ># 1 "../XrdSut/XrdSutAux.hh" 1 ># 21 "../XrdSut/XrdSutAux.hh" >class XrdCryptoFactory; > >class XrdOucString; >class XrdSutBucket; >class XrdSutBuffer; ># 37 "../XrdSut/XrdSutAux.hh" >enum kXRSBucketTypes { > kXRS_none = 0, > kXRS_inactive = 1, > kXRS_cryptomod = 3000, > kXRS_main, > kXRS_srv_seal, > kXRS_clnt_seal, > kXRS_puk, > kXRS_cipher, > kXRS_rtag, > kXRS_signed_rtag, > kXRS_user, > kXRS_host, > kXRS_creds, > kXRS_message, > kXRS_srvID, > kXRS_sessionID, > kXRS_version, > kXRS_status, > kXRS_localstatus, > kXRS_othercreds, > kXRS_cache_idx, > kXRS_clnt_opts, > kXRS_error_code, > kXRS_timestamp, > kXRS_x509, > kXRS_issuer_hash, > kXRS_x509_req, > kXRS_cipher_alg, > kXRS_md_alg, > kXRS_afsinfo, > kXRS_reserved >}; > > > > > >const char *XrdSutBuckStr(int kbck); ># 96 "../XrdSut/XrdSutAux.hh" >void XrdSutSetTrace(kXR_int32 trace); ># 105 "../XrdSut/XrdSutAux.hh" >volatile void *XrdSutMemSet(volatile void *dst, int c, int len); ># 116 "../XrdSut/XrdSutAux.hh" >int XrdSutGetPass(const char *prompt, XrdOucString &passwd); ># 125 "../XrdSut/XrdSutAux.hh" >int XrdSutGetLine(XrdOucString &line, const char *prompt = 0); > > > > > > > >bool XrdSutAskConfirm(const char *msg1, bool defact, const char *msg2 = 0); > > > > > > > >int XrdSutToHex(const char *in, int lin, char *out); > > > > > > > >int XrdSutFromHex(const char *in, char *out, int &lout); ># 160 "../XrdSut/XrdSutAux.hh" >int XrdSutTimeString(int t, char *st, int opt = 0); > > > > > > >int XrdSutExpand(XrdOucString &path); > > > > > > > >const char *XrdSutHome(); > > > > > > >int XrdSutMkdir(const char *dir, unsigned int mode = 0777, > const char *opt = "-p"); ># 199 "../XrdSut/XrdSutAux.hh" >int XrdSutParseTime(const char *tstr, int opt = 0); ># 213 "../XrdSut/XrdSutAux.hh" >class XrdSutFileLocker { >private: > int fdesk; > bool valid; >public: > enum ELockType { kShared = 0, kExcl = 1 }; > XrdSutFileLocker(int fd, ELockType lock); > ~XrdSutFileLocker(); > bool IsValid() const { return valid; } >}; ># 16 "../XrdSut/XrdSutBucket.hh" 2 > > >class XrdOucString; > > > > > > > >class XrdSutBucket >{ >public: > kXR_int32 type; > kXR_int32 size; > char *buffer; > > XrdSutBucket(char *bp=0, int sz=0, int ty=0); > XrdSutBucket(XrdOucString &s, int ty=0); > XrdSutBucket(XrdSutBucket &b); > virtual ~XrdSutBucket() {if (membuf) delete[] membuf;} > > void Update(char *nb = 0, int ns = 0, int ty = 0); > int Update(XrdOucString &s, int ty = 0); > int SetBuf(const char *nb = 0, int ns = 0); > > void Dump(int opt = 1); > void ToString(XrdOucString &s); > > > int operator==(const XrdSutBucket &b); > > > int operator!=(const XrdSutBucket &b) { return !(*this == b); } > >private: > char *membuf; >}; ># 16 "../XrdSut/XrdSutBuckList.hh" 2 ># 28 "../XrdSut/XrdSutBuckList.hh" >class XrdSutBuckListNode { >private: > XrdSutBucket *buck; > XrdSutBuckListNode *next; >public: > XrdSutBuckListNode(XrdSutBucket *b = 0, XrdSutBuckListNode *n = 0) > { buck = b; next = n;} > virtual ~XrdSutBuckListNode() { } > > XrdSutBucket *Buck() const { return buck; } > > XrdSutBuckListNode *Next() const { return next; } > > void SetNext(XrdSutBuckListNode *n) { next = n; } >}; > >class XrdSutBuckList { > >private: > XrdSutBuckListNode *begin; > XrdSutBuckListNode *current; > XrdSutBuckListNode *end; > XrdSutBuckListNode *previous; > int size; > > XrdSutBuckListNode *Find(XrdSutBucket *b); > >public: > XrdSutBuckList(XrdSutBucket *b = 0); > virtual ~XrdSutBuckList(); > > > int Size() const { return size; } > XrdSutBucket *End() const { return end->Buck(); } > > > void PutInFront(XrdSutBucket *b); > void PushBack(XrdSutBucket *b); > void Remove(XrdSutBucket *b); > > > XrdSutBucket *Begin(); > XrdSutBucket *Next(); >}; ># 16 "../XrdSut/XrdSutBuffer.hh" 2 ># 24 "../XrdSut/XrdSutBuffer.hh" >class XrdOucString; > >class XrdSutBuffer { > >private: > > XrdSutBuckList fBuckets; > XrdOucString fOptions; > XrdOucString fProtocol; > kXR_int32 fStep; > >public: > XrdSutBuffer(const char *prot, const char *opts = 0) > {fOptions = opts; fProtocol = prot; fStep = 0;} > XrdSutBuffer(const char *buffer, kXR_int32 length); > > virtual ~XrdSutBuffer(); > > int AddBucket(char *bp=0, int sz=0, int ty=0) > { XrdSutBucket *b = new XrdSutBucket(bp,sz,ty); > if (b) { fBuckets.PushBack(b); return 0;} return -1; } > int AddBucket(XrdOucString s, int ty=0) > { XrdSutBucket *b = new XrdSutBucket(s,ty); > if (b) { fBuckets.PushBack(b); return 0;} return -1; } > int AddBucket(XrdSutBucket *b) > { if (b) { fBuckets.PushBack(b); return 0;} return -1; } > > int UpdateBucket(const char *bp, int sz, int ty); > int UpdateBucket(XrdOucString s, int ty); > > > void Remove(XrdSutBucket *b) { fBuckets.Remove(b); } > > void Dump(const char *stepstr = 0); > void Message(const char *prepose = 0); > int Serialized(char **buffer, char opt = 'n'); > > void Deactivate(kXR_int32 type); > > > kXR_int32 MarshalBucket(kXR_int32 type, kXR_int32 code); > kXR_int32 UnmarshalBucket(kXR_int32 type, kXR_int32 &code); > > XrdSutBucket *GetBucket(kXR_int32 type, const char *tag = 0); > XrdSutBuckList *GetBuckList() const { return (XrdSutBuckList *)&fBuckets; } > int GetNBuckets() const { return fBuckets.Size(); } > const char *GetOptions() const { return fOptions.c_str(); } > const char *GetProtocol() const { return fProtocol.c_str(); } > int GetStep() const { return (int)fStep; } > void SetStep(int s) { fStep = (kXR_int32)s; } > void IncrementStep() { fStep++; } >}; ># 22 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 ># 1 "../XrdSut/XrdSutRndm.hh" 1 ># 24 "../XrdSut/XrdSutRndm.hh" >class XrdOucString; > >class XrdSutRndm { > >public: > static bool fgInit; > > XrdSutRndm() { if (!fgInit) fgInit = XrdSutRndm::Init(); } > virtual ~XrdSutRndm() { } > > > static bool Init(bool force = 0); > > > static char *GetBuffer(int len, int opt = -1); > > static int GetString(int opt, int len, XrdOucString &s); > static int GetString(const char *copt, int len, XrdOucString &s); > > static unsigned int GetUInt(); > > static int GetRndmTag(XrdOucString &rtag); >} >; ># 23 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 > ># 1 "../XrdCrypto/XrdCryptoAux.hh" 1 ># 32 "../XrdCrypto/XrdCryptoAux.hh" >typedef int (*XrdCryptoKDFunLen_t)(); >typedef int (*XrdCryptoKDFun_t)(const char *pass, int plen, > const char *salt, int slen, > char *key, int klen); >int XrdCryptoKDFunLen(); >int XrdCryptoKDFun(const char *pass, int plen, const char *salt, int slen, > char *key, int klen); ># 48 "../XrdCrypto/XrdCryptoAux.hh" >void XrdCryptoSetTrace(kXR_int32 trace); ># 25 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 ># 1 "../XrdCrypto/XrdCryptoCipher.hh" 1 ># 23 "../XrdCrypto/XrdCryptoCipher.hh" ># 1 "../XrdCrypto/XrdCryptoBasic.hh" 1 ># 30 "../XrdCrypto/XrdCryptoBasic.hh" >class XrdCryptoBasic >{ >public: > > XrdCryptoBasic(const char *t = 0, int l = 0, const char *b = 0); > > virtual ~XrdCryptoBasic() > { if (type) delete[] type; if (membuf) delete[] membuf; } > > virtual XrdSutBucket *AsBucket(); > char *AsHexString(); > virtual int Length() const { return lenbuf; } > virtual char *Buffer() const { return membuf; } > virtual char *Type() const { return type; } > > virtual int FromHex(const char *hex); > virtual int SetLength(int l); > virtual int SetBuffer(int l, const char *b); > virtual int SetType(const char *t); > > virtual void UseBuffer(int l, const char *b) > { if (membuf) delete[] membuf; membuf = (char *)b; lenbuf = l; } > >private: > kXR_int32 lenbuf; > char *membuf; > char *type; >}; ># 24 "../XrdCrypto/XrdCryptoCipher.hh" 2 > > > > > > >class XrdCryptoCipher : public XrdCryptoBasic >{ >public: > XrdCryptoCipher() : XrdCryptoBasic() {} > virtual ~XrdCryptoCipher() {} > > > virtual bool Finalize(char *pub, int lpub, const char *t); > > > virtual bool IsValid(); > > > virtual int EncOutLength(int l); > virtual int DecOutLength(int l); > > > virtual XrdSutBucket *AsBucket(); > virtual char *IV(int &l) const; > virtual bool IsDefaultLength() const; > virtual char *Public(int &lpub); > > > virtual void SetIV(int l, const char *iv); > > > virtual int Encrypt(const char *in, int lin, char *out); > virtual int Decrypt(const char *in, int lin, char *out); > int Encrypt(XrdSutBucket &buck); > int Decrypt(XrdSutBucket &buck); > virtual char *RefreshIV(int &l); >}; ># 26 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 ># 1 "../XrdCrypto/XrdCryptoFactory.hh" 1 ># 31 "../XrdCrypto/XrdCryptoFactory.hh" >class XrdSutBucket; >class XrdCryptoCipher; >class XrdCryptoMsgDigest; >class XrdCryptoRSA; >class XrdCryptoX509; >class XrdCryptoX509Chain; >class XrdCryptoX509Crl; >class XrdCryptoX509Req; > > > > > > >typedef int (*XrdCryptoKDFunLen_t)(); >typedef int (*XrdCryptoKDFun_t)(const char *pass, int plen, > const char *salt, int slen, > char *key, int klen); > > >typedef bool (*XrdCryptoX509VerifyCert_t)(XrdCryptoX509 *c, XrdCryptoX509 *r); > >typedef bool (*XrdCryptoX509VerifyChain_t)(XrdCryptoX509Chain *chain, > int &errcode); > >typedef XrdSutBucket *(*XrdCryptoX509ExportChain_t)(XrdCryptoX509Chain *, bool); > > >typedef int (*XrdCryptoX509ChainToFile_t)(XrdCryptoX509Chain *, const char *); > > >typedef int (*XrdCryptoX509ParseFile_t)(const char *fname, > XrdCryptoX509Chain *); > >typedef int (*XrdCryptoX509ParseBucket_t)(XrdSutBucket *, > XrdCryptoX509Chain *); > > >class XrdCryptoFactory >{ >private: > char name[10]; > int fID; >public: > XrdCryptoFactory(const char *n = "Unknown", int id = -1); > virtual ~XrdCryptoFactory() { } > > > virtual void SetTrace(kXR_int32 trace); > > > char *Name() const { return (char *)&name[0]; } > int ID() const { return fID; } > > > static XrdCryptoFactory *GetCryptoFactory(const char *factoryname); > > > virtual XrdCryptoKDFunLen_t KDFunLen(); > virtual XrdCryptoKDFun_t KDFun(); > > > virtual bool SupportedCipher(const char *t); > virtual XrdCryptoCipher *Cipher(const char *t, int l = 0); > virtual XrdCryptoCipher *Cipher(const char *t, int l, const char *k, > int liv, const char *iv); > virtual XrdCryptoCipher *Cipher(XrdSutBucket *b); > virtual XrdCryptoCipher *Cipher(int bits, char *pub, int lpub, const char *t = 0); > virtual XrdCryptoCipher *Cipher(const XrdCryptoCipher &c); > > > virtual bool SupportedMsgDigest(const char *dgst); > virtual XrdCryptoMsgDigest *MsgDigest(const char *dgst); > > > virtual XrdCryptoRSA *RSA(int b = 0, int e = 0); > virtual XrdCryptoRSA *RSA(const char *p, int l = 0); > virtual XrdCryptoRSA *RSA(const XrdCryptoRSA &r); > > > virtual XrdCryptoX509 *X509(const char *cf, const char *kf = 0); > virtual XrdCryptoX509 *X509(XrdSutBucket *b); > > > virtual XrdCryptoX509Crl *X509Crl(const char *crlfile); > > > virtual XrdCryptoX509Req *X509Req(XrdSutBucket *bck); > > > virtual XrdCryptoX509VerifyCert_t X509VerifyCert(); > virtual XrdCryptoX509VerifyChain_t X509VerifyChain(); > virtual XrdCryptoX509ParseFile_t X509ParseFile(); > virtual XrdCryptoX509ParseBucket_t X509ParseBucket(); > virtual XrdCryptoX509ExportChain_t X509ExportChain(); > virtual XrdCryptoX509ChainToFile_t X509ChainToFile(); > > > bool operator==(const XrdCryptoFactory factory); >}; ># 27 "../XrdSecpwd/XrdSecProtocolpwd.hh" 2 > > > > > >typedef XrdOucString String; ># 47 "../XrdSecpwd/XrdSecProtocolpwd.hh" >enum kpwdStatus { > kpST_error = -1, > kpST_ok = 0, > kpST_more = 1 >}; > > > >enum kpwdAutoreg { > kpAR_none = 0, > kpAR_users = 1, > kpAR_all = 2 >}; > > > >enum kpwdUpdate { > kpUP_none = 0, > kpUP_remove = 1, > kpUP_all = 2 >}; > > > >enum kpwdCredsInput { > kpCI_undef = -1, > kpCI_prompt = 0, > kpCI_exact = 1, > kpCI_wildcard = 2 >}; > > > >enum kpwdCredType { > kpCT_undef = -1, > kpCT_normal = 0, > kpCT_onetime = 1, > kpCT_old = 2, > kpCT_new = 3, > kpCT_newagain = 4, > kpCT_autoreg = 5, > kpCT_ar_again = 6, > kpCT_crypt = 7, > kpCT_afs = 8, > kpCT_afsenc = 9 >}; > > > >enum kpwdCredsActions { > kpCA_undef = -1, > kpCA_check = 0, > kpCA_checkold = 1, > kpCA_cache = 2, > kpCA_checkcache = 3 >}; > > >enum kpwdClientSteps { > kXPC_none = 0, > kXPC_normal = 1000, > kXPC_verifysrv, > kXPC_signedrtag, > kXPC_creds, > kXPC_autoreg, > kXPC_failureack, > kXPC_reserved >}; > > >enum kpwdServerSteps { > kXPS_none = 0, > kXPS_init = 2000, > kXPS_credsreq, > kXPS_rtag, > kXPS_signedrtag, > kXPS_newpuk, > kXPS_puk, > kXPS_failure, > kXPS_reserved >}; > > >enum kpwdErrors { > kPWErrParseBuffer = 10000, > kPWErrDecodeBuffer, > kPWErrLoadCrypto, > kPWErrBadProtocol, > kPWErrNoUserHost, > kPWErrNoUser, > kPWErrNoHost, > kPWErrBadUser, > kPWErrCreateBucket, > kPWErrDuplicateBucket, > kPWErrCreateBuffer, > kPWErrSerialBuffer, > kPWErrGenCipher, > kPWErrExportPuK, > kPWErrEncRndmTag, > kPWErrBadRndmTag, > kPWErrNoRndmTag, > kPWErrNoCipher, > kPWErrQueryCreds, > kPWErrNoCreds, > kPWErrBadPasswd, > kPWErrBadCache, > kPWErrNoCache, > kPWErrNoSessID, > kPWErrBadSessID, > kPWErrBadOpt, > kPWErrMarshal, > kPWErrUnmarshal, > kPWErrSaveCreds, > kPWErrNoSalt, > kPWErrNoBuffer, > kPWErrRefCipher, > kPWErrNoPublic, > kPWErrAddBucket, > kPWErrFinCipher, > kPWErrInit, > kPWErrBadCreds, > kPWErrError >}; > > >typedef struct { > char ctype; > char action; > short options; >} pwdStatus_t; ># 194 "../XrdSecpwd/XrdSecProtocolpwd.hh" >class pwdOptions { >public: > short debug; > short mode; > short areg; > short upwd; > short alog; > short verisrv; > short vericlnt; > short syspwd; > int lifecreds; > int maxprompts; > int maxfailures; > char *clist; > char *dir; > char *udir; > char *cpass; > char *alogfile; > char *srvpuk; > short keepcreds; > char *expcreds; > > pwdOptions() { debug = -1; mode = 's'; areg = -1; upwd = -1; alog = -1; > verisrv = -1; vericlnt = -1; > syspwd = -1; lifecreds = -1; maxprompts = -1; maxfailures = -1; > clist = 0; dir = 0; udir = 0; cpass = 0; > alogfile = 0; srvpuk = 0; keepcreds = 0; expcreds = 0;} > virtual ~pwdOptions() { } >}; > >class pwdHSVars { >public: > int Iter; > int TimeStamp; > String CryptoMod; > String User; > String Tag; > int RemVers; > XrdCryptoFactory *CF; > XrdCryptoCipher *Hcip; > XrdCryptoCipher *Rcip; > String ID; > XrdSutPFEntry *Cref; > XrdSutPFEntry *Pent; > bool RtagOK; > pwdStatus_t Status; > bool Tty; > int Step; > int LastStep; > String ErrMsg; > int SysPwd; > String AFScell; > XrdSutBuffer *Parms; > > pwdHSVars() { Iter = 0; TimeStamp = -1; CryptoMod = ""; User = ""; Tag = ""; > RemVers = -1; CF = 0; Hcip = 0; Rcip = 0; > ID = ""; Cref = 0; Pent = 0; RtagOK = 0; Tty = 0; > Step = 0; LastStep = 0; ErrMsg = ""; > SysPwd = 0; AFScell = ""; > Status.ctype = 0; Status.action = 0; Status.options = 0; Parms = 0;} > > ~pwdHSVars() { { if (Cref) delete Cref ; Cref = 0; }; { if (Hcip) delete Hcip ; Hcip = 0; }; { if (Parms) delete Parms ; Parms = 0; }; } >}; > > > > > > >class XrdSecProtocolpwd : public XrdSecProtocol >{ >public: > int Authenticate (XrdSecCredentials *cred, > XrdSecParameters **parms, > XrdOucErrInfo *einfo=0); > > XrdSecCredentials *getCredentials(XrdSecParameters *parm=0, > XrdOucErrInfo *einfo=0); > > XrdSecProtocolpwd(int opts, const char *hname, > const struct sockaddr *ipadd, > const char *parms = 0); > virtual ~XrdSecProtocolpwd() {} > > > static char *Init(pwdOptions o, XrdOucErrInfo *erp); > > void Delete(); > > static void PrintTimeStat(); > >private: > > > static XrdSysMutex pwdContext; > static String FileAdmin; > static String FileExpCreds; > static String FileUser; > static String FileCrypt; > static String FileSrvPuk; > static String SrvID; > static String SrvEmail; > static String DefCrypto; > static String DefError; > static XrdSutPFile PFAdmin; > static XrdSutPFile PFAlog; > static XrdSutPFile PFSrvPuk; > > > static int ncrypt; > static int cryptID[10]; > static String cryptName[10]; > static XrdCryptoCipher *loccip[10]; > static XrdCryptoCipher *refcip[10]; > > > static XrdSutCache cacheAdmin; > static XrdSutCache cacheSrvPuk; > static XrdSutCache cacheUser; > static XrdSutCache cacheAlog; > > > static int Debug; > static bool Server; > static int UserPwd; > static bool SysPwd; > static int VeriClnt; > static int VeriSrv; > static int AutoReg; > static int LifeCreds; > static int MaxPrompts; > static int MaxFailures; > static int AutoLogin; > static int TimeSkew; > static bool KeepCreds; > > > static XrdSysLogger Logger; > static XrdSysError eDest; > static XrdOucTrace *SecTrace; > > > int options; > struct sockaddr hostaddr; > char CName[256]; > bool srvMode; > > > pwdHSVars *hs; > > > XrdSecCredentials *clientCreds; > > > int ParseClientInput(XrdSutBuffer *br, XrdSutBuffer **bm, > String &emsg); > int ParseServerInput(XrdSutBuffer *br, XrdSutBuffer **bm, > String &cmsg); > int ParseCrypto(XrdSutBuffer *buf); > > > static void ErrF(XrdOucErrInfo *einfo, kXR_int32 ecode, > const char *msg1, const char *msg2 = 0, > const char *msg3 = 0); > XrdSecCredentials *ErrC(XrdOucErrInfo *einfo, XrdSutBuffer *b1, > XrdSutBuffer *b2,XrdSutBuffer *b3, > kXR_int32 ecode, const char *msg1 = 0, > const char *msg2 = 0, const char *msg3 = 0); > int ErrS(String ID, XrdOucErrInfo *einfo, XrdSutBuffer *b1, > XrdSutBuffer *b2, XrdSutBuffer *b3, > kXR_int32 ecode, const char *msg1 = 0, > const char *msg2 = 0, const char *msg3 = 0); > > > XrdSutBucket *QueryCreds(XrdSutBuffer *bm, bool netrc, int &status); > int QueryUser(int &status, String &cmsg); > int QueryCrypt(String &fn, String &pwhash); > int QueryNetRc(String host, String &passwd, int &status); > > > bool CheckCreds(XrdSutBucket *creds, int credtype); > bool CheckCredsAFS(XrdSutBucket *creds, int ctype); > > > bool CheckTimeStamp(XrdSutBuffer *b, int skew, String &emsg); > > > bool CheckRtag(XrdSutBuffer *bm, String &emsg); > > > int ExportCreds(XrdSutBucket *creds); > int SaveCreds(XrdSutBucket *creds); > int UpdateAlog(); > > > int GetUserHost(String &usr, String &host); > int AddSerialized(char opt, kXR_int32 step, String ID, > XrdSutBuffer *bls, XrdSutBuffer *buf, > kXR_int32 type, XrdCryptoCipher *cip); > int DoubleHash(XrdCryptoFactory *cf, XrdSutBucket *bck, > XrdSutBucket *s1, XrdSutBucket *s2 = 0, > const char *tag = 0); >}; ># 56 "XrdSecProtocolpwd.cc" 2 ># 1 "../XrdSecpwd/XrdSecpwdPlatform.hh" 1 ># 27 "../XrdSecpwd/XrdSecpwdPlatform.hh" ># 1 "/usr/include/grp.h" 1 3 4 ># 28 "/usr/include/grp.h" 3 4 >extern "C" { > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 34 "/usr/include/grp.h" 2 3 4 ># 43 "/usr/include/grp.h" 3 4 >struct group > { > char *gr_name; > char *gr_passwd; > __gid_t gr_gid; > char **gr_mem; > }; ># 63 "/usr/include/grp.h" 3 4 >extern void setgrent (void); > > > > > >extern void endgrent (void); > > > > > >extern struct group *getgrent (void); ># 85 "/usr/include/grp.h" 3 4 >extern struct group *fgetgrent (FILE *__stream); ># 95 "/usr/include/grp.h" 3 4 >extern int putgrent (__const struct group *__restrict __p, > FILE *__restrict __f); > > > > > > >extern struct group *getgrgid (__gid_t __gid); > > > > > >extern struct group *getgrnam (__const char *__name); ># 133 "/usr/include/grp.h" 3 4 >extern int getgrent_r (struct group *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct group **__restrict __result); > > > > > > >extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct group **__restrict __result); > > > > > >extern int getgrnam_r (__const char *__restrict __name, > struct group *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct group **__restrict __result); ># 163 "/usr/include/grp.h" 3 4 >extern int fgetgrent_r (FILE *__restrict __stream, > struct group *__restrict __resultbuf, > char *__restrict __buffer, size_t __buflen, > struct group **__restrict __result); ># 175 "/usr/include/grp.h" 3 4 ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 176 "/usr/include/grp.h" 2 3 4 > > >extern int setgroups (size_t __n, __const __gid_t *__groups) throw (); ># 188 "/usr/include/grp.h" 3 4 >extern int getgrouplist (__const char *__user, __gid_t __group, > __gid_t *__groups, int *__ngroups); ># 199 "/usr/include/grp.h" 3 4 >extern int initgroups (__const char *__user, __gid_t __group); > > > >} ># 28 "../XrdSecpwd/XrdSecpwdPlatform.hh" 2 > > > > > > > ># 1 "/usr/include/shadow.h" 1 3 4 ># 26 "/usr/include/shadow.h" 3 4 ># 1 "/usr/include/paths.h" 1 3 4 ># 27 "/usr/include/shadow.h" 2 3 4 > > > > ># 1 "/usr/lib64/gcc/x86_64-suse-linux/4.3/include/stddef.h" 1 3 4 ># 32 "/usr/include/shadow.h" 2 3 4 > > > > > >extern "C" { > > >struct spwd > { > char *sp_namp; > char *sp_pwdp; > long int sp_lstchg; > long int sp_min; > long int sp_max; > long int sp_warn; > > long int sp_inact; > > long int sp_expire; > > unsigned long int sp_flag; > }; ># 63 "/usr/include/shadow.h" 3 4 >extern void setspent (void); > > > > > > > >extern void endspent (void); > > > > > > > >extern struct spwd *getspent (void); > > > > > > > >extern struct spwd *getspnam (__const char *__name); > > > > > > > >extern struct spwd *sgetspent (__const char *__string); > > > > > > > >extern struct spwd *fgetspent (FILE *__stream); > > > > > > > >extern int putspent (__const struct spwd *__p, FILE *__stream); ># 121 "/usr/include/shadow.h" 3 4 >extern int getspent_r (struct spwd *__result_buf, char *__buffer, > size_t __buflen, struct spwd **__result); > >extern int getspnam_r (__const char *__name, struct spwd *__result_buf, > char *__buffer, size_t __buflen, > struct spwd **__result); > >extern int sgetspent_r (__const char *__string, struct spwd *__result_buf, > char *__buffer, size_t __buflen, > struct spwd **__result); > >extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf, > char *__buffer, size_t __buflen, > struct spwd **__result); > > > > > > > >extern int lckpwdf (void) throw (); > > >extern int ulckpwdf (void) throw (); > >} ># 36 "../XrdSecpwd/XrdSecpwdPlatform.hh" 2 ># 57 "XrdSecProtocolpwd.cc" 2 > > > > > >static String Prefix = "xrd"; >static String ProtoID = "pwd"; >static const kXR_int32 Version = 10100; >static String AdminRef = ProtoID + "admin"; >static String SrvPukRef= ProtoID + "srvpuk"; >static String UserRef = ProtoID + "user"; >static String NetRcRef = ProtoID + "netrc"; > >static const char *pwdClientSteps[] = { > "kXPC_none", > "kXPC_normal", > "kXPC_verifysrv", > "kXPC_signedrtag", > "kXPC_creds", > "kXPC_autoreg", > "kXPC_failureack", > "kXPC_reserved" >}; > >static const char *pwdServerSteps[] = { > "kXPS_none", > "kXPS_init", > "kXPS_credsreq", > "kXPS_rtag", > "kXPS_signedrtag", > "kXPS_newpuk", > "kXPS_puk", > "kXPS_failure", > "kXPS_reserved" >}; > >static const char *gPWErrStr[] = { > "parsing buffer", > "decoding buffer", > "loading crypto factory", > "protocol mismatch", > "resolving user / host", > "user missing", > "host missing", > "unknown user", > "creating bucket", > "duplicating bucket", > "creating buffer", > "serializing buffer", > "generating cipher", > "exporting public key", > "encrypting random tag", > "random tag mismatch", > "random tag missing", > "cipher missing", > "getting credentials", > "credentials missing", > "wrong password for user", > "checking cache", > "cache entry for link missing", > "session handshaking ID missing", > "session handshaking ID mismatch", > "unknown step option", > "marshaling integer", > "unmarshaling integer", > "saving new credentials", > "salt missing", > "buffer empty", > "obtaining reference cipher", > "obtaining cipher public info", > "adding bucket to list", > "finalizing cipher from public info", > "error during initialization", > "wrong credentials", > "error" >}; > > >static const short kOptsServer = 0x0001; >static const short kOptsUserPwd = 0x0002; >static const short kOptsAutoReg = 0x0004; >static const short kOptsAregAll = 0x0008; >static const short kOptsVeriSrv = 0x0020; >static const short kOptsVeriClt = 0x0040; >static const short kOptsClntTty = 0x0080; >static const short kOptsExpCred = 0x0100; >static const short kOptsCrypPwd = 0x0200; >static const short kOptsChngPwd = 0x0400; >static const short kOptsAFSPwd = 0x0800; > >static const int kOneDay = 86400; > > > > >XrdSysMutex XrdSecProtocolpwd::pwdContext; >String XrdSecProtocolpwd::FileAdmin= ""; >String XrdSecProtocolpwd::FileExpCreds= ""; >String XrdSecProtocolpwd::FileUser = ""; >String XrdSecProtocolpwd::FileCrypt= "/.xrdpass"; >String XrdSecProtocolpwd::FileSrvPuk= ""; >String XrdSecProtocolpwd::SrvID = ""; >String XrdSecProtocolpwd::SrvEmail = ""; >String XrdSecProtocolpwd::DefCrypto= "ssl"; >String XrdSecProtocolpwd::DefError = "insufficient credentials - contact "; >XrdSutPFile XrdSecProtocolpwd::PFAdmin(0); >XrdSutPFile XrdSecProtocolpwd::PFAlog(0); >XrdSutPFile XrdSecProtocolpwd::PFSrvPuk(0); > > >int XrdSecProtocolpwd::ncrypt = 0; >int XrdSecProtocolpwd::cryptID[10] = {0}; >String XrdSecProtocolpwd::cryptName[10] = {0}; >XrdCryptoCipher *XrdSecProtocolpwd::refcip[10] = {0}; > > >XrdSutCache XrdSecProtocolpwd::cacheAdmin; >XrdSutCache XrdSecProtocolpwd::cacheSrvPuk; >XrdSutCache XrdSecProtocolpwd::cacheUser; >XrdSutCache XrdSecProtocolpwd::cacheAlog; > > >int XrdSecProtocolpwd::Debug = 0; >bool XrdSecProtocolpwd::Server = 1; >int XrdSecProtocolpwd::UserPwd = 0; >bool XrdSecProtocolpwd::SysPwd = 0; >int XrdSecProtocolpwd::VeriClnt = 2; > >int XrdSecProtocolpwd::VeriSrv = 1; > >int XrdSecProtocolpwd::AutoReg = kpAR_none; >int XrdSecProtocolpwd::LifeCreds = 0; >int XrdSecProtocolpwd::MaxPrompts = 3; >int XrdSecProtocolpwd::MaxFailures = 10; >int XrdSecProtocolpwd::AutoLogin = 0; >int XrdSecProtocolpwd::TimeSkew = 300; >bool XrdSecProtocolpwd::KeepCreds = 0; > > >XrdSysError XrdSecProtocolpwd::eDest(0, "secpwd_"); >XrdSysLogger XrdSecProtocolpwd::Logger; >XrdOucTrace *XrdSecProtocolpwd::SecTrace = 0; > > > > > >static const char *ClientStepStr(int kclt) >{ > > static const char *ukn = "Unknown"; > > kclt = (kclt < 0) ? 0 : kclt; > kclt = (kclt > kXPC_reserved) ? 0 : kclt; > kclt = (kclt >= kXPC_normal) ? (kclt - kXPC_normal + 1) : kclt; > > if (kclt < 0 || kclt > (kXPC_reserved - kXPC_normal + 1)) > return ukn; > else > return pwdClientSteps[kclt]; >} > > >static const char *ServerStepStr(int ksrv) >{ > > static const char *ukn = "Unknown"; > > ksrv = (ksrv < 0) ? 0 : ksrv; > ksrv = (ksrv > kXPS_reserved) ? 0 : ksrv; > ksrv = (ksrv >= kXPS_init) ? (ksrv - kXPS_init + 1) : ksrv; > > if (ksrv < 0 || ksrv > (kXPS_reserved - kXPS_init + 1)) > return ukn; > else > return pwdServerSteps[ksrv]; >} > > > > > > > >XrdSecProtocolpwd::XrdSecProtocolpwd(int opts, const char *hname, > const struct sockaddr *ipadd, > const char *parms) >{ > > const char *epname = "XrdSecProtocolpwd";; > > if (SecTrace->What & 0x0004) { {{SecTrace->Beg(epname); cerr <<"constructing: "<<this; SecTrace->End();}}; } > > > if ((hs = new pwdHSVars())) { > > hs->TimeStamp = time(0); > > hs->CryptoMod = ""; > hs->User = ""; > hs->Tag.resize(256); > hs->RemVers = -1; > hs->CF = 0; > hs->Hcip = 0; > hs->Rcip = 0; > hs->ID = ""; > hs->Cref = 0; > hs->Pent = 0; > hs->RtagOK = 0; > hs->Tty = (isatty(0) == 0 || isatty(1) == 0) ? 0 : 1; > hs->Step = 0; > hs->LastStep = 0; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"could not create handshake vars object"; SecTrace->End();}; > } > > > clientCreds = 0; > > > strncpy(Entity.prot, "pwd", sizeof(Entity.prot)); > > > if (hname) { > Entity.host = strdup(hname); > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"warning: host name undefined"; SecTrace->End();}; > } > > memcpy(&hostaddr, ipadd, sizeof(hostaddr)); > > CName[0] = '?'; CName[1] = '\0'; > > Entity.name = CName; > > > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"constructing: host: "<<hname; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"p: "<<"pwd"<<", plen: "<<sizeof("pwd"); SecTrace->End();}; > > > options = opts; > > > > if (Server) { > srvMode = 1; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"mode: server"; SecTrace->End();}; > } else { > srvMode = 0; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"mode: client"; SecTrace->End();}; > if (AutoLogin > 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using autologin file: "<<PFAlog.Name(); SecTrace->End();}; > if (AutoLogin > 1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"running in update-autologin mode"; SecTrace->End();}; > } > } > if (VeriSrv > 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"server verification ON"; SecTrace->End();}; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"server verification OFF"; SecTrace->End();}; > } > > if (parms) { > XrdOucString p("&P=pwd,"); > p += parms; > hs->Parms = new XrdSutBuffer(p.c_str(), p.length()); > } > } > > > String vers = Version; > vers.insert('.',vers.length()-2); > vers.insert('.',vers.length()-5); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"object created: v"<<vers.c_str(); SecTrace->End();}; >} > > >char *XrdSecProtocolpwd::Init(pwdOptions opt, XrdOucErrInfo *erp) >{ > > > const char *epname = "Init";; > char *Parms = 0; > > > Debug = (opt.debug > -1) ? opt.debug : Debug; > > eDest.logger(&Logger); > SecTrace = new XrdOucTrace(&eDest); > > int trace = 0; > if (Debug >= 3) { > trace = 0x0004; > SecTrace->What |= 0x0004; > SecTrace->What |= 0x0001; > } else if (Debug >= 1) { > trace = 0x0002; > SecTrace->What = 0x0001; > } > > XrdSutSetTrace(trace); > XrdCryptoSetTrace(trace); > > > struct passwd *pw = getpwuid(getuid()); > if (!pw) { > {{SecTrace->Beg(epname); cerr <<"no user info available - invalid "; SecTrace->End();}}; > ErrF(erp, kPWErrInit, "could not get user info from getpwuid"); > return Parms; > } > > > > Server = (opt.mode == 's'); > > > > bool argdir = 0; > String infodir(512); > if (opt.dir) { > infodir = opt.dir; > > if (XrdSutExpand(infodir) != 0) { > {{SecTrace->Beg(epname); cerr <<"cannot expand "<<opt.dir; SecTrace->End();}}; > infodir = ""; > } > argdir = 1; > } else { > > infodir = XrdSutHome(); > infodir += ("/." + Prefix); > } > if (!infodir.endswith("/")) infodir += "/"; > > > if (infodir.length()) { > > XrdSysPrivGuard priv(pw->pw_uid, pw->pw_gid); > if (priv.Valid()) { > struct stat st; > if (stat(infodir.c_str(),&st) == -1) { > if ((*__errno_location ()) == 2) { > if (argdir) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"infodir non existing: "<<infodir.c_str(); SecTrace->End();}; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"creating infodir: "<<infodir.c_str(); SecTrace->End();}; > if (XrdSutMkdir(infodir.c_str(),0777) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot create infodir (errno: "<<(*__errno_location ())<<")"; SecTrace->End();}; > infodir = ""; > argdir = 0; > } > } > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot stat infodir "<<infodir<<" (errno: "<<(*__errno_location ())<<")"; SecTrace->End();}; > infodir = ""; > argdir = 0; > } > } > } > } > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using infodir: "<<infodir.c_str(); SecTrace->End();}; > > > > if (Server) { > > > AutoReg = (opt.areg > -1) ? opt.areg : AutoReg; > > > VeriClnt = (opt.vericlnt > -1) ? opt.vericlnt : VeriClnt; > > > UserPwd = (opt.upwd > -1) ? opt.upwd : UserPwd; > > > SysPwd = (opt.syspwd > -1) ? opt.syspwd : SysPwd; > if (SysPwd) { > > if (pw) { > > > > XrdSysPrivGuard priv((uid_t) 0, (gid_t) 0); > if (priv.Valid()) { > > struct spwd *spw = getspnam(pw->pw_name); > if (!spw) { > SysPwd = 0; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"no privileges to access shadow passwd file"; SecTrace->End();}; > } > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems acquiring credentials" " to access the system password file"; SecTrace->End();}; > > } ># 464 "XrdSecProtocolpwd.cc" > } else > SysPwd = 0; > } > > > LifeCreds = (opt.lifecreds > -1) ? opt.lifecreds : LifeCreds; > > > MaxFailures = (opt.maxfailures > -1) ? opt.maxfailures : MaxFailures; > > > > if (infodir.length()) { > > XrdSysPrivGuard priv(pw->pw_uid, pw->pw_gid); > if (priv.Valid()) { > struct stat st; > > > FileAdmin = infodir + AdminRef; > if (stat(FileAdmin.c_str(),&st) == -1) { > if ((*__errno_location ()) == 2) { > {{SecTrace->Beg(epname); cerr <<"FileAdmin non existing: "<<FileAdmin.c_str(); SecTrace->End();}}; > } else { > {{SecTrace->Beg(epname); cerr <<"cannot stat FileAdmin (errno: "<<(*__errno_location ())<<")"; SecTrace->End();}}; > } > FileAdmin = ""; > if (UserPwd == 0 && !SysPwd) { > {{SecTrace->Beg(epname); cerr <<"no passwd info available - invalid "; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"could not find a valid password file"); > return Parms; > } > } > if (FileAdmin.length() > 0) { > > > PFAdmin.Init(FileAdmin.c_str(),0); > if (PFAdmin.IsValid()) { > > > if (cacheAdmin.Load(FileAdmin.c_str()) != 0) { > {{SecTrace->Beg(epname); cerr <<"problems init cache for file admin "; SecTrace->End();}}; > ErrF(erp,kPWErrError,"initializing cache for file admin"); > return Parms; > } > if (SecTrace->What & 0x0004) { cacheAdmin.Dump(); } > XrdSutPFEntry *ent = cacheAdmin.Get("+++SrvID"); > if (ent) > SrvID.insert(ent->buf1.buf, 0, ent->buf1.len); > ent = cacheAdmin.Get("+++SrvEmail"); > if (ent) > SrvEmail.insert(ent->buf1.buf, 0, ent->buf1.len); > > DefError += SrvEmail; > } > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"server ID: "<<SrvID; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"contact e-mail: "<<SrvEmail; SecTrace->End();}; > } > } > } else if (UserPwd == 0 && !SysPwd) { > {{SecTrace->Beg(epname); cerr <<"no passwd info available - invalid "; SecTrace->End();}}; > ErrF(erp,kPWErrError,"could not find a valid password file"); > return Parms; > } > > > if (UserPwd > 0 || SysPwd) { > if (cacheUser.Init(100) != 0) { > {{SecTrace->Beg(epname); cerr <<"problems init cache for user pwd info" " - passwd files in user accounts will not be used"; SecTrace->End();}}; > > UserPwd = 0; > } > } > > > > String cryptlist = opt.clist ? (const char *)(opt.clist) : DefCrypto; > > > > XrdSutPFEntry ent; > XrdCryptoFactory *cf = 0; > String clist = cryptlist; > if (clist.length()) { > String ncpt = ""; > int from = 0; > while ((from = clist.tokenize(ncpt, from, '|')) != -1) { > if (ncpt.length() > 0) { > > if ((cf = XrdCryptoFactory::GetCryptoFactory(ncpt.c_str()))) { > > cryptID[ncrypt] = cf->ID(); > cryptName[ncrypt].insert(cf->Name(),0,strlen(cf->Name())+1); > cf->SetTrace(trace); > > String ptag("+++SrvPuk_"); > ptag += cf->ID(); > if (FileAdmin.length() > 0) { > > XrdSysPrivGuard priv(pw->pw_uid, pw->pw_gid); > if (priv.Valid()) { > if (PFAdmin.ReadEntry(ptag.c_str(),ent) <= 0) { > {{SecTrace->Beg(epname); cerr <<"ref cipher for module "<<ncpt<<" missing: disable"; SecTrace->End();}}; > cryptlist.erase(ncpt); > } else { > XrdSutBucket bck; > bck.SetBuf(ent.buf1.buf,ent.buf1.len); > if (!(refcip[ncrypt] = cf->Cipher(&bck))) { > {{SecTrace->Beg(epname); cerr <<"ref cipher for module "<<ncpt<< " cannot be instantiated : disable"; SecTrace->End();}}; > > cryptlist.erase(ncpt); > } else { > ncrypt++; > if (ncrypt >= 10) { > {{SecTrace->Beg(epname); cerr <<"max number of crypto modules (" << 10 <<") reached "; SecTrace->End();}}; > > break; > } > } > } > } > } > } else { > {{SecTrace->Beg(epname); cerr <<"cannot instantiate crypto factory "<<ncpt; SecTrace->End();}}; > } > } > } > } > > > > if (ncrypt <= 0) { > {{SecTrace->Beg(epname); cerr <<"could not find any valid crypto module"; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"could not find any valid crypto module"); > return Parms; > } > > > > if (UserPwd > 0) { > FileUser = ("/" + UserRef); > if (opt.udir) { > FileUser.insert(opt.udir,0); > if (FileUser[0] != '/') FileUser.insert('/',0); > } else { > > FileUser.insert(Prefix,0); > FileUser.insert("/.",0); > } > > > if (opt.cpass) { > UserPwd = 2; > FileCrypt = opt.cpass; > if (FileCrypt[0] != '/') FileCrypt.insert('/',0); > } > } > > > > KeepCreds = (opt.keepcreds > -1) ? opt.keepcreds : KeepCreds; > if (KeepCreds) > {{SecTrace->Beg(epname); cerr <<"Exporting client creds to internal buffer"; SecTrace->End();}}; > > > > FileExpCreds = (opt.expcreds) ? opt.expcreds : FileExpCreds; > if (FileExpCreds.length() > 0) > {{SecTrace->Beg(epname); cerr <<"Exporting client creds to files "<<FileExpCreds; SecTrace->End();}}; > > > > String popt = ""; > if (SysPwd) { > > popt += "sys"; > > > > > } > > > > Parms = new char[cryptlist.length()+3+12+SrvID.length()+5+popt.length()+3]; > if (Parms) { > if (popt.length() > 0) > sprintf(Parms,"v:%d,id:%s,c:%s,po:%s", > Version,SrvID.c_str(),cryptlist.c_str(),popt.c_str()); > else > sprintf(Parms,"v:%d,id:%s,c:%s", > Version,SrvID.c_str(),cryptlist.c_str()); > } else { > {{SecTrace->Beg(epname); cerr <<"no system resources for 'Parms'"; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"no system resources for 'Parms'"); > } > > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using FileAdmin: "<<FileAdmin; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"server ID: "<<SrvID; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"contact e-mail: "<<SrvEmail; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"auto-registration mode: "<<AutoReg; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"verify client mode: "<<VeriClnt; SecTrace->End();}; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"available crypto modules: "<<cryptlist; SecTrace->End();}; > if (UserPwd > 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using private pwd files: $(HOME)"<<FileUser; SecTrace->End();}; > if (UserPwd > 1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using private crypt-hash files: $(HOME)"<<FileCrypt; SecTrace->End();}; > } > } > if (SysPwd) { > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using system pwd information"; SecTrace->End();}; > > > > } > if (KeepCreds) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"client credentials will be kept"; SecTrace->End();}; > } > } > > > > if (!Server) { > > > VeriSrv = (opt.verisrv > -1) ? opt.verisrv : VeriSrv; > > > FileSrvPuk = ""; > if (opt.srvpuk) { > FileSrvPuk = opt.srvpuk; > if (XrdSutExpand(FileSrvPuk) != 0) { > {{SecTrace->Beg(epname); cerr <<"cannot expand "<<opt.srvpuk; SecTrace->End();}}; > FileSrvPuk = ""; > } > } > > > if (FileSrvPuk.length() <= 0 && infodir.length() > 0) > FileSrvPuk = infodir + SrvPukRef; > > if (FileSrvPuk.length() > 0) { > kXR_int32 openmode = 0; > struct stat st; > > if (stat(FileSrvPuk.c_str(),&st) == -1) { > if ((*__errno_location ()) == 2) { > {{SecTrace->Beg(epname); cerr <<"server public key file "<<FileSrvPuk<<" non existing: creating"; SecTrace->End();}}; > openmode = 0x1; > > XrdOucString dir = FileSrvPuk; > dir.erase(dir.rfind('/')+1); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"asserting dir: "<<dir; SecTrace->End();}; > if (XrdSutMkdir(dir.c_str(),0777) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot create dir for srvpuk(errno: "<<(*__errno_location ())<<")"; SecTrace->End();}; > ErrF(erp,kPWErrInit,"cannot create dir for server public key file- exit"); > return Parms; > } > } else { > {{SecTrace->Beg(epname); cerr <<"cannot stat server public key file (errno: "<<(*__errno_location ())<<")"; SecTrace->End();}}; > FileSrvPuk = ""; > {{SecTrace->Beg(epname); cerr <<"server public key file invalid - exit"; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"server public key file invalid - exit"); > return Parms; > } > } > > > PFSrvPuk.Init(FileSrvPuk.c_str(),openmode); > if (PFSrvPuk.IsValid()) { > > > if (cacheSrvPuk.Load(FileSrvPuk.c_str()) != 0) { > {{SecTrace->Beg(epname); cerr <<"problems init cache for server public key file "; SecTrace->End();}}; > ErrF(erp,kPWErrError,"initializing cache for server public key file "); > return Parms; > } > if (SecTrace->What & 0x0004) { cacheSrvPuk.Dump(); } > } else { > {{SecTrace->Beg(epname); cerr <<"server public key file invalid "; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"server public key file invalid"); > return Parms; > } > } else { > {{SecTrace->Beg(epname); cerr <<"server public key file undefined"; SecTrace->End();}}; > ErrF(erp,kPWErrInit,"server public key file undefined"); > return Parms; > } > > > > AutoLogin = (opt.alog > -1) ? opt.alog : AutoLogin; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"AutoLogin level: "<<AutoLogin; SecTrace->End();}; > > > MaxPrompts = (opt.maxprompts > -1) ? opt.maxprompts : MaxPrompts; > > > if (AutoLogin > 0) { > bool filefound = 0; > String fnrc(256); > if (opt.alogfile) { > fnrc = opt.alogfile; > if (XrdSutExpand(fnrc) != 0) { > {{SecTrace->Beg(epname); cerr <<"cannot expand "<<opt.alogfile; SecTrace->End();}}; > fnrc = ""; > } > } > > > if (fnrc.length() <= 0) > > fnrc = infodir + NetRcRef; > > if (fnrc.length() > 0) { > kXR_int32 openmode = 0; > struct stat st; > if (stat(fnrc.c_str(),&st) == -1) { > if ((*__errno_location ()) == 2) { > {{SecTrace->Beg(epname); cerr <<"Autologin file "<<fnrc<<" non existing: creating"; SecTrace->End();}}; > openmode = 0x1; > } else { > {{SecTrace->Beg(epname); cerr <<"cannot stat autologin file (errno: "<<(*__errno_location ())<<")"; SecTrace->End();}}; > {{SecTrace->Beg(epname); cerr <<"switching off auto-login"; SecTrace->End();}}; > AutoLogin = 0; > } > } > > if (AutoLogin > 0) { > > PFAlog.Init(fnrc.c_str(),openmode); > if (PFAlog.IsValid()) { > > if (cacheAlog.Load(fnrc.c_str()) == 0) { > if (SecTrace->What & 0x0004) { cacheAlog.Dump(); } > filefound =1; > } else { > {{SecTrace->Beg(epname); cerr <<"problems init cache for autologin file"; SecTrace->End();}}; > } > } else { > {{SecTrace->Beg(epname); cerr <<"problems attaching-to / creating autologin file"; SecTrace->End();}}; > } > } > } > > > if (!filefound) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"could not init properly autologin - switch off "; SecTrace->End();}; > AutoLogin = 0; > } > } > > > if (AutoLogin <= 0) { > > if (cacheAlog.Init(100) != 0) { > {{SecTrace->Beg(epname); cerr <<"problems init cache for user temporary autolog"; SecTrace->End();}}; > } > } > > Parms = (char *)""; > } > > > return Parms; >} > > > > >void XrdSecProtocolpwd::Delete() >{ > > if (Entity.host) free(Entity.host); > > { if (hs) delete hs ; hs = 0; }; > delete this; >} ># 852 "XrdSecProtocolpwd.cc" >XrdSecCredentials *XrdSecProtocolpwd::getCredentials(XrdSecParameters *parm, > XrdOucErrInfo *ei) >{ > > > const char *epname = "getCredentials";; > > > > if (srvMode) { > XrdSecCredentials *creds = 0; > if (clientCreds) { > > int sz = clientCreds->size; > char *nbuf = (char *) malloc(sz); > if (nbuf) { > memcpy(nbuf, clientCreds->buffer, sz); > creds = new XrdSecCredentials(nbuf, sz); > } > } > return creds; > } > > > if (!hs) > return ErrC(ei,0,0,0,kPWErrError, > "handshake var container missing","getCredentials"); > hs->ErrMsg = ""; > > > > if ((!parm && !hs->Parms) || (parm && (!(parm->buffer) || parm->size <= 0))) > return ErrC(ei,0,0,0,kPWErrNoBuffer,"missing parameters","getCredentials"); > > > (hs->Iter)++; > > > hs->TimeStamp = time(0); > > > int nextstep = 0; > const char *stepstr = 0; > kXR_int32 status = 0; > char *bpub = 0; > int lpub = 0; > String CryptList = ""; > String Host = ""; > String RemID = ""; > String Emsg; > String specID = ""; > > XrdSutBucket *bck = 0; > XrdSutBuffer *bpar = 0; > XrdSutBuffer *bmai = 0; > > pwdStatus_t SessionSt; > memset(&SessionSt,0,sizeof(SessionSt)); > > > > XrdSysMutexHelper pwdGuard(&pwdContext); > > > bpar = hs->Parms; > if (!bpar && !(bpar = new XrdSutBuffer((const char *)parm->buffer,parm->size))) > return ErrC(ei,0,0,0,kPWErrDecodeBuffer,"global",stepstr); > > hs->Parms = 0; > > > if (strcmp(bpar->GetProtocol(),"pwd")) > return ErrC(ei,bpar,bmai,0,kPWErrBadProtocol,stepstr); > > > hs->Step = (bpar->GetStep()) ? bpar->GetStep() : kXPS_init; > stepstr = ServerStepStr(hs->Step); > > if (SecTrace->What & 0x0004) { > bpar->Dump(stepstr); > } > > > if (ParseCrypto(bpar) != 0) > return ErrC(ei,bpar,0,0,kPWErrLoadCrypto,stepstr); > > > if (ParseClientInput(bpar, &bmai, Emsg) == -1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<Emsg; SecTrace->End();}; > return ErrC(ei,bpar,bmai,0,kPWErrParseBuffer,Emsg.c_str(),stepstr); > } > > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"version run by server: "<< hs->RemVers; SecTrace->End();}; > > > if (SecTrace->What & 0x0004) { > bmai->Dump("Main IN"); > } > > > if (hs->Iter > 1) { > bmai->Message(); > bmai->Deactivate(kXRS_message); > } > > > if (!CheckRtag(bmai, Emsg)) > return ErrC(ei,bpar,bmai,0,kPWErrBadRndmTag,Emsg.c_str(),stepstr); > > > > if ((bck = bmai->GetBucket(kXRS_status))) { > int pst = 0; > memcpy(&pst,bck->buffer,sizeof(pwdStatus_t)); > pst = (__extension__ ({ register unsigned int __v, __x = (pst); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })); > memcpy(&SessionSt, &pst, sizeof(pwdStatus_t)); > bmai->Deactivate(kXRS_status); > } else { > SessionSt.ctype = kpCT_normal; > } > > > nextstep = kXPC_none; > switch (hs->Step) { > > case kXPS_init: > > > > if (bpar->AddBucket(hs->CryptoMod,kXRS_cryptomod) != 0) > return ErrC(ei,bpar,bmai,0, > kPWErrCreateBucket,XrdSutBuckStr(kXRS_cryptomod),stepstr); > > > if (bmai->MarshalBucket(kXRS_version,(kXR_int32)(hs->RemVers)) != 0) > return ErrC(ei,bpar,bmai,0, kPWErrCreateBucket, > XrdSutBuckStr(kXRS_version),"(main list)",stepstr); > > > if (hs->Tty || (AutoLogin > 0)) > SessionSt.options = kOptsClntTty; > > case kXPS_puk: > > > > > > > if (hs->Hcip) { > > > if (!(bpub = hs->Hcip->Public(lpub))) > return ErrC(ei,bpar,bmai,0, > kPWErrNoPublic,"session",stepstr); > > > if (bpar->UpdateBucket(bpub,lpub,kXRS_puk) != 0) > return ErrC(ei,bpar,bmai,0, kPWErrAddBucket, > XrdSutBuckStr(kXRS_puk),"global",stepstr); > { if (bpub) delete [] bpub ; bpub = 0; }; > > > > if (VeriSrv == 1) { > nextstep = kXPC_verifysrv; > break; > } > } > > case kXPS_signedrtag: > > > if (hs->User.length()) { > if (bmai->AddBucket(hs->User,kXRS_user) != 0) > return ErrC(ei,bpar,bmai,0, kPWErrDuplicateBucket, > XrdSutBuckStr(kXRS_user),stepstr); > } else > return ErrC(ei,bpar,bmai,0, kPWErrNoUser,stepstr); > > > > > if (!(hs->Hcip)) { > nextstep = kXPC_autoreg; > break; > } > > > > status = kpCT_normal; > if (hs->SysPwd == 1) > status = kpCT_crypt; > if (hs->SysPwd == 2) > status = kpCT_afs; > if (!(bck = QueryCreds(bmai, (AutoLogin > 0), status))) > return ErrC(ei,bpar,bmai,0, kPWErrQueryCreds, > hs->Tag.c_str(),stepstr); > bmai->AddBucket(bck); > > > if (hs->Pent->status == kPFE_onetime) > SessionSt.options |= kOptsChngPwd; > > nextstep = kXPC_normal; > break; > > case kXPS_credsreq: > > > > > if (hs->Pent) > hs->Pent->cnt = 1; > > > > status = SessionSt.ctype; > if (!(bck = QueryCreds(bmai, 0, status))) > return ErrC(ei,bpar,bmai,0, kPWErrQueryCreds, > hs->Tag.c_str(),stepstr); > bmai->AddBucket(bck); > > nextstep = kXPC_creds; > break; > > case kXPS_failure: > > > hs->Pent->buf1.SetBuf(); > hs->Pent->buf2.SetBuf(); > > nextstep = kXPC_failureack; > break; > > case kXPS_newpuk: > > > > case kXPS_rtag: > > > nextstep = kXPC_signedrtag; > break; > > default: > return ErrC(ei,bpar,bmai,0, kPWErrBadOpt,stepstr); > } > > > int *pst = new int; > memcpy(pst,&SessionSt,sizeof(pwdStatus_t)); > *pst = (__extension__ ({ register unsigned int __v, __x = (*pst); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })); > if (bmai->AddBucket((char *)pst,sizeof(pwdStatus_t), kXRS_status) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems adding bucket kXRS_status"; SecTrace->End();}; > } > > > if (AddSerialized('c', nextstep, hs->ID, > bpar, bmai, kXRS_main, hs->Hcip) != 0) > return ErrC(ei,bpar,bmai,0, > kPWErrSerialBuffer,"main",stepstr); > > > char *bser = 0; > int nser = bpar->Serialized(&bser,'f'); > > if (SecTrace->What & 0x0004) { > bpar->Dump(ClientStepStr(bpar->GetStep())); > bmai->Dump("Main OUT"); > } > > > { if (bpar) delete bpar; if (bmai) delete bmai; }; > > > if (nser > 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"returned " << nser <<" bytes of credentials"; SecTrace->End();}; > return new XrdSecCredentials(bser, nser); > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems with final serialization"; SecTrace->End();}; > return (XrdSecCredentials *)0; > } >} ># 1145 "XrdSecProtocolpwd.cc" >int XrdSecProtocolpwd::Authenticate(XrdSecCredentials *cred, > XrdSecParameters **parms, > XrdOucErrInfo *ei) >{ > > > > const char *epname = "Authenticate";; > > > > if (cred->size <= (int)sizeof("pwd") || !cred->buffer) { > strncpy(Entity.prot, "host", sizeof(Entity.prot)); > return 0; > } > > > if (!hs) > return ErrS(String("none"),ei,0,0,0,kPWErrError, > "handshake var container missing", > "protocol initialization problems"); > hs->ErrMsg = ""; > > > hs->TimeStamp = time(0); > > > > hs->ID = Entity.tident; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"handshaking ID: " << hs->ID; SecTrace->End();}; > > > int i = 0; > int kS_rc = kpST_more; > int rc = 0; > int entst = 0; > int nextstep = 0; > int ctype = kpCT_normal; > char *bpub = 0, *bpid = 0; > int lpub = 0; > const char *stepstr = 0; > String Message; > String CryptList; > String Host; > String SrvPuKExp; > String Salt; > String RndmTag; > String ClntMsg(256); > > XrdSutBuffer *bpar = 0; > XrdSutBuffer *bmai = 0; > XrdSutBucket *bck = 0; > > pwdStatus_t SessionSt; > > > > XrdSysMutexHelper pwdGuard(&pwdContext); > > > if (!(bpar = new XrdSutBuffer((const char *)cred->buffer,cred->size))) > return ErrS(hs->ID,ei,0,0,0,kPWErrDecodeBuffer,"global",stepstr); > > > if (strcmp(bpar->GetProtocol(),"pwd")) > return ErrS(hs->ID,ei,bpar,bmai,0,kPWErrBadProtocol,stepstr); > > > hs->Step = bpar->GetStep(); > stepstr = ClientStepStr(hs->Step); > > if (SecTrace->What & 0x0004) { > bpar->Dump(stepstr); > } > > > > if (ParseCrypto(bpar) != 0) > return ErrS(hs->ID,ei,bpar,0,0,kPWErrLoadCrypto,stepstr); > > > if (ParseServerInput(bpar, &bmai, ClntMsg) == -1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<ClntMsg; SecTrace->End();}; > return ErrS(hs->ID,ei,bpar,bmai,0,kPWErrParseBuffer,ClntMsg.c_str(),stepstr); > } > > > if ((bck = bmai->GetBucket(kXRS_status))) { > int pst = 0; > memcpy(&pst,bck->buffer,sizeof(pwdStatus_t)); > pst = (__extension__ ({ register unsigned int __v, __x = (pst); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })); > memcpy(&SessionSt, &pst, sizeof(pwdStatus_t)); > bmai->Deactivate(kXRS_status); > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"no bucket kXRS_status found in main buffer"; SecTrace->End();}; > } > hs->Tty = SessionSt.options & kOptsClntTty; > > > unsigned int ulen = hs->User.length(); > ulen = (ulen > sizeof(CName)-1) ? sizeof(CName)-1 : ulen; > if (ulen) > strcpy(CName, hs->User.c_str()); > > > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"version run by client: "<< hs->RemVers; SecTrace->End();}; > > > if (SecTrace->What & 0x0004) { > bmai->Dump("main IN"); > } > > > if (!CheckRtag(bmai, ClntMsg)) > return ErrS(hs->ID,ei,bpar,bmai,0,kPWErrBadRndmTag,stepstr,ClntMsg.c_str()); > > > if (!CheckTimeStamp(bmai, TimeSkew, ClntMsg)) > return ErrS(hs->ID,ei,bpar,bmai,0,kPWErrBadRndmTag,stepstr,ClntMsg.c_str()); > > > bool savecreds = (SessionSt.options & kOptsExpCred); > switch (hs->Step) { > > case kXPC_verifysrv: > > > > nextstep = kXPS_signedrtag; > break; > > case kXPC_signedrtag: > > > > kS_rc = kpST_ok; > nextstep = kXPS_none; > break; > > case kXPC_failureack: > > > kS_rc = kpST_error; > nextstep = kXPS_none; > break; > > case kXPC_autoreg: > > > > > > rc = QueryUser(entst, ClntMsg); > if (rc < 0 || (entst == kPFE_disabled)) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrBadCreds, > DefError.c_str(),stepstr); > > > for (i = 0; i < ncrypt; i++) { > if (refcip[i]) { > > > if (!(bpub = refcip[i]->Public(lpub))) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrNoPublic, > "session",stepstr); > bpid = new char[lpub+5]; > if (bpid) { > char cid[5] = {0}; > sprintf(cid,"%d",cryptID[i]); > memcpy(bpid,cid,5); > memcpy(bpid+5, bpub, lpub); > > > if (bmai->AddBucket(bpid,lpub+5,kXRS_puk) != 0) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrAddBucket, > "main",stepstr); > } else > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrError, > "out-of-memory",stepstr); > { if (bpub) delete [] bpub ; bpub = 0; }; > } > } > > nextstep = kXPS_puk; > break; > > case kXPC_normal: > > > if (QueryUser(entst,ClntMsg) != 0) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrBadCreds, > ": user ",hs->User.c_str(),stepstr); > > if (entst == kPFE_disabled) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrBadCreds, > ": user ",hs->User.c_str(),stepstr); > > if (entst == kPFE_expired || entst == kPFE_onetime) { > > SessionSt.options |= kOptsExpCred; > } > if (entst == kPFE_crypt) { > > > > > if (ClntMsg.beginswith("afs:")) { > SessionSt.options |= kOptsAFSPwd; > } else > SessionSt.options |= kOptsCrypPwd; > } > > savecreds = (entst != kPFE_allowed) ? 0 : 1; > > case kXPC_creds: > > > > if (!(bck = bmai->GetBucket(kXRS_creds))) { > > > kS_rc = kpST_more; > nextstep = kXPS_credsreq; > break; > } > > > if (savecreds) { > if (SaveCreds(bck) != 0) { > ClntMsg = "Warning: could not correctly update credentials database"; > } > kS_rc = kpST_ok; > nextstep = kXPS_none; > bmai->Deactivate(kXRS_creds); > break; > } > > > ctype = kpCT_normal; > if (SessionSt.options & kOptsCrypPwd) > ctype = kpCT_crypt; > else if (SessionSt.options & kOptsAFSPwd) { > ctype = kpCT_afs; > String afsInfo; > XrdSutBucket *bafs = bmai->GetBucket(kXRS_afsinfo); > if (bafs) > bafs->ToString(afsInfo); > if (afsInfo == "c") > ctype = kpCT_afsenc; > } > > > if (!CheckCreds(bck, ctype)) { > > > (hs->Cref->cnt)++; > > SessionSt.options &= ~kOptsExpCred; > > ClntMsg = DefError; > if (hs->Cref->cnt < MaxPrompts) { > > nextstep = kXPS_credsreq; > kS_rc = kpST_more; > > if (hs->Pent->status == kPFE_crypt) { > SessionSt.ctype = kpCT_crypt; > if (ctype == kpCT_afs || ctype == kpCT_afsenc) { > SessionSt.ctype = kpCT_afs; > String afsinfo = hs->ErrMsg; > bmai->UpdateBucket(afsinfo, kXRS_afsinfo); > } > ClntMsg = ""; > } else { > SessionSt.ctype = kpCT_normal; > ClntMsg = "insufficient credentials"; > } > } else { > > kS_rc = kpST_more; > nextstep = kXPS_failure; > > (hs->Pent->cnt)++; > > hs->Pent->mtime = (kXR_int32)time(0); > > XrdSysPrivGuard priv(getuid(), getgid()); > if (priv.Valid()) { > if (cacheAdmin.Flush() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"WARNING: some problem flushing to admin" " file after updating "<<hs->Pent->name; SecTrace->End();}; > > } > } > } > } else { > > hs->Cref->cnt = 0; > > if (hs->Pent->cnt > 0) { > hs->Pent->cnt = 0; > > hs->Pent->mtime = (kXR_int32)time(0); > > XrdSysPrivGuard priv(getuid(), getgid()); > if (priv.Valid()) { > if (cacheAdmin.Flush() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"WARNING: some problem flushing to admin" " file after updating "<<hs->Pent->name; SecTrace->End();}; > > } > } > } > kS_rc = kpST_ok; > nextstep = kXPS_none; > if (SessionSt.options & kOptsExpCred || > > SessionSt.options & kOptsChngPwd) { > kS_rc = kpST_more; > nextstep = kXPS_credsreq; > if (SessionSt.options & kOptsExpCred) { > ClntMsg = "Credentials expired"; > } else if (SessionSt.options & kOptsChngPwd) { > ClntMsg = "Password change requested"; > } > > SessionSt.ctype = kpCT_new; > > SessionSt.options |= kOptsExpCred; > } > > if (KeepCreds) { > int sz = bck->size+5; > char *buf = (char *) malloc(sz); > if (buf) { > memcpy(buf, "&pwd", 4); > buf[4] = 0; > memcpy(buf+5, bck->buffer, bck->size); > > char *out = new char[2*sz+1]; > XrdSutToHex(buf, sz, out); > > { if (clientCreds) delete clientCreds ; clientCreds = 0; }; > clientCreds = new XrdSecCredentials(out, 2*sz+1); > } > } > > if (FileExpCreds.length() >= 0) { > if (ExportCreds(bck) != 0) > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"WARNING: some problem exporting creds to file;" " template is :"<<FileExpCreds; SecTrace->End();}; > > } > } > > bmai->Deactivate(kXRS_creds); > > break; > > default: > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrBadOpt, stepstr); > } > > > > if (kS_rc == kpST_ok) { > if (VeriClnt == 2 && !(hs->RtagOK)) { > > nextstep = kXPS_rtag; > kS_rc = kpST_more; > } > } > > > > if (kS_rc == kpST_more && !(hs->Tty)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"client cannot reply to additional request: failure"; SecTrace->End();}; > > bpar->Deactivate(-1); > bmai->Deactivate(-1); > kS_rc = kpST_error; > } > > if (kS_rc == kpST_more) { > > > if (ClntMsg.length() > 0) > if (bmai->AddBucket(ClntMsg,kXRS_message) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems adding bucket with message for client"; SecTrace->End();}; > } > > > int *pst = new int; > memcpy(pst,&SessionSt,sizeof(pwdStatus_t)); > *pst = (__extension__ ({ register unsigned int __v, __x = (*pst); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })); > if (bmai->AddBucket((char *)pst,sizeof(pwdStatus_t), kXRS_status) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems adding bucket kXRS_status"; SecTrace->End();}; > } > > > if (AddSerialized('s', nextstep, hs->ID, > bpar, bmai, kXRS_main, hs->Hcip) != 0) > return ErrS(hs->ID,ei,bpar,bmai,0, kPWErrSerialBuffer, > "main / session cipher",stepstr); > > > char *bser = 0; > int nser = bpar->Serialized(&bser,'f'); > > > if (SecTrace->What & 0x0004) { > bpar->Dump(ServerStepStr(bpar->GetStep())); > bmai->Dump("Main OUT"); > } > > > *parms = new XrdSecParameters(bser,nser); > } else { > > > { if (hs) delete hs ; hs = 0; }; > } > > > { if (bpar) delete bpar; if (bmai) delete bmai; }; > > > return kS_rc; >} > > > > > >extern "C" >{ >char *XrdSecProtocolpwdInit(const char mode, > const char *parms, XrdOucErrInfo *erp) >{ > > > > > > pwdOptions opts; > char *rc = (char *)""; > char *cenv = 0; > > > > if (mode == 'c') { ># 1612 "XrdSecProtocolpwd.cc" > opts.mode = mode; > > cenv = getenv("XrdSecDEBUG"); > if (cenv) > if (cenv[0] >= 49 && cenv[0] <= 51) opts.debug = atoi(cenv); > > > cenv = getenv("XrdSecPWDVERIFYSRV"); > if (cenv) > if (cenv[0] >= 48 && cenv[0] <= 49) opts.verisrv = atoi(cenv); > > cenv = getenv("XrdSecPWDSRVPUK"); > if (cenv) > opts.srvpuk = strdup(cenv); > > cenv = getenv("XrdSecPWDAUTOLOG"); > if (cenv) > if (cenv[0] >= 48 && cenv[0] <= 50) opts.alog = atoi(cenv); > > cenv = getenv("XrdSecPWDALOGFILE"); > if (cenv) > opts.alogfile = strdup(cenv); > > cenv = getenv("XrdSecPWDMAXPROMPT"); > if (cenv) { > opts.maxprompts = strtol(cenv, (char **)0, 10); > if ((*__errno_location ()) == 34) opts.maxprompts = -1; > } > > > rc = XrdSecProtocolpwd::Init(opts,erp); > > > if (opts.srvpuk) free(opts.srvpuk); > if (opts.alogfile) free(opts.alogfile); > > > return rc; > } > > > cenv = getenv("XRDDEBUG"); > if (cenv && !strcmp(cenv,"1")) opts.debug = 1; > > > > if (parms) { > > > char parmbuff[1024]; > strlcpy(parmbuff, parms, sizeof(parmbuff)); > > > XrdOucTokenizer inParms(parmbuff); ># 1691 "XrdSecProtocolpwd.cc" > int debug = -1; > int areg = -1; > int vc = -1; > int upw = -1; > int syspwd = -1; > int lifetime = -1; > int maxfail = -1; > String dir = ""; > String udir = ""; > String clist = ""; > String cpass = ""; > int keepcreds = -1; > String expcreds = ""; > char *op = 0; > while (inParms.GetLine()) { > while ((op = inParms.GetToken())) { > if (!strncmp(op, "-upwd:",6)) { > upw = atoi(op+6); > } else if (!strncmp(op, "-dir:",5)) { > dir = (const char *)(op+5); > } else if (!strncmp(op, "-udir:",6)) { > udir = (const char *)(op+6); > } else if (!strncmp(op, "-c:",3)) { > clist = (const char *)(op+3); > } else if (!strncmp(op, "-d:",3)) { > debug = atoi(op+3); > } else if (!strncmp(op, "-a:",3)) { > areg = atoi(op+3); > } else if (!strncmp(op, "-vc:",4)) { > vc = atoi(op+4); > } else if (!strncmp(op, "-syspwd",7)) { > syspwd = 1; > } else if (!strncmp(op, "-lf:",4)) { > lifetime = XrdSutParseTime(op+4); > } else if (!strncmp(op, "-maxfail:",9)) { > maxfail = atoi(op+9); > } else if (!strncmp(op, "-cryptfile:",11)) { > cpass = (const char *)(op+11); > } else if (!strncmp(op, "-keepcreds",10)) { > keepcreds = 1; > } else if (!strncmp(op, "-expcreds:",10)) { > expcreds = (const char *)(op+10); > } > } > > areg = (areg >= 0 && areg <= 2) ? areg : 0; > vc = (vc >= 0 && vc <= 2) ? vc : 2; > } > > > > opts.debug = (debug > -1) ? debug : opts.debug; > opts.mode = 's'; > opts.areg = areg; > opts.vericlnt = vc; > opts.upwd = upw; > opts.syspwd = syspwd; > opts.lifecreds = lifetime; > opts.maxfailures = maxfail; > if (dir.length() > 0) > opts.dir = (char *)dir.c_str(); > if (udir.length() > 0) > opts.udir = (char *)udir.c_str(); > if (clist.length() > 0) > opts.clist = (char *)clist.c_str(); > if (cpass.length() > 0) > opts.cpass = (char *)cpass.c_str(); > opts.keepcreds = keepcreds; > if (expcreds.length() > 0) > opts.expcreds = (char *)expcreds.c_str(); > > > return XrdSecProtocolpwd::Init(opts,erp); > } > > > return XrdSecProtocolpwd::Init(opts,erp); >}} > > > > > > >extern "C" >{ >XrdSecProtocol *XrdSecProtocolpwdObject(const char mode, > const char *hostname, > const struct sockaddr &netaddr, > const char *parms, > XrdOucErrInfo *erp) >{ > XrdSecProtocolpwd *prot; > int options = 0x0001; > > > > if (!(prot = new XrdSecProtocolpwd(options, hostname, &netaddr, parms))) { > char *msg = (char *)"Secpwd: Insufficient memory for protocol."; > if (erp) > erp->setErrInfo(12, msg); > else > cerr <<msg <<endl; > return (XrdSecProtocol *)0; > } > > > if (!erp) > cerr << "protocol object instantiated" << endl; > return prot; >}} > > > > > > > >int XrdSecProtocolpwd::ParseCrypto(XrdSutBuffer *buf) >{ > > > > > > > > const char *epname = "ParseCrypto";; > > > if (!buf) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"invalid input ("<<buf<<")"; SecTrace->End();}; > return -1; > } > > String clist = ""; > XrdSutBucket *bck = 0; > > if (!buf->GetNBuckets()) { > > > > String opts = buf->GetOptions(); > if (!(opts.length())) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"missing options - bad format"; SecTrace->End();}; > return -1; > } > > > int ii = opts.find("c:"); > if (ii >= 0) { > clist.assign(opts, ii+2); > clist.erase(clist.find(',')); > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"crypto information not found in options"; SecTrace->End();}; > return -1; > } > } else { > > > if (!(bck = buf->GetBucket(kXRS_cryptomod))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cryptomod buffer missing"; SecTrace->End();}; > return -1; > } > bck->ToString(clist); > } > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"parsing list: "<<clist.c_str(); SecTrace->End();}; > > > hs->CryptoMod = ""; > > if (clist.length()) { > int from = 0; > while ((from = clist.tokenize(hs->CryptoMod, from, '|')) != -1) { > > if (hs->CryptoMod.length()) { > > if ((hs->CF = XrdCryptoFactory::GetCryptoFactory(hs->CryptoMod.c_str()))) { > int fid = hs->CF->ID(); > int i = 0; > > while (i < ncrypt) { > if (cryptID[i] == fid) break; > i++; > } > if (i >= ncrypt) { > if (ncrypt == 10) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"max number of crypto slots reached - do nothing"; SecTrace->End();}; > return 0; > } else { > > cryptID[i] = fid; > ncrypt++; > } > } > > hs->Rcip = refcip[i]; > > return 0; > } > } > } > } > > return 1; >} > > >bool XrdSecProtocolpwd::CheckCreds(XrdSutBucket *creds, int ctype) >{ > > const char *epname = "CheckCreds";; > bool match = 0; > > > if (!hs->CF || !creds || !hs->Pent) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Invalid inputs ("<<hs->CF<<","<<creds<<","<<hs->Pent<<")"; SecTrace->End();}; > return match; > } > > if (ctype != kpCT_afs && ctype != kpCT_afsenc && > (!(hs->Pent->buf1.buf) || hs->Pent->buf1.len <= 0)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Cached information about creds missing"; SecTrace->End();}; > return match; > } > > > int len = creds->size+4; > char *cbuf = (KeepCreds) ? new char[len] : (char *)0; > > > > if (ctype != kpCT_crypt && ctype != kpCT_afs && ctype != kpCT_afsenc) { > > > XrdSutBucket *tmps = new XrdSutBucket(); > if (!tmps) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not allocate working buckets area for the salt"; SecTrace->End();}; > return match; > } > tmps->SetBuf(hs->Pent->buf1.buf, hs->Pent->buf1.len); > > > if (KeepCreds) { > memcpy(cbuf, "pwd:", 4); > memcpy(cbuf+4, creds->buffer, creds->size); > } > > > DoubleHash(hs->CF,creds,tmps); > > if (hs->Pent->buf2.len == creds->size) > if (!memcmp(creds->buffer, hs->Pent->buf2.buf, creds->size)) > match = 1; > { if (tmps) delete tmps ; tmps = 0; }; > > > if (match && KeepCreds) > creds->SetBuf(cbuf, len); > > } else { > > > > String passwd(creds->buffer,creds->size+1); > passwd.reset(0,creds->size,creds->size); > > char *pass_crypt = crypt(passwd.c_str(), hs->Pent->buf1.buf); > > if (!strncmp(pass_crypt, hs->Pent->buf1.buf, hs->Pent->buf1.len + 1) != 0) > match = 1; > if (match && KeepCreds) { > memcpy(cbuf, "cpt:", 4); > memcpy(cbuf+4, creds->buffer, creds->size); > creds->SetBuf(cbuf, len); > } ># 1975 "XrdSecProtocolpwd.cc" > } > > > if (cbuf) > delete[] cbuf; > > > return match; >} ># 2077 "XrdSecProtocolpwd.cc" >bool XrdSecProtocolpwd::CheckCredsAFS(XrdSutBucket *, int) >{ > > return 0; >} > > > >int XrdSecProtocolpwd::SaveCreds(XrdSutBucket *creds) >{ > > > const char *epname = "SaveCreds";; > > > if ((hs->User.length() <= 0) || !hs->CF || !creds) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Bad inputs ("<<hs->User.length()<<","<<hs->CF<<"," <<creds<<")"; SecTrace->End();}; > > return -1; > } > > String wTag = hs->Tag + '_'; wTag += hs->CF->ID(); > > > XrdSutPFEntry *cent = cacheAdmin.Add(wTag.c_str()); > if (!cent) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not get entry in cache"; SecTrace->End();}; > return -1; > } > > char *tmps = XrdSutRndm::GetBuffer(8,3); > if (!tmps) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not generate salt: out-of-memory"; SecTrace->End();}; > return -1; > } > XrdSutBucket *salt = new XrdSutBucket(tmps,8); > if (!salt) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not create salt bucket"; SecTrace->End();}; > return -1; > } > cent->buf1.SetBuf(salt->buffer,salt->size); > > > DoubleHash(hs->CF,creds,salt); > > cent->buf2.SetBuf(creds->buffer,creds->size); > > > cent->status = kPFE_ok; > > > cent->mtime = hs->TimeStamp; > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Entry for tag: "<<wTag<<" updated in cache"; SecTrace->End();}; > > > XrdSysPrivGuard priv(getuid(), getgid()); > if (priv.Valid()) { > if (cacheAdmin.Flush() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"WARNING: some problem flushing to admin file after updating "<<wTag; SecTrace->End();}; > } > } > > > return 0; >} > > >int XrdSecProtocolpwd::ExportCreds(XrdSutBucket *creds) >{ > > > > const char *epname = "ExportCreds";; > > > if ((hs->User.length() <= 0) || !hs->CF || !creds) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Bad inputs ("<<hs->User.length()<<","<<hs->CF<<"," <<creds<<")"; SecTrace->End();}; > > return -1; > } > > > if (FileExpCreds.length() <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"File (template) undefined - do nothing"; SecTrace->End();}; > return -1; > } > > > String filecreds = FileExpCreds; > filecreds.replace("<user>", hs->User.c_str()); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Exporting client creds to: "<<filecreds; SecTrace->End();}; > > > XrdSutPFile pfcreds(filecreds.c_str()); > if (!pfcreds.IsValid()) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Problem attaching / creating file "<<filecreds; SecTrace->End();}; > return -1; > } > > > String wTag = hs->Tag + '_'; wTag += hs->CF->ID(); > > > XrdSutPFEntry ent; > ent.SetName(wTag.c_str()); > ent.status = kPFE_ok; > ent.cnt = 0; > if (!strncmp(creds->buffer, "pwd:", 4)) { > > ent.buf1.SetBuf(creds->buffer+4, creds->size-4); > } else { > > > ent.buf1.SetBuf(creds->buffer,creds->size); > } > > > ent.mtime = time(0); > pfcreds.WriteEntry(ent); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"New entry for "<<wTag<<" successfully written to file: " <<filecreds; SecTrace->End();}; > > > return 0; >} > > >XrdSutBucket *XrdSecProtocolpwd::QueryCreds(XrdSutBuffer *bm, > bool netrc, int &status) >{ > > const char *epname = "QueryCreds";; > > > if (!bm || !hs->CF || hs->Tag.length() <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"bad inputs ("<<bm<<","<<hs->CF<<","<<hs->Tag.length()<<")"; SecTrace->End();}; > return (XrdSutBucket *)0; > } > > > > int ctype = (status > kpCT_undef) ? status : kpCT_normal; > netrc = ((ctype == kpCT_normal || ctype == kpCT_onetime || > ctype == kpCT_old || ctype == kpCT_crypt)) ? netrc : 0; > > > status = kpCI_undef; > > XrdSutBucket *creds = new XrdSutBucket(); > if (!creds) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could allocate bucket for creds"; SecTrace->End();}; > return (XrdSutBucket *)0; > } > creds->type = kXRS_creds; > > > > String wTag = hs->Tag + '_'; wTag += hs->CF->ID(); > > > > char *cf = 0; > char *cbuf = getenv("XrdSecCREDS"); > if (cbuf) { > int len = strlen(cbuf); > > int sz = len; > char *out = new char[sz/2+2]; > XrdSutFromHex((const char *)cbuf, out, len); > if ((cf = strstr(out, "&pwd"))) { > cf += 5; > len -= 5; > if (len > 0) { > > char pfx[5] = {0}; > memcpy(pfx, cf, 4); > cf += 4; > len -= 4; > if (len > 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"using "<<len<<" bytes of creds from the environment; pfx: "<<pfx; SecTrace->End();}; > > hs->Pent = cacheAlog.Add(wTag.c_str()); > if (hs->Pent) { > > if (hs->Pent->cnt == 0) { > > creds->SetBuf(cf,len); > > if (strncmp(pfx,"pwd",3)) > hs->Pent->status = kPFE_crypt; > hs->Pent->mtime = hs->TimeStamp; > hs->Pent->buf1.SetBuf(cf, len); > > hs->Pent->buf2.SetBuf(cf, len); > > if (!strncmp(pfx,"afs",3)) { > String afsInfo = "c"; > if (bm->UpdateBucket(afsInfo, kXRS_afsinfo) != 0) > {{SecTrace->Beg(epname); cerr <<"Warning: problems updating bucket with AFS info"; SecTrace->End();}}; > } > > status = kpCI_exact; > > return creds; > } else { > > hs->Pent->buf1.SetBuf(); > hs->Pent->buf2.SetBuf(); > } > } else { > {{SecTrace->Beg(epname); cerr <<"Could create new entry in cache"; SecTrace->End();}}; > return (XrdSutBucket *)0; > } > } > } > } > } > > > > String afsInfo; > if (ctype == kpCT_afs || ctype == kpCT_afsenc) { > XrdSutBucket *bafs = bm->GetBucket(kXRS_afsinfo); > if (bafs) > bafs->ToString(afsInfo); > } > > > if (netrc) { > > > if (PFAlog.IsValid()) { > if (cacheAlog.Refresh() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems assuring cache update for file alog "; SecTrace->End();}; > } > } > > > bool wild = 0; > hs->Pent = cacheAlog.Get(wTag.c_str(),&wild); > > if (hs->Pent && hs->Pent->buf1.buf) { > if (hs->Pent->cnt == 0) { > cf = hs->Pent->buf1.buf; > bool afspwd = strncmp(cf,"afs",3) ? 0 : 1; > if (!strncmp(cf,"cpt",3) || afspwd) { > int len = hs->Pent->buf1.len; > cf += 4; > len -= 4; > hs->Pent->status = kPFE_crypt; > hs->Pent->mtime = hs->TimeStamp; > hs->Pent->buf1.SetBuf(cf, len); > > hs->Pent->buf2.SetBuf(cf, len); > > if (afspwd) { > afsInfo = "c"; > if (bm->UpdateBucket(afsInfo, kXRS_afsinfo) != 0) > {{SecTrace->Beg(epname); cerr <<"Warning: problems updating bucket with AFS info"; SecTrace->End();}}; > } > } > > creds->SetBuf(hs->Pent->buf1.buf,hs->Pent->buf1.len); > > status = wild ? kpCI_wildcard : kpCI_exact; > > return creds; > } else { > > hs->Pent->buf1.SetBuf(); > } > } > > > String passwd; > String host(hs->Tag,hs->Tag.find("@",0)+1,hs->Tag.find(":",0)-1); > if (QueryNetRc(host, passwd, status) == 0) { > > if ((hs->Pent = cacheAlog.Add(wTag.c_str()))) { > > hs->Pent->status = kPFE_crypt; > hs->Pent->mtime = hs->TimeStamp; > hs->Pent->buf1.SetBuf(passwd.c_str(),passwd.length()); > > creds->SetBuf(passwd.c_str(),passwd.length()); > > status = kpCI_exact; > > return creds; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could create new entry in cache"; SecTrace->End();}; > return (XrdSutBucket *)0; > } > } > } > > > if (!(hs->Pent) && !(hs->Pent = cacheAlog.Add(wTag.c_str()))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could create new entry in cache"; SecTrace->End();}; > return (XrdSutBucket *)0; > } > > > > if (hs->Pent && hs->Pent->buf1.buf && hs->Pent->cnt == 0) { > > creds->SetBuf(hs->Pent->buf1.buf,hs->Pent->buf1.len); > > status = kpCI_exact; > > return creds; > } ># 2407 "XrdSecProtocolpwd.cc" > if (ctype == kpCT_crypt || ctype == kpCT_afs) { > if (hs->Pent && hs->Pent->buf2.buf) { > if (ctype == kpCT_afs) { ># 2424 "XrdSecProtocolpwd.cc" > creds->SetBuf(hs->Pent->buf2.buf,hs->Pent->buf2.len); > > bm->Deactivate(kXRS_afsinfo); > > } else { > > creds->SetBuf(hs->Pent->buf2.buf,hs->Pent->buf2.len); > } > > hs->Pent->buf1.SetBuf(hs->Pent->buf2.buf,hs->Pent->buf2.len); > hs->Pent->buf2.SetBuf(); > > status = kpCI_exact; > > return creds; > } > } > > > > > if (!(hs->Tty)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Not connected to tty: cannot prompt user for credentials"; SecTrace->End();}; > return (XrdSutBucket *)0; > } > > > > char prompt[512] = {0}; > if (ctype == kpCT_onetime) > snprintf(prompt,512, "Password for %s not active: " > "starting activation handshake.",hs->Tag.c_str()); > > > if (ctype == kpCT_new) { > snprintf(prompt,512, "Enter new password: "); > } else if (ctype == kpCT_crypt) { > String host(hs->Tag,hs->Tag.find("@",0)+1,hs->Tag.find(":",0)-1); > snprintf(prompt,512, "Password for %s@%s: ", > hs->User.c_str(), host.c_str()); > } else if (ctype == kpCT_afs || ctype == kpCT_afsenc) { > snprintf(prompt,512, "AFS password for %s@%s: ", > hs->User.c_str(), hs->AFScell.c_str()); > } else { > > snprintf(prompt,512,"Password for %s:",hs->Tag.c_str()); > } > > > int natt = MaxPrompts; > String passwd = ""; > bool changepwd =0; > while (natt-- && passwd.length() <= 0) { > XrdSutGetPass(prompt, passwd); > > > if (passwd.beginswith("$changepwd$")) { > {{SecTrace->Beg(epname); cerr <<"Requesting a password change"; SecTrace->End();}}; > changepwd = 1; > passwd.erase("$changepwd$",0,strlen("$changepwd$")); > } > if (passwd.length()) { > > creds->SetBuf(passwd.c_str(),passwd.length()); > if (ctype != kpCT_crypt && ctype != kpCT_afs) { > > DoubleHash(hs->CF,creds,creds); > > status = kpCI_prompt; > } else if (ctype == kpCT_afs) { ># 2505 "XrdSecProtocolpwd.cc" > } > > > if (changepwd) > hs->Pent->status = kPFE_onetime; > else > hs->Pent->status = kPFE_ok; > hs->Pent->buf1.SetBuf(creds->buffer,creds->size); > > > hs->Pent->buf2.SetBuf(passwd.c_str(),passwd.length()); > > if (AutoLogin > 0) > UpdateAlog(); > } > } > > if (passwd.length() <= 0) { > delete creds; > creds = 0; > } > > return creds; >} > > >int XrdSecProtocolpwd::UpdateAlog() >{ > > > const char *epname = "UpdateAlog";; > > > if (hs->Tag.length() <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Tag undefined - do nothing"; SecTrace->End();}; > return -1; > } > > if (!(hs->Pent) || !(hs->Pent->buf1.buf)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Nothing to do"; SecTrace->End();}; > return 0; > } > > > String wTag = hs->Tag + '_'; wTag += hs->CF->ID(); > > > hs->Pent->buf2.SetBuf(); > hs->Pent->buf3.SetBuf(); > hs->Pent->buf4.SetBuf(); > > > hs->Pent->status = kPFE_ok; > > > hs->Pent->cnt = 0; > > > hs->Pent->mtime = hs->TimeStamp; > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Entry for tag: "<<wTag<<" updated in cache"; SecTrace->End();}; > > > if (cacheAlog.Flush() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"WARNING: some problem flushing to alog file after updating "<<wTag; SecTrace->End();}; > } > > > return 0; >} > > >int XrdSecProtocolpwd::QueryUser(int &status, String &cmsg) >{ > > const char *epname = "QueryUser";; > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Enter: " << hs->User; SecTrace->End();}; > > > if (hs->User.length() <= 0 || !hs->CF || !hs->Cref) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Invalid inputs ("<<hs->User.length()<<","<<hs->CF<<","<<hs->Cref<<")"; SecTrace->End();}; > return -1; > } > > > String wTag = hs->Tag + '_'; wTag += hs->CF->ID(); > > > status = kPFE_disabled; > int bad = -1; > cmsg = ""; > > > if (UserPwd) { > > struct passwd *pw = getpwnam(hs->User.c_str()); > int rcst = 0; > kXR_int32 mtime = -1; > bool fcrypt = 0; > String File; > if (pw) { > File.resize(strlen(pw->pw_dir)+FileUser.length()+10); > File.assign(pw->pw_dir, 0); > File += FileUser; > > struct stat st; > if ((rcst = stat(File.c_str(),&st)) != 0 && (*__errno_location ()) == 2) { > if (UserPwd > 1) { > > File.replace(FileUser,FileCrypt); > fcrypt = 1; > rcst = 0; > } > } > mtime = (rcst == 0) ? st.st_mtim.tv_sec : mtime; > } > > if (rcst == 0) { > > > hs->Pent = cacheUser.Get(wTag.c_str()); > if (!hs->Pent || (hs->Pent->mtime < mtime)) { > hs->Pent = (hs->Pent) ? hs->Pent : cacheUser.Add(wTag.c_str()); > if (hs->Pent) { > > > if (!fcrypt) { > > XrdSutPFile ff(File.c_str(), 0x2,0,0); > if (ff.IsValid()) { > > if (ff.ReadEntry(wTag.c_str(),*(hs->Pent)) > 0) { > bad = 0; > status = hs->Pent->status; > ff.Close(); > return 0; > } > ff.Close(); > } > } else if (UserPwd > 1) { > String pwhash; > if (QueryCrypt(FileCrypt, pwhash) > 0) { > bad = 0; > status = kPFE_crypt; > > hs->Pent->mtime = hs->TimeStamp; > hs->Pent->status = status; > hs->Pent->cnt = 0; > if (!FileCrypt.beginswith("afs:")) > hs->Pent->buf1.SetBuf(pwhash.c_str(),pwhash.length()+1); > > cmsg = FileCrypt; > return 0; > } > } > } > } else { > > bad = 0; > status = hs->Pent->status; > hs->Pent->mtime = hs->TimeStamp; > if (status == kPFE_crypt) > cmsg = FileCrypt; > return 0; > } > } > } > > > > if (SysPwd) { > String pwhash, fn; > if (QueryCrypt(fn, pwhash) > 0) { > bad = 0; > status = kPFE_crypt; > > hs->Pent = cacheUser.Add(wTag.c_str()); > hs->Pent->mtime = hs->TimeStamp; > hs->Pent->status = status; > hs->Pent->cnt = 0; > if (!fn.beginswith("afs:")) > hs->Pent->buf1.SetBuf(pwhash.c_str(),pwhash.length()+1); > > cmsg = fn; > return 0; > } > } > > > if (PFAdmin.IsValid()) { > > > XrdSysPrivGuard priv(getuid(), getgid()); > if (priv.Valid()) { > if (cacheAdmin.Refresh() != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems assuring cache update for file admin "; SecTrace->End();}; > return -1; > } > } > hs->Pent = cacheAdmin.Get(wTag.c_str()); > > if (hs->Pent) { > bad = 0; > status = hs->Pent->status; > if (status == kPFE_allowed) { > if (AutoReg == kpAR_none) { > > status = kPFE_disabled; > bad = 1; > } > } else if (status >= kPFE_ok) { > > if (MaxFailures > 0 && hs->Pent->cnt >= MaxFailures) { > status = kPFE_disabled; > bad = 2; > } > > if (LifeCreds > 0) { > int expt = hs->Pent->mtime + LifeCreds; > int now = hs->TimeStamp; > if (expt < now) > status = kPFE_expired; > } > if (status != kPFE_disabled) > return 0; > } > } > } > > > > > if (bad == -1) { > if (AutoReg != kpAR_none) { > status = kPFE_allowed; > if (AutoReg == kpAR_users) { > struct passwd *pw = getpwnam(hs->User.c_str()); > if (!pw) { > status = kPFE_disabled; > bad = 1; > } > } > } else > bad = 1; > } > > > if (status == kPFE_disabled) { > char msg[512]; > switch (bad) { > case 1: > snprintf(msg,512,"user '%s' unknown: auto-registration" > " not allowed: contact %s to register", > hs->User.c_str(),SrvEmail.c_str()); > break; > case 2: > snprintf(msg,512,"max number of failures (%d) reached" > " for user '%s': contact %s to re-activate", > MaxFailures,hs->User.c_str(),SrvEmail.c_str()); > break; > default: > msg[0] = '\0'; > } > cmsg.insert(msg,0,strlen(msg)); > } > > > return 0; >} > > >int XrdSecProtocolpwd::GetUserHost(String &user, String &host) >{ > > const char *epname = "GetUserHost";; > > > host = getenv("XrdSecHOST"); > > > user = getenv("XrdSecUSER"); > > > if (!(user.length())) { > > > if (!(hs->Tty)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"user not defined:" "not tty: cannot prompt for user"; SecTrace->End();}; > > return -1; > } > > > String prompt = "Enter user or tag"; > if (host.length()) { > prompt.append(" for host "); > prompt.append(host); > } > prompt.append(":"); > XrdSutGetLine(user,prompt.c_str()); > } > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<" user: "<<user<<", host: "<<host; SecTrace->End();}; > > > return 0; >} > > >int XrdSecProtocolpwd::AddSerialized(char opt, kXR_int32 step, String ID, > XrdSutBuffer *bls, XrdSutBuffer *buf, > kXR_int32 type, > XrdCryptoCipher *cip) >{ > > > > const char *epname = "AddSerialized";; > > if (!bls || !buf || (opt != 0 && opt != 'c' && opt != 's')) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"invalid inputs (" <<bls<<","<<buf<<","<<opt<<")" <<" - type: "<<XrdSutBuckStr(type); SecTrace->End();}; > > > return -1; > } > > > > if (step > 0) { > bls->SetStep(step); > buf->SetStep(step); > hs->LastStep = step; > } > > > > > XrdSutBucket *brt = buf->GetBucket(kXRS_rtag); > if (brt && cip) { > > > if (cip->Encrypt(*brt) == 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"error encrypting random tag"; SecTrace->End();}; > return -1; > } > > > brt->type = kXRS_signed_rtag; > } > > > if (opt == 'c') { > > > if (buf->MarshalBucket(kXRS_timestamp,(kXR_int32)(hs->TimeStamp)) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"error adding bucket with time stamp"; SecTrace->End();}; > return -1; > } > } > > > > if (opt == 's' || step != kXPC_autoreg) { > > > String RndmTag; > XrdSutRndm::GetRndmTag(RndmTag); > > > if (!(brt = new XrdSutBucket(RndmTag,kXRS_rtag))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"error creating random tag bucket"; SecTrace->End();}; > return -1; > } > buf->AddBucket(brt); > > > if (!hs->Cref) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cache entry not found: protocol error"; SecTrace->End();}; > return -1; > } > > > hs->Cref->buf1.SetBuf(brt->buffer,brt->size); > hs->Cref->mtime = (kXR_int32)hs->TimeStamp; > } > > > char *bser = 0; > int nser = buf->Serialized(&bser); > > > XrdSutBucket *bck = 0;; > if (!(bck = bls->GetBucket(type))) { > > if (!(bck = new XrdSutBucket(bser,nser,type))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"error creating bucket " <<" - type: "<<XrdSutBuckStr(type); SecTrace->End();}; > > return -1; > } > > > bls->AddBucket(bck); > } else { > bck->Update(bser,nser); > } > > > if (cip) { > if (cip->Encrypt(*bck) == 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"error encrypting bucket - cipher " <<" - type: "<<XrdSutBuckStr(type); SecTrace->End();}; > > return -1; > } > } > > return 0; >} > > >int XrdSecProtocolpwd::ParseClientInput(XrdSutBuffer *br, XrdSutBuffer **bm, > String &emsg) >{ > > > > > const char *epname = "ParseClientInput";; > > > if (!br || !bm) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"invalid inputs ("<<br<<","<<bm<<")"; SecTrace->End();}; > emsg = "invalid inputs"; > return -1; > } > > > XrdSutBucket *bckm = 0; > > > if (!br->GetNBuckets()) { > > if (!((*bm) = new XrdSutBuffer(br->GetProtocol(),br->GetOptions()))) { > emsg = "error instantiating main buffer"; > return -1; > } > > > String opts = br->GetOptions(); > int ii = opts.find("v:"); > if (ii >= 0) { > String sver(opts,ii+2); > sver.erase(sver.find(',')); > hs->RemVers = atoi(sver.c_str()); > } else { > hs->RemVers = Version; > emsg = "server version information not found in options:" > " assume same as local"; > } > > > if (!(hs->Cref = new XrdSutPFEntry("c"))) { > emsg = "error creating cache"; > return -1; > } > > > hs->Cref->status = hs->RemVers; > > > String srvid; > ii = opts.find("id:"); > if (ii >= 0) { > srvid.assign(opts, ii+3); > srvid.erase(srvid.find(',')); > } > > > String popt; > ii = opts.find("po:"); > if (ii >= 0) { > popt.assign(opts, ii+3); > popt.erase(popt.find(',')); > > if (popt.beginswith("sys")) { > hs->SysPwd = 1; > } else if (popt.beginswith("afs")) { > hs->SysPwd = 2; > hs->AFScell.assign(popt,3); > } > } > > > String host; > if (GetUserHost(hs->User,host) != 0) { > emsg = "error getting user and host"; > return -1; > } > > > hs->Tag.resize(hs->User.length()+host.length()+srvid.length()+5); > hs->Tag = hs->User; > if (host.length() > 0) > hs->Tag += ("@" + host); > if (srvid.length() > 0) > hs->Tag += (":" + srvid); > > > if (!PFSrvPuk.IsValid()) { > emsg = "file with server public keys invalid"; > return -1; > } > char *ptag = new char[host.length()+srvid.length()+10]; > if (ptag) { > sprintf(ptag,"%s:%s_%d",host.c_str(),srvid.c_str(),hs->CF->ID()); > bool wild = 0; > XrdSutPFEntry *ent = cacheSrvPuk.Get((const char *)ptag, &wild); > if (ent) { > > { if (hs->Hcip) delete hs->Hcip ; hs->Hcip = 0; }; > if (!(hs->Hcip = > hs->CF->Cipher(0,ent->buf1.buf,ent->buf1.len))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"could not instantiate session cipher " "using cipher public info from server"; SecTrace->End();}; > > emsg = "could not instantiate session cipher "; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"hsHcip: 0x"<<hs->Hcip->AsHexString(); SecTrace->End();}; > } > } else { > > emsg = "server puk not found in cache - tag: "; > emsg += ptag; > } > { if (ptag) delete [] ptag ; ptag = 0; }; > } else > emsg = "could not allocate buffer for server puk tag"; > > > return 0; > } > > > if (!hs->Cref) { > emsg = "cache entry not found"; > return -1; > } > > > int reftime = hs->TimeStamp - TimeSkew; > if (hs->Cref->mtime < reftime) { > emsg = "cache entry expired"; > > { if (hs->Cref) delete hs->Cref ; hs->Cref = 0; }; > return -1; > } > > > hs->RemVers = hs->Cref->status; > > > if (!(bckm = br->GetBucket(kXRS_main))) { > emsg = "main buffer missing"; > return -1; > } > > > if (hs->LastStep != kXPC_autoreg) { > > > if (!hs->Hcip) { > emsg = "session cipher not found"; > return -1; > } > > > if (!(hs->Hcip->Decrypt(*bckm))) { > emsg = "error decrypting main buffer with session cipher"; > return -1; > } > } > > > if (!((*bm) = new XrdSutBuffer(bckm->buffer,bckm->size))) { > emsg = "error deserializing main buffer"; > return -1; > } > > > bool newpuk = 0; > XrdSutBuckList *bcklst = (*bm)->GetBuckList(); > XrdSutBucket *bp = bcklst->Begin(); > while (bp) { > if (bp->type == kXRS_puk) { > newpuk = 1; > > char cid[5] = {0}; > memcpy(cid, bp->buffer, 5); > int id = atoi(cid); > > String ptag(hs->Tag); > ptag.erase(0,ptag.find('@')+1); > ptag += '_'; > ptag += cid; > > XrdSutPFEntry *ent = cacheSrvPuk.Add(ptag.c_str()); > if (ent) { > > ent->buf1.SetBuf((bp->buffer)+5,(bp->size)-5); > ent->mtime = hs->TimeStamp; > if (id == hs->CF->ID()) { > > { if (hs->Hcip) delete hs->Hcip ; hs->Hcip = 0; }; > if (!(hs->Hcip = > hs->CF->Cipher(0,ent->buf1.buf,ent->buf1.len))) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"could not instantiate session cipher " "using cipher public info from server"; SecTrace->End();}; > > emsg = "could not instantiate session cipher "; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"hsHcip: 0x"<<hs->Hcip->AsHexString(); SecTrace->End();}; > } > } > } else { > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"could not create entry in cache - tag: "<<ptag; SecTrace->End();}; > } > } > > bp = bcklst->Next(); > } > (*bm)->Deactivate(kXRS_puk); > > if (newpuk) > cacheSrvPuk.Flush(); > > > return 0; >} > > >int XrdSecProtocolpwd::ParseServerInput(XrdSutBuffer *br, XrdSutBuffer **bm, > String &cmsg) >{ > > > > > const char *epname = "ParseServerInput";; > > > if (!br || !bm) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"invalid inputs ("<<br<<","<<bm<<")"; SecTrace->End();}; > cmsg = "invalid inputs"; > return -1; > } > > > XrdSutBucket *bck = 0; > XrdSutBucket *bckm = 0; > > > if (!(bckm = br->GetBucket(kXRS_main))) { > cmsg = "main buffer missing"; > return -1; > } > > > if ((bck = br->GetBucket(kXRS_puk))) { > > > { if (hs->Hcip) delete hs->Hcip ; hs->Hcip = 0; }; > > > if (!hs->Rcip) { > cmsg = "reference cipher missing"; > return -1; > } > > if (!(hs->Hcip = hs->CF->Cipher(*hs->Rcip))) { > cmsg = "cannot get reference cipher"; > return -1; > } > > > if (!(hs->Hcip->Finalize(bck->buffer,bck->size,0))) { > cmsg = "cannot finalize session cipher"; > return -1; > } > > > br->Deactivate(kXRS_puk); > } > > > > if (hs->Hcip) { > if (!(hs->Hcip->Decrypt(*bckm))) { > cmsg = "error decrypting main buffer with session cipher"; > return -1; > } > } > > > if (!((*bm) = new XrdSutBuffer(bckm->buffer,bckm->size))) { > cmsg = "error deserializing main buffer"; > return -1; > } > > > if (hs->RemVers == -1) { > if ((*bm)->UnmarshalBucket(kXRS_version,hs->RemVers) != 0) { > hs->RemVers = Version; > cmsg = "client version information not found in options:" > " assume same as local"; > } else { > (*bm)->Deactivate(kXRS_version); > } > } > > > > if (!hs->Cref) { > > if (!(hs->Cref = new XrdSutPFEntry(hs->ID.c_str()))) { > cmsg = "cannot create cache entry"; > return -1; > } > } else { > > > int reftime = hs->TimeStamp - TimeSkew; > if (hs->Cref->mtime < reftime) { > cmsg = "cache entry expired"; > { if (hs->Cref) delete hs->Cref ; hs->Cref = 0; }; > return -1; > } > } > > > > if ((bck = (*bm)->GetBucket(kXRS_user))) { > if (hs->User.length() <= 0) { > bck->ToString(hs->User); > > hs->Tag = hs->User; > } > (*bm)->Deactivate(kXRS_user); > } > > > return 0; >} > > >void XrdSecProtocolpwd::ErrF(XrdOucErrInfo *einfo, kXR_int32 ecode, > const char *msg1, const char *msg2, > const char *msg3) >{ > > const char *epname = "ErrF";; > > char *msgv[12]; > int k, i = 0, sz = strlen("Secpwd"); > > > > int cm = (ecode >= kPWErrParseBuffer && > ecode <= kPWErrError) ? (ecode-kPWErrParseBuffer) : -1; > const char *cmsg = (cm > -1) ? gPWErrStr[cm] : 0; > > > > msgv[i++] = (char *)"Secpwd"; > if (cmsg) {msgv[i++] = (char *)": "; > msgv[i++] = (char *)cmsg; > sz += strlen(msgv[i-1]) + 2; > } > if (msg1) {msgv[i++] = (char *)": "; > msgv[i++] = (char *)msg1; > sz += strlen(msgv[i-1]) + 2; > } > if (msg2) {msgv[i++] = (char *)": "; > msgv[i++] = (char *)msg2; > sz += strlen(msgv[i-1]) + 2; > } > if (msg3) {msgv[i++] = (char *)": "; > msgv[i++] = (char *)msg3; > sz += strlen(msgv[i-1]) + 2; > } > > > if (einfo) { > einfo->setErrInfo(ecode, (const char **)msgv, i); > } > if (SecTrace->What & 0x0001) { > char *bout = new char[sz+10]; > if (bout) { > bout[0] = 0; > for (k = 0; k < i; k++) > sprintf(bout,"%s%s",bout,msgv[k]); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<bout; SecTrace->End();}; > } else { > for (k = 0; k < i; k++) > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<msgv[k]; SecTrace->End();}; > } > } >} > > >XrdSecCredentials *XrdSecProtocolpwd::ErrC(XrdOucErrInfo *einfo, > XrdSutBuffer *b1, > XrdSutBuffer *b2, > XrdSutBuffer *b3, > kXR_int32 ecode, > const char *msg1, > const char *msg2, > const char *msg3) >{ > > > > ErrF(einfo, ecode, msg1, msg2, msg3); > > > { if (b1) delete b1; if (b2) delete b2; if (b3) delete b3; }; > > > return (XrdSecCredentials *)0; >} > > >int XrdSecProtocolpwd::ErrS(String ID, XrdOucErrInfo *einfo, > XrdSutBuffer *b1, XrdSutBuffer *b2, > XrdSutBuffer *b3, kXR_int32 ecode, > const char *msg1, const char *msg2, > const char *msg3) >{ > > > > ErrF(einfo, ecode, msg1, msg2, msg3); > > > { if (b1) delete b1; if (b2) delete b2; if (b3) delete b3; }; > > > return kpST_error; >} > > >int XrdSecProtocolpwd::DoubleHash(XrdCryptoFactory *cf, XrdSutBucket *bck, > XrdSutBucket *s1, XrdSutBucket *s2, > const char *tag) >{ > > > > > const char *epname = "DoubleHash";; > > > > if (!cf || !bck) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Bad inputs "<<cf<<","<<bck<<")"; SecTrace->End();}; > return -1; > } > > > if ((!s1 || s1->size <= 0) && (!s2 || s2->size <= 0)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Both salts undefined - do nothing"; SecTrace->End();}; > return 0; > } > > > int ltag = (tag) ? strlen(tag) + 1 : 0; > > > XrdCryptoKDFun_t KDFun = cf->KDFun(); > XrdCryptoKDFunLen_t KDFunLen = cf->KDFunLen(); > if (!KDFun || !KDFunLen) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not get hooks to one-way hash functions (" <<KDFun<<","<<KDFunLen<<")"; SecTrace->End();}; > > return -1; > } > > > char *nhash = 0, *thash = bck->buffer; > int nhlen = bck->size; > if (s1 && s1->size > 0) { > if (!(nhash = new char[(*KDFunLen)() + ltag])) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not allocate memory for hash - s1"; SecTrace->End();}; > return -1; > } > if ((nhlen = (*KDFun)(thash,nhlen, > s1->buffer,s1->size,nhash+ltag,0)) <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Problems hashing - s1"; SecTrace->End();}; > delete[] nhash; > return -1; > } > thash = nhash; > } > > > if (s2 && s2->size > 0) { > if (!(nhash = new char[(*KDFunLen)() + ltag])) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Could not allocate memory for hash - s2"; SecTrace->End();}; > return -1; > } > if (thash && thash != bck->buffer) thash += ltag; > if ((nhlen = (*KDFun)(thash,nhlen, > s2->buffer,s2->size,nhash+ltag,0)) <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Problems hashing - s2"; SecTrace->End();}; > delete[] nhash; > if (thash && thash != bck->buffer) delete[] thash; > return -1; > } > if (thash && thash != bck->buffer) delete[] thash; > thash = nhash; > } > > > if (tag) > memcpy(thash,tag,ltag); > > > bck->SetBuf(thash,nhlen+ltag); > > > return 0; >} > > >int XrdSecProtocolpwd::QueryCrypt(String &fn, String &pwhash) >{ ># 3449 "XrdSecProtocolpwd.cc" > const char *epname = "QueryCrypt";; > > int rc = -1; > int len = 0, n = 0, fid = -1; > pwhash = ""; > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"analyzing file: "<<fn; SecTrace->End();}; > > > > struct passwd *pw = getpwnam(hs->User.c_str()); > if (!pw) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Cannot get pwnam structure for user "<<hs->User; SecTrace->End();}; > return -1; > } > > > if (fn.length() > 0) { > > > int uid = pw->pw_uid; > > > XrdSysPrivGuard priv(uid, pw->pw_gid); > bool go = priv.Valid(); > if (!go) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems acquiring temporarly identity: "<<hs->User; SecTrace->End();}; > } > > > String fpw(pw->pw_dir, strlen(pw->pw_dir) + fn.length() + 5); > if (go) { > fpw += ("/" + fn); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"checking file "<<fpw<<" for user "<<hs->User; SecTrace->End();}; > } > > > struct stat st; > if (go && stat(fpw.c_str(), &st) == -1) { > if ((*__errno_location ()) != 2) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot stat password file "<<fpw<<" (errno:"<<(*__errno_location ())<<")"; SecTrace->End();}; > rc = -1; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"file "<<fpw<<" does not exist"; SecTrace->End();}; > rc = 0; > } > go = 0; > } > if (go && > (!((((st.st_mode)) & 0170000) == (0100000)) || ((((st.st_mode)) & 0170000) == (0040000)) || > (st.st_mode & ((0200 >> 3) | ((0200 >> 3) >> 3) | (0400 >> 3) | ((0400 >> 3) >> 3))) != 0)) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"pass file "<<fpw<<": wrong permissions "<< (st.st_mode & 0777) << " (should be 0600)"; SecTrace->End();}; > > rc = -2; > go = 0; > } > > > if (go && (fid = open(fpw.c_str(), 00)) == -1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot open file "<<fpw<<" (errno:"<<(*__errno_location ())<<")"; SecTrace->End();}; > rc = -1; > go = 0; > } > > > char pass[128]; > if (go && (n = read(fid, pass, sizeof(pass)-1)) <= 0) { > close(fid); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot read file "<<fpw<<" (errno:"<<(*__errno_location ())<<")"; SecTrace->End();}; > rc = -1; > go = 0; > } > if (fid > -1) > close(fid); > > > if (go) { > len = n; > while (len-- && (pass[len] == '\n' || pass[len] == 32)) > pass[len] = 0; > > pass[++len] = 0; > rc = len; > > pwhash = pass; > } > } > > > if (pwhash.length() > 0) > return rc; ># 3548 "XrdSecProtocolpwd.cc" > { > > XrdSysPrivGuard priv((uid_t)0, (gid_t)0); > if (priv.Valid()) { > struct spwd *spw = 0; > > if ((spw = getspnam(hs->User.c_str())) == 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"shadow passwd not accessible to this application"; SecTrace->End();}; > } else > pwhash = spw->sp_pwdp; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"problems acquiring temporarly superuser privileges"; SecTrace->End();}; > } > } > > > > > > fn = "system"; > > > if ((rc = pwhash.length()) <= 2) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"passwd hash not available for user "<<hs->User; SecTrace->End();}; > pwhash = ""; > fn = ""; > rc = -1; > } > > > return rc; >} > > >int XrdSecProtocolpwd::QueryNetRc(String host, String &passwd, int &status) >{ ># 3596 "XrdSecProtocolpwd.cc" > const char *epname = "QueryNetRc";; > passwd = ""; > > > String fnrc = getenv("XrdSecNETRC"); > if (fnrc.length() <= 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"File name undefined"; SecTrace->End();}; > return -1; > } > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"checking file "<<fnrc<<" for user "<<hs->User; SecTrace->End();}; > > > struct stat st; > if (stat(fnrc.c_str(), &st) == -1) { > if ((*__errno_location ()) != 2) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot stat password file "<<fnrc<<" (errno:"<<(*__errno_location ())<<")"; SecTrace->End();}; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"file "<<fnrc<<" does not exist"; SecTrace->End();}; > } > return -1; > } > if (!((((st.st_mode)) & 0170000) == (0100000)) || ((((st.st_mode)) & 0170000) == (0040000)) || > (st.st_mode & ((0200 >> 3) | ((0200 >> 3) >> 3) | (0400 >> 3) | ((0400 >> 3) >> 3))) != 0) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"pass file "<<fnrc<<": wrong permissions "<< (st.st_mode & 0777) << " (should be 0600)"; SecTrace->End();}; > > return -2; > } > > FILE *fid = fopen(fnrc.c_str(), "r"); > if (!fid) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"cannot open file "<<fnrc<<" (errno:"<<(*__errno_location ())<<")"; SecTrace->End();}; > return -1; > } > char line[512]; > int nm = 0, nmmx = -1; > while (fgets(line, sizeof(line), fid) != 0) { > if (line[0] == '#') > continue; > char word[6][128]; > int nword = sscanf(line, "%s %s %s %s %s %s", word[0], word[1], > word[2], word[3], word[4], word[5]); > if (nword != 6) continue; > if (strcmp(word[0], "machine") || strcmp(word[2], "login") || > strcmp(word[4], "password")) > continue; > > if ((nm = host.matches(word[1])) > 0) { > > if (!strcmp(hs->User.c_str(),word[3])) { > > if (nm == host.length()) { > passwd = word[5]; > status = kpCI_exact; > break; > } > > if (nm > nmmx) { > nmmx = nm; > passwd = word[5]; > status = kpCI_wildcard; > } > } > } > } > > > fclose(fid); > > > if (passwd.length() > 0) > return 0; > return -1; >} > > >bool XrdSecProtocolpwd::CheckTimeStamp(XrdSutBuffer *bm, int skew, String &emsg) >{ > > > > const char *epname = "CheckTimeStamp";; > > > if (!bm || skew <= 0) { > if (!bm) > emsg = "input buffer undefined "; > else > emsg = "negative skew: invalid "; > return 0; > } > > > > if (hs->RtagOK || VeriClnt != 1) { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Nothing to do"; SecTrace->End();}; > > if (bm->GetBucket(kXRS_timestamp)) > bm->Deactivate(kXRS_timestamp); > return 1; > } > > > > kXR_int32 tstamp = 0; > if (bm->UnmarshalBucket(kXRS_timestamp,tstamp) != 0) { > emsg = "bucket with time stamp not found"; > return 0; > } > > kXR_int32 dtim = hs->TimeStamp - tstamp; > dtim = (dtim < 0) ? -dtim : dtim; > if (dtim > skew) { > emsg = "time difference too big: "; emsg += (int)dtim; > emsg += " - allowed skew: "; emsg += skew; > bm->Deactivate(kXRS_timestamp); > return 0; > } > bm->Deactivate(kXRS_timestamp); > > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Time stamp successfully checked"; SecTrace->End();}; > > > return 1; >} > > >bool XrdSecProtocolpwd::CheckRtag(XrdSutBuffer *bm, String &emsg) >{ > > const char *epname = "CheckRtag";; > > > if (!bm) { > emsg = "Buffer not defined"; > return 0; > } > > > if (hs->Cref && hs->Cref->buf1.len > 0) { > XrdSutBucket *brt = 0; > if ((brt = bm->GetBucket(kXRS_signed_rtag))) { > > if (!(hs->Hcip)) { > emsg = "Session cipher undefined"; > return 0; > } > > if (!(hs->Hcip->Decrypt(*brt))) { > emsg = "error decrypting random tag with session cipher"; > return 0; > } > } else { > emsg = "random tag missing - protocol error"; > return 0; > } > > > if (memcmp(brt->buffer,hs->Cref->buf1.buf,hs->Cref->buf1.len)) { > emsg = "random tag content mismatch"; > { if (hs->Cref) delete hs->Cref ; hs->Cref = 0; }; > > return 0; > } > > > memset(hs->Cref->buf1.buf,0,hs->Cref->buf1.len); > hs->Cref->buf1.SetBuf(); > > > hs->RtagOK = 1; > bm->Deactivate(kXRS_signed_rtag); > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Random tag successfully checked"; SecTrace->End();}; > } else { > if (SecTrace->What & 0x0001) {SecTrace->Beg(epname); cerr <<"Nothing to check"; SecTrace->End();}; > } > > > return 1; >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
Attachments on
bug 455812
: 257521