*
* *) A bugfix for the Page-Down problem
*
- * *) Formerly when I used Page Down and Page Up, the cursor would be set
+ * *) Formerly when I used Page Down and Page Up, the cursor would be set
* to the first position in the menu box. Now lxdialog is a bit
* smarter and works more like other menu systems (just have a look at
* it).
int base_idx; /* */
int undefined_idx; /* */
-
+
int overrides_offset; /* */
int multistart_offset; /* */
} der_locale_t;
return EXIT_FAILURE;
}
- init_locale_list();
+ init_locale_list();
while (--argc) {
p = (const deps_t *) bsearch(*++argv, deps, sizeof(deps)/sizeof(deps[0]), sizeof(deps[0]), dep_cmp);
return EXIT_FAILURE;
}
}
-
+
i = p->base_locale;
++der_count[i];
/* same name as base, so skip after count incremented */
continue;
}
-
+
/* add it to the list. the main body will catch duplicates */
lli = (ll_item_t *) xmalloc(sizeof(ll_item_t));
lli->prev = lli->next = NULL;
processfile(); /* this does a popfile */
/* twalk(cur_col->root_colitem, print_colnode); */
-
+
if (next_is_base == 1) {
next_is_base = 0;
}
return EXIT_SUCCESS;
}
-static void error_msg(const char *fmt, ...)
+static void error_msg(const char *fmt, ...)
{
va_list arg;
if (fno >= MAX_FNO) {
error_msg("file stack size exceeded");
}
-
+
if (!(fstack[++fno] = fopen(fbuf, "r"))) {
--fno; /* oops */
error_msg("cannot open file %s", fbuf);
r = 0; /* both null */
} else {
r = (((colitem_t *)n1)->element == NULL) ? -1 : 1;
- }
+ }
}
return r;
}
if (find_section_list_item(s, cur_col)) {
error_msg("attempt to readd script %s", s);
}
-
+
l = find_ll_last(cur_col->section_list);
insque(new_ll_item(DT_SECTION, new_section(s)), l);
}
index2weight_buffer[index2weight_len] = lli->idx = i++;
index2weight_len += index2weight_len_inc;
add_final_col_index(w->symbol);
-
+
} else {
assert(lli->data_type & DT_REORDER);
r = ll_len( ((section_t *)(lli->data))->itm_list );
continue;
}
if (index2weight_len_inc) {
- index2ruleidx_buffer[index2ruleidx_len++] =
+ index2ruleidx_buffer[index2ruleidx_len++] =
add_rule((weighted_item_t *)(lli->data));
}
/* fprintf(stdout, "%11s: w %6d %6d %s\n", */
w = (weighted_item_t *)(lli->data);
if (find_wi_index_reordered(w->symbol)) { /* reordered symbol so skip on first pass */
if (index2weight_len_inc) {
- index2ruleidx_buffer[index2ruleidx_len++] =
+ index2ruleidx_buffer[index2ruleidx_len++] =
add_rule((weighted_item_t *)(lli->data));
}
/* fprintf(stdout, "%11s: r %6d %6d %s\n", */
der_locale_array[der_locale_len].name = cur_base->name;
der_locale_array[der_locale_len].base_idx = base_locale_len;
-
+
u16_buf[0] = 1;
u16_buf[1] = 0;
u16_buf_len = 2;
/* sort */
nu_val = blocksize;
qsort(ti, numblocks, sizeof(unsigned char *), nu_memcmp);
-
+
uniq = 1;
uit[(ti[0]-ut)/blocksize] = 0;
for (i=1 ; i < numblocks ; i++) {
assert(r < (1 << 14));
rbuf[i] = r | rule2val[(int)(w->rule[i])];
} else { /* item */
- r = final_index_val_x(w->colitem[i], wi->symbol);
+ r = final_index_val_x(w->colitem[i], wi->symbol);
rbuf[i] = r | rule2val[(int)(w->rule[i])];
}
}
DUMPn(base_idx);
DUMPn(undefined_idx);
-
+
DUMPn(overrides_offset);
DUMPn(multistart_offset);
collate_pos += len;
}
-#define OUT_U16C(X,N) fprintf(fp,"\t%10d, /* %8lu %s */\n", X, collate_pos++, N);
+#define OUT_U16C(X,N) fprintf(fp,"\t%10d, /* %8lu %s */\n", X, collate_pos++, N);
static void dump_collate(FILE *fp)
{
DUMPn(wcs2colidt_offset_low);
DUMPn(wcs2colidt_offset_hi);
}
-#undef DUMPn
+#undef DUMPn
fprintf(fp, "#define COL_IDX_C %5d\n", 0);
/* collate should be last*/
assert(sizeof(__locale_collate_tbl)/sizeof(__locale_collate_tbl[0]) == __lc_collate_data_LEN) ;
out_u16(lso, __locale_collate_tbl, __lc_collate_data_LEN, "collate_data");
-
+
{
unsigned char co_buf[__LOCALE_DATA_CATEGORIES] = {
};
out_uc(lso, co_buf, __LOCALE_DATA_CATEGORIES, "lc_common_item_offsets_LEN");
}
-
+
out_size_t(lso, common_tbl_offsets, __LOCALE_DATA_CATEGORIES * 4, "lc_common_tbl_offsets");
/* offsets from start of locale_mmap_t */
/* rows, item_offsets, item_idx, data */
#if 0
{
p = at_strings;
-
+
if (!*p) {
printf("no @ strings\n");
return;
}
-
+
do {
printf("%s\n", p+1);
p += 1 + (unsigned char) *p;
printf("ignoring UTF-8 locale %s\n", ln);
*line_buf = 0;
continue;
- } else if ((i > 2) && !default_8bit) {
+ } else if ((i > 2) && !default_8bit) {
printf("ignoring 8-bit codeset locale %s\n", ln);
*line_buf = 0;
continue;
printf("ignoring UTF-8 locale %s\n", ln);
*line_buf = 0;
continue;
- } else if ((i > 2) && !default_8bit) {
+ } else if ((i > 2) && !default_8bit) {
printf("ignoring 8-bit codeset locale %s\n", ln);
*line_buf = 0;
continue;
char *s0;
char *s1;
int n;
-
+
s0 = strrchr(*argv, '/');
if (!s0) {
s0 = *argv;
if ((c != 0) || 1) {
u = towupper(c);
l = towlower(c);
-
+
if (u >= 0x80) u = csd[numsets].w2c[u];
if (l >= 0x80) l = csd[numsets].w2c[l];
printf("%#8x : towupper glibc %#4x != %#4x mine\n",
c, towupper(c), upper);
}
-
+
if (towlower(c) != lower) {
printf("%#8x : towlower glibc %#4x != %#4x mine i0 = %d\n",
c, towlower(c), lower, i0);
(unsigned long) RANGE);
output_table(fp, "ctype", &cttable);
output_table(fp, "uplow", &ultable);
-
+
#warning fix the upper bound on the upper/lower tables... save 200 bytes or so
fprintf(fp, "#define __LOCALE_DATA_WCuplow_diffs %7u\n", ul_count);
/* sort */
nu_val = blocksize;
qsort(ti, numblocks, sizeof(unsigned char *), nu_memcmp);
-
+
uniq = 1;
uit[(ti[0]-ut)/blocksize] = 0;
for (i=1 ; i < numblocks ; i++) {
#ifdef __UCLIBC_HAS_LFS__
-#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS != 64
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS != 64
#undef _FILE_OFFSET_BITS
#define _FILE_OFFSET_BITS 64
#endif
/* Copyright (c) 1983, 1989
* The Regents of the University of California. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
(__ASSERT_VOID_CAST ((expr) ? 0 : \
(__assert (__STRING(expr), __FILE__, __LINE__, \
__ASSERT_FUNCTION), 0)))
-
+
/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
which contains the name of the function currently being defined.
This is broken in G++ before version 2.6.
&& (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT)
# ifdef __LDBL_COMPAT
-# ifdef __USE_ISOC99
+# ifdef __USE_ISOC99
extern float __nldbl_nexttowardf (float __x, long double __y)
__THROW __attribute__ ((__const__));
# ifdef __REDIRECT_NTH
/*
* if_ppp.h - Point-to-Point Protocol definitions.
*
- * Copyright (c) 1989 Carnegie Mellon University.
+ * Copyright (c) 1989 Carnegie Mellon University.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
/* Error status for non-reentrant lookup functions.
We use a macro to access always the thread-specific `h_errno' variable.
- We always need the extern int here in case internal libc code undefines
+ We always need the extern int here in case internal libc code undefines
the macro because it needs access to the underlying storage. */
extern int h_errno;
#ifdef __UCLIBC_HAS_THREADS__
#ifdef __cplusplus
extern "C" {
#endif
-\f
+
/* We use subtraction of (char *) 0 instead of casting to int
because on word-addressable machines a simple cast to int
may ignore the byte-within-word field of the pointer. */
extern int _obstack_begin_1 ();
extern int _obstack_memory_used ();
#endif
-\f
+
#if defined __STDC__ && __STDC__
/* Do the function-declarations after the structs
/* Exit value used when `print_and_abort' is used. */
extern int obstack_exit_failure;
-\f
+
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
#define obstack_memory_used(h) _obstack_memory_used (h)
-\f
+
#if defined __GNUC__ && defined __STDC__ && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
does not implement __extension__. But that compiler doesn't define
if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
__o->next_free = __o->object_base = (char *)__obj; \
else (obstack_free) (__o, __obj); })
-\f
+
#else /* not __GNUC__ or not __STDC__ */
# define obstack_object_size(h) \
stored in the pattern buffer, so changing this does not affect
already-compiled regexps. */
extern reg_syntax_t re_syntax_options;
-\f
+
/* Define combinations of the above bits for the standard possibilities.
(The [[[ comments delimit what gets put into the Texinfo file, so
don't delete them!) */
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
/* [[[end syntaxes]]] */
-\f
+
/* Maximum number of duplicates an interval can allow. Some systems
(erroneously) define this in other header files, but we want our
value, so remove any previous define. */
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
} reg_errcode_t;
-\f
+
/* This data structure represents a compiled pattern. Before calling
the pattern compiler, the fields `buffer', `allocated', `fastmap',
`translate', and `no_sub' can be set. After the pattern has been
};
typedef struct re_pattern_buffer regex_t;
-\f
+
/* Type for byte offsets within the string. POSIX mandates this. */
typedef int regoff_t;
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
} regmatch_t;
-\f
+
/* Declarations for routines. */
/* To avoid duplicating every routine declaration -- once with a
#endif
/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
-/*
+/*
* Compiled from key_prot.x using rpcgen.
* DO NOT EDIT THIS FILE!
* This is NOT source code!
KEY_SYSTEMERR = 3,
};
typedef enum keystatus keystatus;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_keystatus(XDR *, keystatus*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_keystatus(XDR *, keystatus*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_keystatus();
-#endif /* Old Style C */
+#endif /* Old Style C */
typedef char keybuf[HEXKEYBYTES];
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_keybuf(XDR *, keybuf);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_keybuf(XDR *, keybuf);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_keybuf();
-#endif /* Old Style C */
+#endif /* Old Style C */
typedef char *netnamestr;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_netnamestr(XDR *, netnamestr*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_netnamestr(XDR *, netnamestr*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_netnamestr();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyarg {
des_block deskey;
};
typedef struct cryptkeyarg cryptkeyarg;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyarg();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyarg2 {
des_block deskey;
};
typedef struct cryptkeyarg2 cryptkeyarg2;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyarg2();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyres {
} cryptkeyres_u;
};
typedef struct cryptkeyres cryptkeyres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyres();
-#endif /* Old Style C */
+#endif /* Old Style C */
#define MAXGIDS 16
} gids;
};
typedef struct unixcred unixcred;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_unixcred(XDR *, unixcred*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_unixcred(XDR *, unixcred*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_unixcred();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct getcredres {
} getcredres_u;
};
typedef struct getcredres getcredres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_getcredres(XDR *, getcredres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_getcredres(XDR *, getcredres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_getcredres();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct key_netstarg {
netnamestr st_netname;
};
typedef struct key_netstarg key_netstarg;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_key_netstarg(XDR *, key_netstarg*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_key_netstarg(XDR *, key_netstarg*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_key_netstarg();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct key_netstres {
} key_netstres_u;
};
typedef struct key_netstres key_netstres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_key_netstres(XDR *, key_netstres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_key_netstres(XDR *, key_netstres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_key_netstres();
-#endif /* Old Style C */
+#endif /* Old Style C */
#ifndef opaque
extern getcredres * key_getcred_1(netnamestr *, CLIENT *);
extern getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *);
-#else /* Old Style C */
+#else /* Old Style C */
#define KEY_SET ((u_long)1)
extern keystatus * key_set_1();
extern keystatus * key_set_1_svc();
#define KEY_GETCRED ((u_long)5)
extern getcredres * key_getcred_1();
extern getcredres * key_getcred_1_svc();
-#endif /* Old Style C */
+#endif /* Old Style C */
#define KEY_VERS2 ((u_long)2)
#ifdef __cplusplus
extern cryptkeyres * key_get_conv_2(opaque *, CLIENT *);
extern cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *);
-#else /* Old Style C */
+#else /* Old Style C */
extern keystatus * key_set_2();
extern keystatus * key_set_2_svc();
extern cryptkeyres * key_encrypt_2();
#define KEY_GET_CONV ((u_long)10)
extern cryptkeyres * key_get_conv_2();
extern cryptkeyres * key_get_conv_2_svc();
-#endif /* Old Style C */
+#endif /* Old Style C */
#endif /* !_KEY_PROT_H_RPCGEN */
* may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or
* program developed by the user.
- *
+ *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
+ *
* Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement.
- *
+ *
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF.
- *
+ *
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages.
- *
+ *
* Sun Microsystems, Inc.
* 2550 Garcia Avenue
* Mountain View, California 94043
02111-1307 USA. */
#ifndef _SCSI_IOCTL_H
-#define _SCSI_IOCTL_H
+#define _SCSI_IOCTL_H
/* IOCTLs for SCSI. */
#define SCSI_IOCTL_SEND_COMMAND 1 /* Send a command to the SCSI host. */
# define UINTPTR_MAX (4294967295U)
# endif
-#if !defined(__H8300H__) && !defined(__H8300S__)
+#if !defined(__H8300H__) && !defined(__H8300S__)
/* Minimum for largest signed integral type. */
# define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
/* Maximum for largest signed integral type. */
These go in the low byte. Avoid using the top bit, it will
conflict with error returns. */
-enum
+enum
{
PER_LINUX = 0x0000,
PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
/* Current number of elements. */
size_t n_elements;
-};
+};
inline static int
hash_pointer (const void *p)
ht->entries = _dl_malloc (sizeof (struct funcdesc_ht_value *) * ht->size);
if (! ht->entries)
return NULL;
-
+
ht->n_elements = 0;
_dl_memset (ht->entries, 0, sizeof (struct funcdesc_ht_value *) * ht->size);
-
+
return ht;
}
goto empty_entry;
else if ((*entry)->entry_point == ptr)
return entry;
-
+
hash2 = 1 + hash % (size - 2);
for (;;)
{
index += hash2;
if (index >= size)
index -= size;
-
+
entry = &htab->entries[index];
if (!*entry)
goto empty_entry;
if ((Elf32_Addr)address & 7)
/* It's not a function descriptor. */
return address;
-
+
fd = (struct funcdesc_value const *)address;
for (rpnt = _dl_loaded_modules; rpnt; rpnt = rpnt->next)
else
address = fd;
}
-
+
return address;
}
(tryaddr = 0,
size = (ppnt->p_vaddr & ADDR_ALIGN) + ppnt->p_filesz,
LXFLAGS(ppnt->p_flags),
- flags | MAP_EXECUTABLE | MAP_DENYWRITE,
+ flags | MAP_EXECUTABLE | MAP_DENYWRITE,
infile, ppnt->p_offset & OFFS_ALIGN);
if (_dl_mmap_check_error(status)
|| (tryaddr && tryaddr != status))
License along with uClibc; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
USA. */
-
+
/* Any assembly language/system dependent hacks needed to setup
* boot1.c so it will work as expected and cope with whatever platform
* specific wierdness is needed for this architecture.
} \
\
} \
-while (0)
+while (0)
/* We want want to apply all relocations in the interpreter during
bootstrap. Because of this, we have to skip the interpreter
symname= strtab + symtab[symtab_index].st_name;
if (reloc_type != R_BFIN_FUNCDESC_VALUE) {
- _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n",
+ _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n",
_dl_progname);
_dl_exit(1);
}
if (_dl_debug_bindings) {
_dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
if (_dl_debug_detail)
- _dl_dprintf(_dl_debug_file,
+ _dl_dprintf(_dl_debug_file,
"\n\tpatched (%x,%x) ==> (%x,%x) @ %x\n",
got_entry->entry_point, got_entry->got_value,
funcval.entry_point, funcval.got_value,
for (i = 0; i < rel_size; i++, rpnt++) {
int res;
-
+
symtab_index = ELF_R_SYM(rpnt->r_info);
debug_sym(symtab,strtab,symtab_index);
debug_reloc(symtab,strtab,rpnt);
if (res==0) continue;
_dl_dprintf(2, "\n%s: ",_dl_progname);
-
+
if (symtab_index)
_dl_dprintf(2, "symbol '%s': ", strtab + symtab[symtab_index].st_name);
-
+
if (res <0) {
int reloc_type = ELF_R_TYPE(rpnt->r_info);
#if defined (__SUPPORT_LD_DEBUG__)
_dl_dprintf(2, "can't handle reloc type %s\n ", _dl_reltypes(reloc_type));
#else
_dl_dprintf(2, "can't handle reloc type %x\n", reloc_type);
-#endif
+#endif
_dl_exit(-res);
} else if (res >0) {
_dl_dprintf(2, "can't resolve symbol\n");
/* Current number of elements. */
size_t n_elements;
-};
+};
inline static int
hash_pointer (const void *p)
ht->entries = _dl_malloc (sizeof (struct funcdesc_ht_value *) * ht->size);
if (! ht->entries)
return NULL;
-
+
ht->n_elements = 0;
_dl_memset (ht->entries, 0, sizeof (struct funcdesc_ht_value *) * ht->size);
-
+
return ht;
}
goto empty_entry;
else if ((*entry)->entry_point == ptr)
return entry;
-
+
hash2 = 1 + hash % (size - 2);
for (;;)
{
index += hash2;
if (index >= size)
index -= size;
-
+
entry = &htab->entries[index];
if (!*entry)
goto empty_entry;
if ((Elf32_Addr)address & 7)
/* It's not a function descriptor. */
return address;
-
+
fd = (struct funcdesc_value const *)address;
for (rpnt = _dl_loaded_modules; rpnt; rpnt = rpnt->next)
else
address = fd;
}
-
+
return address;
}
_dl_close(infile); \
} \
} \
-while (0)
+while (0)
/* We want want to apply all relocations in the interpreter during
bootstrap. Because of this, we have to skip the interpreter
#define DL_GET_READY_TO_RUN_EXTRA_ARGS \
, dl_boot_progmap
-
+
#ifdef __USE_GNU
symname= strtab + symtab[symtab_index].st_name;
if (reloc_type != R_FRV_FUNCDESC_VALUE) {
- _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n",
+ _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n",
_dl_progname);
_dl_exit(1);
}
{
_dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
if (_dl_debug_detail)
- _dl_dprintf(_dl_debug_file,
+ _dl_dprintf(_dl_debug_file,
"\n\tpatched (%x,%x) ==> (%x,%x) @ %x\n",
got_entry->entry_point, got_entry->got_value,
funcval.entry_point, funcval.got_value,
for (i = 0; i < rel_size; i++, rpnt++) {
int res;
-
+
symtab_index = ELF32_R_SYM(rpnt->r_info);
debug_sym(symtab,strtab,symtab_index);
debug_reloc(symtab,strtab,rpnt);
if (res==0) continue;
_dl_dprintf(2, "\n%s: ",_dl_progname);
-
+
if (symtab_index)
_dl_dprintf(2, "symbol '%s': ", strtab + symtab[symtab_index].st_name);
-
+
if (res <0)
{
int reloc_type = ELF32_R_TYPE(rpnt->r_info);
_dl_dprintf(2, "can't handle reloc type %s\n ", _dl_reltypes(reloc_type));
#else
_dl_dprintf(2, "can't handle reloc type %x\n", reloc_type);
-#endif
+#endif
_dl_exit(-res);
}
else if (res >0)
/* vi: set sw=4 ts=4: */
/*
* Various assmbly language/system dependent hacks that are required
- * so that we can minimize the amount of platform specific code.
+ * so that we can minimize the amount of platform specific code.
* Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org>
*/
{
Elf32_Rela * rpnt = (void *)rel_addr;
--rpnt;
- do { /* PowerPC handles pre increment/decrement better */
+ do { /* PowerPC handles pre increment/decrement better */
Elf32_Addr *const reloc_addr = (void *) (load_off + (++rpnt)->r_offset);
*reloc_addr = load_off + rpnt->r_addend;
#endif
reloc_addr = (Elf32_Addr *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
reloc_type = ELF32_R_TYPE(rpnt->r_info);
- symbol_addr = tpnt->loadaddr; /* For R_PPC_RELATIVE */
+ symbol_addr = tpnt->loadaddr; /* For R_PPC_RELATIVE */
symtab_index = ELF32_R_SYM(rpnt->r_info);
symname = strtab + symtab[symtab_index].st_name;
if (symtab_index) {
symtab = (Elf32_Sym *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
-
+
for (i = 0; i < rel_size; i++, rpnt++) {
int res;
elf_machine_dynamic (void)
{
register Elf32_Addr *got __asm__ ("%l7");
-
+
LOAD_PIC_REG (got);
-
+
return *got;
}
elf_machine_load_address (void)
{
register Elf32_Addr *pc __asm__ ("%o7"), *got __asm ("%l7");
-
+
__asm__ ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t"
"call 1f\n\t"
" add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t"
"call _DYNAMIC\n\t"
"call _GLOBAL_OFFSET_TABLE_\n"
"1:\tadd %1, %0, %1\n\t" : "=r" (pc), "=r" (got));
-
+
/* got is now l_addr + _GLOBAL_OFFSET_TABLE_
*got is _DYNAMIC
pc[2]*4 is l_addr + _DYNAMIC - (long)pc - 8
* Copyright (C) 2007 Tensilica Inc.
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- * Parts taken from glibc/sysdeps/xtensa/dl-machine.h.
+ * Parts taken from glibc/sysdeps/xtensa/dl-machine.h.
*/
__asm__ (
/*
- * Copyright 1996 by Craig Metz
+ * Copyright 1996 by Craig Metz
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
* Portions from the GNU C library,
* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
}
else
{
- /*
+ /*
* Neither socket type nor protocol is set. Return all socket types
* we know about.
*/
sin6p->sin6_addr.s6_addr32[0] = 0;
sin6p->sin6_addr.s6_addr32[1] = 0;
sin6p->sin6_addr.s6_addr32[2] = htonl(0x0000ffff);
- memcpy(&sin6p->sin6_addr.s6_addr32[3],
+ memcpy(&sin6p->sin6_addr.s6_addr32[3],
at2->addr, sizeof (sin6p->sin6_addr.s6_addr32[3]));
}
sin6p->sin6_port = st2->port;
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Library General Public License for more details.
-**
+**
** You should have received a copy of the GNU Library General Public
** License along with the NYS Library; see the file COPYING.LIB. If
** not, write to the Free Software Foundation, Inc., 675 Mass Ave,
libc_hidden_proto(if_nametoindex)
unsigned int
-if_nametoindex(const char* ifname)
+if_nametoindex(const char* ifname)
{
#ifndef SIOCGIFINDEX
__set_errno (ENOSYS);
#ifdef __UCLIBC_HAS_IPV6__
/* We cannot use the macro version of tolower() or very bad
- * things happen when '*src++' gets evaluated multiple times.
+ * things happen when '*src++' gets evaluated multiple times.
* So undef it here so we get the function version of tolower
* instead.
*/
case RPC_CANTSEND:
case RPC_CANTRECV:
__glibc_strerror_r (e.re_errno, chrbuf, sizeof chrbuf);
- len = sprintf (str, "; errno = %s", chrbuf);
+ len = sprintf (str, "; errno = %s", chrbuf);
str += len;
break;
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- */
+ */
#if 0
static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94";
/* some forward declarations */
static int __ivaliduser2(FILE *hostf, u_int32_t raddr,
const char *luser, const char *ruser, const char *rhost);
-static int iruserok2 (u_int32_t raddr, int superuser, const char *ruser,
+static int iruserok2 (u_int32_t raddr, int superuser, const char *ruser,
const char *luser, const char *rhost);
tmphstbuf = malloc (hstbuflen);
#endif
- while (gethostbyname_r (*ahost, &hostbuf, tmphstbuf,
+ while (gethostbyname_r (*ahost, &hostbuf, tmphstbuf,
hstbuflen, &hp, &herr) != 0 || hp == NULL)
{
if (herr != NETDB_INTERNAL || errno != ERANGE)
#endif
pfd[0].events = POLLIN;
pfd[1].events = POLLIN;
-
+
*ahost = hp->h_name;
oldmask = sigblock(sigmask(SIGURG)); /* __sigblock */
for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
return -1;
}
}
-
+
return -1;
}
libc_hidden_def(rresvport)
buffer = malloc (buflen);
#endif
- while (gethostbyname_r (rhost, &hostbuf, buffer,
- buflen, &hp, &herr) != 0 || hp == NULL)
+ while (gethostbyname_r (rhost, &hostbuf, buffer,
+ buflen, &hp, &herr) != 0 || hp == NULL)
{
if (herr != NETDB_INTERNAL || errno != ERANGE) {
#ifndef __ARCH_USE_MMU__
if (!superuser)
hostf = iruserfopen (_PATH_HEQUIV, 0);
-
+
if (hostf) {
isbad = __ivaliduser2 (hostf, raddr, luser, ruser, rhost);
fclose (hostf);
char *buffer = malloc (buflen);
#endif
- if (getpwnam_r (luser, &pwdbuf, buffer,
+ if (getpwnam_r (luser, &pwdbuf, buffer,
buflen, &pwd) != 0 || pwd == NULL)
{
#ifndef __ARCH_USE_MMU__
seteuid (pwd->pw_uid);
hostf = iruserfopen (pbuf, pwd->pw_uid);
free(pbuf);
-
+
if (hostf != NULL) {
isbad = __ivaliduser2 (hostf, raddr, luser, ruser, rhost);
fclose (hostf);
}
-
+
seteuid (uid);
return isbad;
}
/* -4 M-| */ 0,
/* -3 M-} */ 0,
/* -2 M-~ */ 0,
-#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
+#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
/* -1 M-^? */ 0,
/* 0 ^@ */ _IScntrl,
/* 1 ^A */ _IScntrl,
-12, -11, -10, -9,
-8, -7, -6, -5,
-4, -3, -2, -1,
-#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
+#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,
-12, -11, -10, -9,
-8, -7, -6, -5,
-4, -3, -2, -1,
-#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
+#endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,
/* total size of buffer */
size_t dd_max;
-
+
/* lock */
__UCLIBC_MUTEX(dd_lock);
}; /* stream data from opendir() */
libc_hidden_proto(closedir)
libc_hidden_proto(qsort)
-int scandir(const char *dir, struct dirent ***namelist,
+int scandir(const char *dir, struct dirent ***namelist,
int (*selector) (const struct dirent *),
int (*compar) (const void *, const void *))
{
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA.
+ 02111-1307 USA.
*/
/* Modified for uClibc by Erik Andersen
libc_hidden_proto(qsort)
libc_hidden_proto(readdir64)
-int scandir64(const char *dir, struct dirent64 ***namelist,
+int scandir64(const char *dir, struct dirent64 ***namelist,
int (*selector) (const struct dirent64 *),
int (*compar) (const void *, const void *))
{
size_t cnt, i;
size_t offs = (flags & GLOB_DOOFFS) ? g->gl_offs : 0;
int error = 0;
-
+
if (*p == '/') {
for (; *p == '/'; p++);
d = "/";
__glob_freelist(&head);
return error;
}
-
+
for (cnt=0, tail=head.next; tail; tail=tail->next, cnt++);
if (!cnt) {
if (flags & GLOB_NOCHECK) {
if (!(flags & GLOB_NOSORT))
qsort(g->gl_pathv+offs, cnt, sizeof(char *), __glob_sort);
-
+
return error;
}
#ifdef __GLOB64
#define globfree(pglob) globfree64 (pglob)
#define __GLOB64 1
-
+
#include "glob-susv3.c"
} while (0)
# endif
-\f
+
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
Objects start on multiples of ALIGNMENT (0 means use default).
CHUNKFUN is the function to use to allocate chunks,
}
return lp != 0;
}
-\f
+
/* Free objects in obstack H, including OBJ and everything allocate
more recently than OBJ. If OBJ is zero, free everything in H. */
/* obj is not in any of the chunks! */
abort ();
}
-\f
+
int
_obstack_memory_used (
struct obstack *h)
}
return nbytes;
}
-\f
+
/* Define the error handler. */
# ifndef _
/* # if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC */
fprintf (stderr, "%s\n", _("memory exhausted"));
exit (obstack_exit_failure);
}
-\f
+
# if 0
/* These are now turned off because the applications do not use it
and it uses bcopy via obstack_grow, which causes trouble on sysV. */
-#ifndef __TEMPNAME_H__
+#ifndef __TEMPNAME_H__
#define __TEMPNAME_H__
#define __need_size_t
#include <stddef.h>
/* Disable support for $TMPDIR */
-extern int ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
+extern int ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
const char *pfx /*, int try_tmpdir */) attribute_hidden;
#define __path_search(tmpl, tmpl_len, dir, pfx, try_tmpdir) ___path_search(tmpl, tmpl_len, dir, pfx)
#ifdef __UCLIBC_MJN3_ONLY__
#warning TODO: Fix dimensions of hr_locale.
#endif
-/* Individual category strings start at hr_locale + category * MAX_LOCALE_CATEGORY.
+/* Individual category strings start at hr_locale + category * MAX_LOCALE_CATEGORY.
* This holds for LC_ALL as well.
*/
static char hr_locale[(MAX_LOCALE_CATEGORY_STR * LC_ALL) + MAX_LOCALE_STR];
x = (const char **)(((char *) base)
+ base->category_offsets[i]);
-
+
stp = __locale_mmap->lc_common_tbl_offsets + 4*i;
r = (const unsigned char *)( ((char *)__locale_mmap) + *stp );
io = (const uint16_t *)( ((char *)__locale_mmap) + *++stp );
[ ((int)(c8b->idx8uplow
[u >> __LOCALE_DATA_Cuplow_IDX_SHIFT])
<< __LOCALE_DATA_Cuplow_IDX_SHIFT)
- + ((128 + u)
+ + ((128 + u)
& ((1 << __LOCALE_DATA_Cuplow_IDX_SHIFT)
- 1)) ];
if (m & _ISlower) {
assert(base->thousands_sep_len > 0);
assert(base->thousands_sep[base->thousands_sep_len] == 0);
#endif
- }
+ }
/* } else if (i == LC_COLLATE) { */
/* init_cur_collate(__locale_mmap->locales[ __LOCALE_DATA_WIDTH_LOCALES */
static const unsigned char nl_data[C_LC_ALL + 1 + 90 + 320] = {
/* static const char cat_start[LC_ALL + 1] = { */
- '\x00', '\x0b', '\x0e', '\x24', '\x56', '\x56', '\x5a',
+ '\x00', '\x0b', '\x0e', '\x24', '\x56', '\x56', '\x5a',
/* }; */
/* static const char item_offset[90] = { */
- '\x00', '\x02', '\x04', '\x06', '\x08', '\x0a', '\x0c', '\x0e',
- '\x10', '\x12', '\x14', '\x1a', '\x1b', '\x1b', '\x1b', '\x1b',
- '\x1b', '\x1b', '\x1b', '\x1b', '\x1b', '\x1c', '\x1c', '\x1c',
- '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c',
- '\x1c', '\x1c', '\x1c', '\x1e', '\x20', '\x24', '\x28', '\x2c',
- '\x30', '\x34', '\x38', '\x3c', '\x43', '\x4a', '\x52', '\x5c',
- '\x65', '\x6c', '\x75', '\x79', '\x7d', '\x81', '\x85', '\x89',
- '\x8d', '\x91', '\x95', '\x99', '\x9d', '\xa1', '\xa5', '\xad',
- '\x36', '\x3c', '\x42', '\x46', '\x4b', '\x50', '\x57', '\x61',
- '\x69', '\x72', '\x7b', '\x7e', '\x81', '\x96', '\x9f', '\xa8',
- '\xb3', '\xb3', '\xb3', '\xb3', '\xb3', '\xb3', '\xb4', '\xba',
- '\xbf', '\xbf',
+ '\x00', '\x02', '\x04', '\x06', '\x08', '\x0a', '\x0c', '\x0e',
+ '\x10', '\x12', '\x14', '\x1a', '\x1b', '\x1b', '\x1b', '\x1b',
+ '\x1b', '\x1b', '\x1b', '\x1b', '\x1b', '\x1c', '\x1c', '\x1c',
+ '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c', '\x1c',
+ '\x1c', '\x1c', '\x1c', '\x1e', '\x20', '\x24', '\x28', '\x2c',
+ '\x30', '\x34', '\x38', '\x3c', '\x43', '\x4a', '\x52', '\x5c',
+ '\x65', '\x6c', '\x75', '\x79', '\x7d', '\x81', '\x85', '\x89',
+ '\x8d', '\x91', '\x95', '\x99', '\x9d', '\xa1', '\xa5', '\xad',
+ '\x36', '\x3c', '\x42', '\x46', '\x4b', '\x50', '\x57', '\x61',
+ '\x69', '\x72', '\x7b', '\x7e', '\x81', '\x96', '\x9f', '\xa8',
+ '\xb3', '\xb3', '\xb3', '\xb3', '\xb3', '\xb3', '\xb4', '\xba',
+ '\xbf', '\xbf',
/* }; */
/* static const char C_locale_data[320] = { */
- '0', '\x00', '1', '\x00', '2', '\x00', '3', '\x00',
- '4', '\x00', '5', '\x00', '6', '\x00', '7', '\x00',
- '8', '\x00', '9', '\x00', 'A', 'S', 'C', 'I',
- 'I', '\x00', '.', '\x00', '\x7f', '\x00', '-', '\x00',
- 'S', 'u', 'n', '\x00', 'M', 'o', 'n', '\x00',
- 'T', 'u', 'e', '\x00', 'W', 'e', 'd', '\x00',
- 'T', 'h', 'u', '\x00', 'F', 'r', 'i', '\x00',
- 'S', 'a', 't', '\x00', 'S', 'u', 'n', 'd',
- 'a', 'y', '\x00', 'M', 'o', 'n', 'd', 'a',
- 'y', '\x00', 'T', 'u', 'e', 's', 'd', 'a',
- 'y', '\x00', 'W', 'e', 'd', 'n', 'e', 's',
- 'd', 'a', 'y', '\x00', 'T', 'h', 'u', 'r',
- 's', 'd', 'a', 'y', '\x00', 'F', 'r', 'i',
- 'd', 'a', 'y', '\x00', 'S', 'a', 't', 'u',
- 'r', 'd', 'a', 'y', '\x00', 'J', 'a', 'n',
- '\x00', 'F', 'e', 'b', '\x00', 'M', 'a', 'r',
- '\x00', 'A', 'p', 'r', '\x00', 'M', 'a', 'y',
- '\x00', 'J', 'u', 'n', '\x00', 'J', 'u', 'l',
- '\x00', 'A', 'u', 'g', '\x00', 'S', 'e', 'p',
- '\x00', 'O', 'c', 't', '\x00', 'N', 'o', 'v',
- '\x00', 'D', 'e', 'c', '\x00', 'J', 'a', 'n',
- 'u', 'a', 'r', 'y', '\x00', 'F', 'e', 'b',
- 'r', 'u', 'a', 'r', 'y', '\x00', 'M', 'a',
- 'r', 'c', 'h', '\x00', 'A', 'p', 'r', 'i',
- 'l', '\x00', 'M', 'a', 'y', '\x00', 'J', 'u',
- 'n', 'e', '\x00', 'J', 'u', 'l', 'y', '\x00',
- 'A', 'u', 'g', 'u', 's', 't', '\x00', 'S',
- 'e', 'p', 't', 'e', 'm', 'b', 'e', 'r',
- '\x00', 'O', 'c', 't', 'o', 'b', 'e', 'r',
- '\x00', 'N', 'o', 'v', 'e', 'm', 'b', 'e',
- 'r', '\x00', 'D', 'e', 'c', 'e', 'm', 'b',
- 'e', 'r', '\x00', 'A', 'M', '\x00', 'P', 'M',
- '\x00', '%', 'a', ' ', '%', 'b', ' ', '%',
- 'e', ' ', '%', 'H', ':', '%', 'M', ':',
- '%', 'S', ' ', '%', 'Y', '\x00', '%', 'm',
- '/', '%', 'd', '/', '%', 'y', '\x00', '%',
- 'H', ':', '%', 'M', ':', '%', 'S', '\x00',
- '%', 'I', ':', '%', 'M', ':', '%', 'S',
- ' ', '%', 'p', '\x00', '^', '[', 'y', 'Y',
- ']', '\x00', '^', '[', 'n', 'N', ']', '\x00',
+ '0', '\x00', '1', '\x00', '2', '\x00', '3', '\x00',
+ '4', '\x00', '5', '\x00', '6', '\x00', '7', '\x00',
+ '8', '\x00', '9', '\x00', 'A', 'S', 'C', 'I',
+ 'I', '\x00', '.', '\x00', '\x7f', '\x00', '-', '\x00',
+ 'S', 'u', 'n', '\x00', 'M', 'o', 'n', '\x00',
+ 'T', 'u', 'e', '\x00', 'W', 'e', 'd', '\x00',
+ 'T', 'h', 'u', '\x00', 'F', 'r', 'i', '\x00',
+ 'S', 'a', 't', '\x00', 'S', 'u', 'n', 'd',
+ 'a', 'y', '\x00', 'M', 'o', 'n', 'd', 'a',
+ 'y', '\x00', 'T', 'u', 'e', 's', 'd', 'a',
+ 'y', '\x00', 'W', 'e', 'd', 'n', 'e', 's',
+ 'd', 'a', 'y', '\x00', 'T', 'h', 'u', 'r',
+ 's', 'd', 'a', 'y', '\x00', 'F', 'r', 'i',
+ 'd', 'a', 'y', '\x00', 'S', 'a', 't', 'u',
+ 'r', 'd', 'a', 'y', '\x00', 'J', 'a', 'n',
+ '\x00', 'F', 'e', 'b', '\x00', 'M', 'a', 'r',
+ '\x00', 'A', 'p', 'r', '\x00', 'M', 'a', 'y',
+ '\x00', 'J', 'u', 'n', '\x00', 'J', 'u', 'l',
+ '\x00', 'A', 'u', 'g', '\x00', 'S', 'e', 'p',
+ '\x00', 'O', 'c', 't', '\x00', 'N', 'o', 'v',
+ '\x00', 'D', 'e', 'c', '\x00', 'J', 'a', 'n',
+ 'u', 'a', 'r', 'y', '\x00', 'F', 'e', 'b',
+ 'r', 'u', 'a', 'r', 'y', '\x00', 'M', 'a',
+ 'r', 'c', 'h', '\x00', 'A', 'p', 'r', 'i',
+ 'l', '\x00', 'M', 'a', 'y', '\x00', 'J', 'u',
+ 'n', 'e', '\x00', 'J', 'u', 'l', 'y', '\x00',
+ 'A', 'u', 'g', 'u', 's', 't', '\x00', 'S',
+ 'e', 'p', 't', 'e', 'm', 'b', 'e', 'r',
+ '\x00', 'O', 'c', 't', 'o', 'b', 'e', 'r',
+ '\x00', 'N', 'o', 'v', 'e', 'm', 'b', 'e',
+ 'r', '\x00', 'D', 'e', 'c', 'e', 'm', 'b',
+ 'e', 'r', '\x00', 'A', 'M', '\x00', 'P', 'M',
+ '\x00', '%', 'a', ' ', '%', 'b', ' ', '%',
+ 'e', ' ', '%', 'H', ':', '%', 'M', ':',
+ '%', 'S', ' ', '%', 'Y', '\x00', '%', 'm',
+ '/', '%', 'd', '/', '%', 'y', '\x00', '%',
+ 'H', ':', '%', 'M', ':', '%', 'S', '\x00',
+ '%', 'I', ':', '%', 'M', ':', '%', 'S',
+ ' ', '%', 'p', '\x00', '^', '[', 'y', 'Y',
+ ']', '\x00', '^', '[', 'n', 'N', ']', '\x00',
};
libc_hidden_proto(nl_langinfo)
libc_hidden_proto(fprintf)
/* Reentrant version of getmntent. */
-struct mntent *getmntent_r (FILE *filep,
+struct mntent *getmntent_r (FILE *filep,
struct mntent *mnt, char *buff, int bufsize)
{
char *cp, *ptrptr;
static char *buff = NULL;
static struct mntent mnt;
__UCLIBC_MUTEX_LOCK(mylock);
-
+
if (!buff) {
buff = malloc(BUFSIZ);
if (!buff)
abort();
}
-
+
tmp = getmntent_r(filep, &mnt, buff, BUFSIZ);
__UCLIBC_MUTEX_UNLOCK(mylock);
return(tmp);
static void free_token (re_token_t *node);
static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
-\f
+
/* This table gives an error message for each of the error codes listed
in regex.h. Obviously the order here has to be same as there.
POSIX doesn't require that we do anything for REG_NOERROR,
REG_ESIZE_IDX,
REG_ERPAREN_IDX
};
-\f
+
/* Entry points for GNU code. */
/* re_compile_pattern is the GNU regular expression compiler: it
}
}
}
-\f
+
/* Entry point for POSIX code. */
/* regcomp takes a regular expression as a string and compiles it.
#if defined _LIBC || defined __UCLIBC__
strong_alias(__regfree, regfree)
#endif
-\f
+
/* Entry points compatible with 4.2 BSD regex library. We don't define
them unless specifically requested. */
#endif
#endif /* _REGEX_RE_COMP */
-\f
+
/* Internal entry point.
Compile the regular expression PATTERN, whose length is LENGTH.
SYNTAX indicate regular expression's syntax. */
re_node_set_free (&init_nodes);
return REG_NOERROR;
}
-\f
+
#ifdef RE_ENABLE_I18N
/* If it is possible to do searching in single byte encoding instead of UTF-8
to speed things up, set dfa->mb_cur_max to 1, clear is_utf8 and change
dfa->has_mb_node = dfa->nbackref > 0 || has_period;
}
#endif
-\f
+
/* Analyze the structure tree, and calculate "first", "next", "edest",
"eclosure", and "inveclosure". */
*new_set = eclosure;
return REG_NOERROR;
}
-\f
+
/* Functions for token which are used in the parser. */
/* Fetch a token from INPUT.
}
return 1;
}
-\f
+
/* Functions for parser. */
/* Entry point of the parser.
}
return num;
}
-\f
+
#ifdef RE_ENABLE_I18N
static void
free_charset (re_charset_t *cset)
re_free (cset);
}
#endif /* RE_ENABLE_I18N */
-\f
+
/* Functions for binary tree operation. */
/* Create a tree node. */
const re_node_set *nodes,
unsigned int context,
unsigned int hash) internal_function;
-\f
+
/* Functions for string operation. */
/* This function allocate the buffers. It is necessary to call
return IS_NEWLINE (c) && input->newline_anchor ? CONTEXT_NEWLINE : 0;
}
}
-\f
+
/* Functions for set operation. */
static reg_errcode_t
for (; idx < set->nelem; idx++)
set->elems[idx] = set->elems[idx + 1];
}
-\f
+
/* Add the token TOKEN to dfa->nodes, and return the index of the token.
Or return -1, if an error will be occured. */
(re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
#define re_node_set_empty(p) ((p)->nelem = 0)
#define re_node_set_free(set) re_free ((set)->elems)
-\f
+
typedef enum
{
# ifndef MB_LEN_MAX
# define MB_LEN_MAX 1
# endif
-\f
+
/* Get the interface, including the syntax bits. */
# ifdef __UCLIBC__
# include "_regex.h"
/* As in Harbison and Steele. */
# define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128)
# endif
-\f
+
# ifndef emacs
/* How many characters in the character set. */
# define CHAR_SET_SIZE 256
# define SYNTAX(c) re_syntax_table[(unsigned char) (c)]
# endif /* emacs */
-\f
+
/* Integer type for pointers. */
# if !defined _LIBC && !defined __intptr_t_defined
typedef unsigned long int uintptr_t;
struct re_registers *regs, int stop));
static int wcs_re_compile_fastmap PARAMS ((struct re_pattern_buffer *bufp));
#endif
-\f
+
/* These are the command codes that appear in compiled regular
expressions. Some opcodes are followed by argument bytes. A
command code can specify any interpretation whatsoever for its
# endif /* emacs */
} re_opcode_t;
#endif /* not INSIDE_RECURSION */
-\f
+
#ifdef BYTE
# define CHAR_T char
# endif /* DEBUG */
-\f
+
/* If DEBUG is defined, Regex prints many voluminous messages about what
it is doing (if the variable `debug' is nonzero). If linked with the
# endif /* not DEBUG */
-\f
+
# ifdef WCHAR
/* This convert a multibyte string to a wide character string.
# if defined _LIBC || defined __UCLIBC__
strong_alias(__re_set_syntax, re_set_syntax)
# endif
-\f
+
/* This table gives an error message for each of the error codes listed
in regex.h. Obviously the order here has to be same as there.
POSIX doesn't require that we do anything for REG_NOERROR,
REG_ESIZE_IDX,
REG_ERPAREN_IDX
};
-\f
+
#endif /* INSIDE_RECURSION */
#ifndef DEFINED_ONCE
# undef MATCH_MAY_ALLOCATE
# endif
#endif /* not DEFINED_ONCE */
-\f
+
#ifdef INSIDE_RECURSION
/* Failure stack declarations and macros; both re_compile_fastmap and
re_match_2 use a failure stack. These have to be macros because of
set_regs_matched_done = 0; \
DEBUG_STATEMENT (nfailure_points_popped++); \
} /* POP_FAILURE_POINT */
-\f
+
/* Structure for per-register (a.k.a. per-group) information.
Other register information, such as the
starting and ending positions (which are addresses), and the list of
|| STREQ (string, "cntrl") || STREQ (string, "blank"))
# endif
# endif /* DEFINED_ONCE */
-\f
+
# ifndef MATCH_MAY_ALLOCATE
/* If we cannot allocate large objects within re_match_2_internal,
}
# endif /* not MATCH_MAY_ALLOCATE */
-\f
+
# ifndef DEFINED_ONCE
static boolean group_in_compile_stack _RE_ARGS ((compile_stack_type
compile_stack,
return ret;
}
#endif /* WCHAR */
-\f
+
/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in
BUFP. A fastmap records which of the (1 << BYTEWIDTH) possible
characters can start a string that matches the pattern. This fastmap
#if defined _LIBC || defined __UCLIBC__
strong_alias(__re_compile_fastmap, re_compile_fastmap)
#endif
-\f
+
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use
#if defined _LIBC || defined __UCLIBC__
strong_alias(__re_set_registers, re_set_registers)
#endif
-\f
+
/* Searching routines. */
/* Like re_search_2, below, but only one string is specified, and
to actually save any registers when none are active. */
#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH)
#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1)
-\f
+
#else /* not INSIDE_RECURSION */
/* Matching routines. */
return -1; /* Failure to match. */
} /* re_match_2 */
-\f
+
/* Subroutine definitions for re_match_2. */
}
return 0;
}
-\f
+
#else /* not INSIDE_RECURSION */
#if defined _LIBC || defined __UCLIBC__
strong_alias(__re_compile_pattern, re_compile_pattern)
#endif
-\f
+
/* Entry points compatible with 4.2 BSD regex library. We don't define
them unless specifically requested. */
}
#endif /* _REGEX_RE_COMP */
-\f
+
/* POSIX.2 functions. Don't define these for Emacs. */
#ifndef emacs
#endif /* not INSIDE_RECURSION */
-\f
+
#undef STORE_NUMBER
#undef STORE_NUMBER_AND_INCR
#undef EXTRACT_NUMBER
internal_function;
static reg_errcode_t extend_buffers (re_match_context_t *mctx)
internal_function;
-\f
+
/* Entry point for POSIX code. */
/* regexec searches for a given pattern, specified by PREG, in the
#if defined _LIBC || defined __UCLIBC__
strong_alias(__re_set_registers, re_set_registers)
#endif
-\f
+
/* Entry points compatible with 4.2 BSD regex library. We don't define
them unless specifically requested. */
return 0 == regexec (&re_comp_buf, s, 0, NULL, 0);
}
#endif /* _REGEX_RE_COMP */
-\f
+
/* Internal entry point. */
/* Searches for a compiled pattern PREG in the string STRING, whose
}
#endif /* RE_ENABLE_I18N */
-\f
+
/* Functions for state transition. */
/* Return the next state to which the current state STATE will transit by
return REG_NOERROR;
}
-\f
+
/* Functions for matching context. */
/* Initialize MCTX. */
/*
* This file lifted in toto from 'Dlibs' on the atari ST (RdeBath)
*
- *
+ *
* Dale Schumacher 399 Beacon Ave.
* (alias: Dalnefre') St. Paul, MN 55104
* dal@syntel.UUCP United States of America
/* Experimentally off - libc_hidden_proto(memcpy) */
-void *lsearch(const void *key, void *base, size_t *nmemb,
+void *lsearch(const void *key, void *base, size_t *nmemb,
size_t size, int (*compar)(const void *, const void *))
{
register char *p;
}
}
-/* void twalk(root, action) Walk the nodes of a tree
+/* void twalk(root, action) Walk the nodes of a tree
node *root; Root of the tree to be walked
void (*action)(); Function to be called at each node
PTR
static struct ttyent tty;
-/* Skip over the current field, removing quotes, and return
+/* Skip over the current field, removing quotes, and return
* a pointer to the next field.
*/
#define QUOTED 1
/* If we don't have 8-bit locale support, then this is trivial since
* anything outside of 0-0x7f is illegal in C/POSIX and UTF-8 locales. */
-
+
/* TODO: need unsigned version of wint_t... */
/* return (((unsigned int)c) < 0x80) ? c : WEOF; */
return ((c >= 0) && (c < 0x80)) ? c : EOF;
( defined(__CTYPE_HAS_8_BIT_LOCALES) || defined(__CTYPE_HAS_UTF_8_LOCALES) )
static const unsigned char new_idx[] = {
- 0, 5, 5, 6, 10, 15, 28, 39,
- 48, 48, 71, 94, 113, 128, 139, 154,
- 175, 186, 188, 188, 188, 188, 188, 188,
- 203, 208, 208, 208, 208, 208, 208, 208,
- 208, 219, 219, 219, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 224,
- 224, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 233, 233, 233,
- 233, 233, 233, 233, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234,
- 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 237, 237, 238, 241, 241, 242, 249,
- 255,
+ 0, 5, 5, 6, 10, 15, 28, 39,
+ 48, 48, 71, 94, 113, 128, 139, 154,
+ 175, 186, 188, 188, 188, 188, 188, 188,
+ 203, 208, 208, 208, 208, 208, 208, 208,
+ 208, 219, 219, 219, 222, 222, 222, 222,
+ 222, 222, 222, 222, 222, 222, 222, 224,
+ 224, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 231, 231, 231,
+ 231, 231, 231, 231, 231, 233, 233, 233,
+ 233, 233, 233, 233, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+ 236, 236, 236, 236, 236, 236, 236, 236,
+ 236, 236, 236, 236, 236, 236, 236, 236,
+ 236, 236, 236, 236, 236, 236, 236, 236,
+ 236, 236, 236, 236, 236, 236, 236, 236,
+ 236, 237, 237, 238, 241, 241, 242, 249,
+ 255,
};
static const unsigned char new_tbl[] = {
- 0x00, 0x01, 0x20, 0x7f, 0xa0, 0x00, 0x00, 0x50,
- 0x60, 0x70, 0x00, 0x83, 0x87, 0x88, 0x8a, 0x00,
- 0x91, 0xa2, 0xa3, 0xba, 0xbb, 0xbe, 0xbf, 0xc0,
- 0xc1, 0xc3, 0xc4, 0xc5, 0x00, 0x4b, 0x56, 0x70,
- 0x71, 0xd6, 0xe5, 0xe7, 0xe9, 0xea, 0xee, 0x00,
- 0x0f, 0x10, 0x11, 0x12, 0x30, 0x4b, 0xa6, 0xb1,
- 0x00, 0x01, 0x03, 0x3c, 0x3d, 0x41, 0x49, 0x4d,
- 0x4e, 0x51, 0x55, 0x62, 0x64, 0x81, 0x82, 0xbc,
- 0xbd, 0xc1, 0xc5, 0xcd, 0xce, 0xe2, 0xe4, 0x00,
- 0x02, 0x03, 0x3c, 0x3d, 0x41, 0x43, 0x47, 0x49,
- 0x4b, 0x4e, 0x70, 0x72, 0x81, 0x83, 0xbc, 0xbd,
- 0xc1, 0xc6, 0xc7, 0xc9, 0xcd, 0xce, 0x00, 0x01,
- 0x02, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x44, 0x4d,
- 0x4e, 0x56, 0x57, 0x82, 0x83, 0xc0, 0xc1, 0xcd,
- 0xce, 0x00, 0x3e, 0x41, 0x46, 0x49, 0x4a, 0x4e,
- 0x55, 0x57, 0xbf, 0xc0, 0xc6, 0xc7, 0xcc, 0xce,
- 0x00, 0x41, 0x44, 0x4d, 0x4e, 0xca, 0xcb, 0xd2,
- 0xd5, 0xd6, 0xd7, 0x00, 0x31, 0x32, 0x34, 0x3b,
- 0x47, 0x4f, 0xb1, 0xb2, 0xb4, 0xba, 0xbb, 0xbd,
- 0xc8, 0xce, 0x00, 0x18, 0x1a, 0x35, 0x36, 0x37,
- 0x38, 0x39, 0x3a, 0x71, 0x7f, 0x80, 0x85, 0x86,
- 0x88, 0x90, 0x98, 0x99, 0xbd, 0xc6, 0xc7, 0x00,
- 0x2d, 0x31, 0x32, 0x33, 0x36, 0x38, 0x39, 0x3a,
- 0x58, 0x5a, 0x00, 0x60, 0x00, 0x12, 0x15, 0x32,
- 0x35, 0x52, 0x54, 0x72, 0x74, 0xb7, 0xbe, 0xc6,
- 0xc7, 0xc9, 0xd4, 0x00, 0x0b, 0x0f, 0xa9, 0xaa,
- 0x00, 0x0b, 0x10, 0x2a, 0x2f, 0x60, 0x64, 0x6a,
- 0x70, 0xd0, 0xeb, 0x00, 0x29, 0x2b, 0x00, 0x80,
- 0x00, 0x2a, 0x30, 0x3f, 0x40, 0x99, 0x9b, 0x00,
- 0xd0, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e,
- 0x1f, 0x00, 0x00, 0x10, 0x20, 0x24, 0x30, 0x70,
- 0xff, 0x00, 0x61, 0xe0, 0xe7, 0xf9, 0xfc,
+ 0x00, 0x01, 0x20, 0x7f, 0xa0, 0x00, 0x00, 0x50,
+ 0x60, 0x70, 0x00, 0x83, 0x87, 0x88, 0x8a, 0x00,
+ 0x91, 0xa2, 0xa3, 0xba, 0xbb, 0xbe, 0xbf, 0xc0,
+ 0xc1, 0xc3, 0xc4, 0xc5, 0x00, 0x4b, 0x56, 0x70,
+ 0x71, 0xd6, 0xe5, 0xe7, 0xe9, 0xea, 0xee, 0x00,
+ 0x0f, 0x10, 0x11, 0x12, 0x30, 0x4b, 0xa6, 0xb1,
+ 0x00, 0x01, 0x03, 0x3c, 0x3d, 0x41, 0x49, 0x4d,
+ 0x4e, 0x51, 0x55, 0x62, 0x64, 0x81, 0x82, 0xbc,
+ 0xbd, 0xc1, 0xc5, 0xcd, 0xce, 0xe2, 0xe4, 0x00,
+ 0x02, 0x03, 0x3c, 0x3d, 0x41, 0x43, 0x47, 0x49,
+ 0x4b, 0x4e, 0x70, 0x72, 0x81, 0x83, 0xbc, 0xbd,
+ 0xc1, 0xc6, 0xc7, 0xc9, 0xcd, 0xce, 0x00, 0x01,
+ 0x02, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x44, 0x4d,
+ 0x4e, 0x56, 0x57, 0x82, 0x83, 0xc0, 0xc1, 0xcd,
+ 0xce, 0x00, 0x3e, 0x41, 0x46, 0x49, 0x4a, 0x4e,
+ 0x55, 0x57, 0xbf, 0xc0, 0xc6, 0xc7, 0xcc, 0xce,
+ 0x00, 0x41, 0x44, 0x4d, 0x4e, 0xca, 0xcb, 0xd2,
+ 0xd5, 0xd6, 0xd7, 0x00, 0x31, 0x32, 0x34, 0x3b,
+ 0x47, 0x4f, 0xb1, 0xb2, 0xb4, 0xba, 0xbb, 0xbd,
+ 0xc8, 0xce, 0x00, 0x18, 0x1a, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x71, 0x7f, 0x80, 0x85, 0x86,
+ 0x88, 0x90, 0x98, 0x99, 0xbd, 0xc6, 0xc7, 0x00,
+ 0x2d, 0x31, 0x32, 0x33, 0x36, 0x38, 0x39, 0x3a,
+ 0x58, 0x5a, 0x00, 0x60, 0x00, 0x12, 0x15, 0x32,
+ 0x35, 0x52, 0x54, 0x72, 0x74, 0xb7, 0xbe, 0xc6,
+ 0xc7, 0xc9, 0xd4, 0x00, 0x0b, 0x0f, 0xa9, 0xaa,
+ 0x00, 0x0b, 0x10, 0x2a, 0x2f, 0x60, 0x64, 0x6a,
+ 0x70, 0xd0, 0xeb, 0x00, 0x29, 0x2b, 0x00, 0x80,
+ 0x00, 0x2a, 0x30, 0x3f, 0x40, 0x99, 0x9b, 0x00,
+ 0xd0, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1e,
+ 0x1f, 0x00, 0x00, 0x10, 0x20, 0x24, 0x30, 0x70,
+ 0xff, 0x00, 0x61, 0xe0, 0xe7, 0xf9, 0xfc,
};
static const signed char new_wtbl[] = {
- 0, -1, 1, -1, 1, 1, 0, 1,
- 0, 1, 1, 0, 1, 0, 1, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 0, 1, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 0, 1, 0, 1, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 1, 0, 1, 0, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 1,
- 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 2, 0, 1, 0, 1, 0,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 1, 0, 1, 0, 1,
- 1, 0, 1, 0, 1, 0, 1, 0,
- 1, 0, 1, 1, 2, 1, 1, 2,
- 2, 0, 2, 1, 2, 0, 2, 2,
- 1, 1, 2, 1, 1, 2, 1, 0,
- 1, 1, 0, 1, 0, 1, 2, 1,
- 0, 2, 1, 2, 1, 0, 1,
+ 0, -1, 1, -1, 1, 1, 0, 1,
+ 0, 1, 1, 0, 1, 0, 1, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 2, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 1, 0, 1, 0, 1,
+ 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 1, 2, 1, 1, 2,
+ 2, 0, 2, 1, 2, 0, 2, 2,
+ 1, 1, 2, 1, 1, 2, 1, 0,
+ 1, 1, 0, 1, 0, 1, 2, 1,
+ 0, 2, 1, 2, 1, 0, 1,
};
libc_hidden_proto(wcsnrtombs)
if (ENCODING == __ctype_encoding_7_bit) {
size_t i;
-
+
for (i = 0 ; (i < n) && pwcs[i] ; i++) {
if (pwcs[i] != ((unsigned char)(pwcs[i]))) {
return -1;
/* For stricter handling of allowed unicode values... see comments above. */
else if (ENCODING == __ctype_encoding_utf8) {
size_t i;
-
+
for (i = 0 ; (i < n) && pwcs[i] ; i++) {
if ( (((__uwchar_t)((pwcs[i]) - 0xfffeU)) < 2)
|| (((__uwchar_t)((pwcs[i]) - 0xd800U)) < (0xe000U - 0xd800U))
}
wc += (wc2 << 16);
} else if (px->tocodeset & 1) wc = bswap_16(wc);
- }
+ }
(*outbuf)[0] = (char)((unsigned char)(wc));
(*outbuf)[1] = (char)((unsigned char)(wc >> 8));
if (inco == 4) {
char *progname;
int hide_errors;
-static void error_msg(const char *fmt, ...)
+static void error_msg(const char *fmt, ...)
__attribute__ ((noreturn, format (printf, 1, 2)));
-static void error_msg(const char *fmt, ...)
+static void error_msg(const char *fmt, ...)
{
va_list arg;
uid = getuid();
buffer = alloca(buflen);
- while ((result = getpwuid_r(uid, &pwd, buffer, buflen, &tpwd))
- != 0 && errno == ERANGE)
+ while ((result = getpwuid_r(uid, &pwd, buffer, buflen, &tpwd))
+ != 0 && errno == ERANGE)
{
buflen += 1000;
buffer = alloca(buflen);
#include <signal.h>
#include <sys/types.h>
#include <sys/syscall.h>
-
+
/* Only enable rt signals when it is supported at compile time */
#ifndef __NR_rt_sigaction
/* In these variables we keep track of the used variables. If the
kact.sa_restorer = act->sa_restorer;
# endif
}
-
+
/* XXX The size argument hopefully will have to be changed to the
real size of the user-level sigset_t. */
result = __syscall_rt_sigaction(sig,
int __sigjmp_save (sigjmp_buf env, int savemask) attribute_hidden;
int __sigjmp_save (sigjmp_buf env, int savemask)
{
- env[0].__mask_was_saved = (savemask &&
+ env[0].__mask_was_saved = (savemask &&
sigprocmask (SIG_BLOCK, (sigset_t *) NULL, &env[0].__saved_mask) == 0);
return 0;
/* Copyright (C) 2000, 2001, 2003 Manuel Novoa III
*
- * Function:
+ * Function:
*
* ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
* __fp_outfunc_t fp_outfunc);
#if FPMAX_MAX_EXP >= 16384
0x1.0p16384L
#endif
-#if FPMAX_MAX_EXP >= 32768
+#if FPMAX_MAX_EXP >= 32768
#error unsupported FPMAX_MAX_EXP. please increase table
#endif
};
if (mode < 'a') {
*exp_buf -= ('a' - 'A'); /* e->E and p->P */
mode += ('a' - 'A');
- }
+ }
o_mode = mode;
if ((mode == 'g') && (preci > 0)){
#ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
if ((mode|0x20) == 'a') {
char *q;
-
+
for (q = e ; *q ; --q) {
if (*q > '9') {
*q += (*exp_buf - ('p' - 'a') - '9' - 1);
digit = low % base;
low /= base;
}
-
+
#ifndef __LOCALE_C_ONLY
if (unlikely(outdigit)) {
bufend -= __UCLIBC_CURLOCALE_DATA.outdigit_length[digit];
/* April 1, 2002
* Initialize thread locks for fake files in vsnprintf and vdprintf.
* reported by Erik Andersen (andersen@codepoet.com)
- * Fix an arg promotion handling bug in _do_one_spec for %c.
+ * Fix an arg promotion handling bug in _do_one_spec for %c.
* reported by Ilguiz Latypov <ilatypov@superbt.com>
*
* May 10, 2002
FLAG_THOUSANDS = 0x20,
FLAG_I18N = 0x40, /* only works for d, i, u */
FLAG_WIDESTREAM = 0x80
-};
+};
/**********************************************************************/
#if 1
/* TODO - use memset here since already "paid for"? */
register int *p = ppfs->argtype;
-
+
r = MAX_ARGS;
do {
*p++ = __PA_NOARG;
*(int *)
#endif
GET_VA_ARG(p,u,unsigned int,ppfs->arg);
- }
+ }
if (ppfs->info.prec == INT_MIN) {
ppfs->info.prec =
#ifdef __va_arg_ptr
case PA_STRING:
case PA_WSTRING:
GET_VA_ARG(p,p,void *,ppfs->arg);
- break;
+ break;
case __PA_NOARG:
continue;
}
if (ppfs->info.width == INT_MIN) {
ppfs->info.width
= (int) GET_ARG_VALUE(p + ppfs->argnumber[0] - 1,u,unsigned int);
- }
+ }
if (ppfs->info.prec == INT_MIN) {
ppfs->info.prec
= (int) GET_ARG_VALUE(p + ppfs->argnumber[1] - 1,u,unsigned int);
/* TODO -- rethink this -- perhaps we should set to largest type??? */
-#ifdef _OVERLAPPING_DIFFERENT_ARGS
+#ifdef _OVERLAPPING_DIFFERENT_ARGS
#define PROMOTED_SIZE_OF(X) ((sizeof(X) + sizeof(int) - 1) / sizeof(X))
restart_flags: /* Process flags. */
i = 1;
p = spec_flags;
-
+
do {
if (*fmt == *p++) {
++fmt;
/* Otherwise error. */
return -1;
}
-
+
#if defined(__UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__) || defined(__UCLIBC_HAS_PRINTF_M_SPEC__)
DONE:
#endif
mbstate.__mask = 0;
todo = wclen;
-
+
while (todo) {
r = mbsrtowcs(wbuf, &s,
((todo <= sizeof(wbuf)/sizeof(wbuf[0]))
#if 1
/* TODO - use memset here since already "paid for"? */
register int *p = ppfs->argtype;
-
+
r = MAX_ARGS;
do {
*p++ = __PA_NOARG;
if (!*format) { /* we're done */
break;
}
-
+
if (format[1] != '%') { /* if we get here, *format == '%' */
/* TODO: _do_one_spec needs to know what the output funcs are!!! */
ppfs.fmtpos = (const char *)(++format);
__STDIO_AUTO_THREADLOCK(stream);
- if
+ if
#ifdef L_vfprintf
(!__STDIO_STREAM_IS_NARROW_WRITING(stream)
&& __STDIO_STREAM_TRANS_TO_WRITE(stream, __FLAG_NARROW))
intptr_t cur_mode;
return (((cur_mode = fcntl(filedes, F_GETFL))) != -1)
- ? _stdio_fopen(cur_mode, mode, NULL, filedes)
+ ? _stdio_fopen(cur_mode, mode, NULL, filedes)
: NULL;
}
libc_hidden_def(fdopen)
cookie->dynbuf = 1;
*cookie->buf = 0; /* If we're appending, treat as empty file. */
}
-
+
#ifndef __BCC__
fp = fopencookie(cookie, modes, _fmo_io_funcs);
#else
goto DONE;
}
}
-
+
/* We need to read from the host environment, so we must
* flush all line buffered streams if the stream is not
* fully buffered. */
if ((!__STDIO_STREAM_IS_WRITING(stream)
|| !__STDIO_COMMIT_WRITE_BUFFER(stream))
- && ((whence != SEEK_CUR)
+ && ((whence != SEEK_CUR)
|| (__stdio_adjust_position(stream, &pos) >= 0))
&& (__SEEK(stream, &pos, whence) >= 0)
) {
/*
* This file based on printf.c from 'Dlibs' on the atari ST (RdeBath)
*
- *
+ *
* Dale Schumacher 399 Beacon Ave.
* (alias: Dalnefre') St. Paul, MN 55104
* dal@syntel.UUCP United States of America
* Fixed precision bug -- when negative set to default.
* Added function fnprintf to support __dtostr.
* Added floating point support for doubles. Yeah!
- *
+ *
*
* May 2001 Fixes from Johan Adolfsson (johan.adolfsson@axis.com)
* 1) printf("%c",0) returned 0 instead of 1.
p++;
}
}
-
+
if (!flag[FLAG_PLUS]) {
flag[FLAG_PLUS] = flag[FLAG_SPACE];
}
PRINT_INFO_SET_FLAG(&info,left);
}
#if 1
- cnt += _fpmaxtostr(op,
+ cnt += _fpmaxtostr(op,
(__fpmax_t)
((dataargtype == (8 << 8))
? va_arg(ap, long double)
: (long double) va_arg(ap, double)),
&info, _fp_out_narrow);
#else
- cnt += _fpmaxtostr(op,
+ cnt += _fpmaxtostr(op,
(__fpmax_t)
((lval > 1)
? va_arg(ap, long double)
preci = 0;
if (!flag[FLAG_MINUS_LJUSTIFY]
/* && flag[FLAG_PLUS] */
- && (flag[FLAG_0_PAD] == '0')) {
+ && (flag[FLAG_0_PAD] == '0')) {
preci = width;
width = 0;
}
*cookie->buf = 0; /* Set nul terminator for buffer. */
*(cookie->bufloc = bufloc) = cookie->buf;
*(cookie->sizeloc = sizeloc) = cookie->eof = cookie->pos = 0;
-
+
#ifndef __BCC__
fp = fopencookie(cookie, "w", _oms_io_funcs);
#else
/* SUSv3 states:
* If path does not name a directory, remove(path) shall be equivalent
* to unlink(path). If path names a directory, remove(path) shall be
- * equivalent to rmdir(path).
+ * equivalent to rmdir(path).
*/
libc_hidden_proto(remove)
#include <stdlib.h>
#include <limits.h>
-extern int __drand48_iterate(unsigned short xsubi[3],
+extern int __drand48_iterate(unsigned short xsubi[3],
struct drand48_data *buffer) attribute_hidden;
libc_hidden_proto(erand48_r)
/* Experimentally off - libc_hidden_proto(memcmp) */
/* Experimentally off - libc_hidden_proto(strlen) */
-/* IEEE Std 1003.1-2001 says getenv need not be thread safe, so
+/* IEEE Std 1003.1-2001 says getenv need not be thread safe, so
* don't bother locking access to __environ */
char *getenv(const char *var)
{
if (pts_name (fd, &buf, sizeof (_buf)))
return -1;
-
+
if (statfs (buf, &fsbuf) < 0)
return -1;
#include <stdlib.h>
-extern int __drand48_iterate(unsigned short xsubi[3],
+extern int __drand48_iterate(unsigned short xsubi[3],
struct drand48_data *buffer) attribute_hidden;
libc_hidden_proto(jrand48_r)
-/*
+/*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-/*
+/*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-/*
+/*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-/*
+/*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-/*
+/*
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
as a malloc_chunk. This avoids special-casing for headers.
But to conserve space and improve locality, we allocate
only the fd/bk pointers of bins, and then use repositioning tricks
- to treat these as the fields of a malloc_chunk*.
+ to treat these as the fields of a malloc_chunk*.
*/
typedef struct malloc_chunk* mbinptr;
void *mem = 0;
_size = HEAP_ADJUST_SIZE (_size);
-
+
if (_size < sizeof (struct heap_free_area))
/* Because we sometimes must use a freed block to hold a free-area node,
we must make sure that every allocated block can hold one. */
for (fa = heap->free_areas; fa; fa = fa->next)
{
void *fa_mem = HEAP_FREE_AREA_START (fa);
- if (fa_mem <= mem)
+ if (fa_mem <= mem)
{
if (fa_mem == mem && fa->size >= size)
/* FA has the right addr, and is big enough! */
/* The new descriptor is at the end of the extended block,
SIZE bytes later than the old descriptor. */
fa = (struct heap_free_area *)((char *)fa + size);
- /* Update links with the neighbors in the list. */
+ /* Update links with the neighbors in the list. */
__heap_link_free_area (heap, fa, prev_fa, next_fa);
}
}
#include <stdlib.h>
-extern int __drand48_iterate(unsigned short xsubi[3],
+extern int __drand48_iterate(unsigned short xsubi[3],
struct drand48_data *buffer) attribute_hidden;
libc_hidden_proto(nrand48_r)
terminal devices. As of Linux 2.1.115 these are no longer
supported. They have been replaced by major numbers 2 (masters)
and 3 (slaves). */
-
+
/* The are declared in getpt.c. */
extern const char __libc_ptyname1[] attribute_hidden;
extern const char __libc_ptyname2[] attribute_hidden;
-\f
+
/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
congruential bit. Otherwise, we do our fancy trinomial stuff, which is the
same in all the other cases due to all the global variables that have been
#define _ISOC99_SOURCE /* for ULLONG primarily... */
#include <limits.h>
#include <stdint.h>
-/* Work around gcc's refusal to create aliases.
+/* Work around gcc's refusal to create aliases.
* TODO: Add in a define to disable the aliases? */
#if UINT_MAX == ULONG_MAX
/**********************************************************************/
#ifdef L_atoi
-#if INT_MAX < LONG_MAX
+#if INT_MAX < LONG_MAX
libc_hidden_proto(strtol)
/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
#include <sys/syscall.h>
#ifndef __NR_vfork
-# define vfork fork
+# define vfork fork
libc_hidden_proto(fork)
#endif
EISNAM,
EREMOTEIO,
#if EDQUOT > 200 /* mips has an outrageous value for this... */
- 0,
+ 0,
#else
EDQUOT,
#endif
/* We override the word-copying macros, partly because misalignment in one
pointer isn't cause for a special function, partly because we want to
- get rid of all the static functions in generic/memcopy.c; these macros
+ get rid of all the static functions in generic/memcopy.c; these macros
are only used in memmove.c since we have arch-specific mempcpy, memcpy and
memset. */
register char *dst __asm__ ("r13") = pdst;
register char *src __asm__ ("r11") = (char *) psrc;
register int n __asm__ ("r12") = pn;
-
-
+
+
/* When src is aligned but not dst, this makes a few extra needless
cycles. I believe it would take as many to check that the
re-alignment was unnecessary. */
;; Restore registers from stack \n\
movem [sp+],r10"
- /* Outputs */ : "=r" (dst), "=r" (src), "=r" (n)
+ /* Outputs */ : "=r" (dst), "=r" (src), "=r" (n)
/* Inputs */ : "0" (dst), "1" (src), "2" (n));
}
/* Either we directly starts copying, using dword copying
- in a loop, or we copy as much as possible with 'movem'
+ in a loop, or we copy as much as possible with 'movem'
and then the last block (<44 bytes) is copied here.
This will work since 'movem' will have updated src,dst,n. */
-/* Taken from generic/memmove.c; trivially modified to work with
+/* Taken from generic/memmove.c; trivially modified to work with
arch-specific memcopy.h for Cris.
Copy memory to memory until the specified number of bytes
{
register char *dst __asm__ ("r13") = pdst;
-
+
if (((unsigned long) pdst & 3) != 0
/* Oops! n=0 must be a legal call, regardless of alignment. */
&& n >= 3)
addq 12*4,r12 ;; compensate for last loop underflowing n \n\
\n\
;; Restore registers from stack \n\
- movem [sp+],r10"
+ movem [sp+],r10"
/* Outputs */ : "=r" (dst), "=r" (n)
/* Inputs */ : "0" (dst), "1" (n), "r" (lc));
-
+
}
/* Either we directly starts copying, using dword copying
- in a loop, or we copy as much as possible with 'movem'
+ in a loop, or we copy as much as possible with 'movem'
and then the last block (<44 bytes) is copied here.
This will work since 'movem' will have updated src,dst,n. */
for (n = 0 ; i ; ++n) {
i >>= 1;
}
-
+
return n;
#endif
}
#include <string.h>
/* Experimentally off - libc_hidden_proto(strncat) */
-char *strncat(char * dest,
+char *strncat(char * dest,
const char * src, size_t count)
{
int d0, d1, d2, d3;
/* The latency of a memory load assumed by the assembly implementation
of the mem and str functions. Since we don't have any clue about
- where the data might be, let's assume it's in the L2 cache.
+ where the data might be, let's assume it's in the L2 cache.
Assuming L3 would be too pessimistic :-)
Some functions define MEMLAT as 2, because they expect their data
#else
#define np n
#endif
-
+
r = ((unsigned char *)s) + ((size_t) np);
while (np) {
do {
*++tmp_to = *++tmp_from;
} while (--n);
-
+
return to;
align:
rem = 4 - rem;
do {
*--tmp_to = *--tmp_from;
} while (--n);
-
+
return to;
align:
rem = 4 - rem;
/* Experimentally off - libc_hidden_proto(memset) */
static __inline__ int expand_byte_word(int c){
- /* this does:
+ /* this does:
c = c << 8 | c;
c = c << 16 | c ;
*/
do {
*++tmp_to = c;
} while (--n);
-
+
return to;
align:
rem = 4 - rem;
while (((r = ((int)(*((Wuchar *)s1))) - *((Wuchar *)s2++))
== 0) && *s1++);
-
+
return r;
#endif
}
--n;
}
#endif
-
+
return s1;
}
#ifndef WANT_WIDE
: "memory"); \
__ret; })
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be
+/* ??? Barrier semantics for atomic_exchange_and_add appear to be
undefined. Use full barrier for now, as that's safe. */
#define atomic_exchange_and_add(mem, value) \
__atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
unsigned int st_dev;
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
_sc_ret = _sc_0, _sc_err = _sc_19; \
} \
_syscall_return(type); \
-}
+}
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
type5,arg5) \
CPU endianness. VFP floating point units use the same endianness
as the rest of the system. */
#if defined __VFP_FP__ || defined __MAVERICK__
-# define __FLOAT_WORD_ORDER __BYTE_ORDER
+# define __FLOAT_WORD_ORDER __BYTE_ORDER
#else
# define __FLOAT_WORD_ORDER __BIG_ENDIAN
#endif
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#define STAT_HAVE_NSEC 1
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
#endif
/*
- Some of the sneaky macros in the code were taken from
+ Some of the sneaky macros in the code were taken from
glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h
*/
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \
-}
+}
#undef _syscall5
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
{
char systype[256];
int i, n;
-
+
#if LINUX_VERSION_CODE < 132119
static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
#define MAX_PORT 0x10000
-int iopl(int level)
+int iopl(int level)
{
if (level > 3) {
__set_errno(EINVAL);
|| (offset == map->segs[c].p_memsz && c + 1 == map->nsegs))
return (char*)map->segs[c].addr + offset;
}
-
+
/* We might want to crash instead. */
return (void*)-1;
}
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
if (p >= e)
return (void*)-1;
-
+
return __reloc_pointer (*p, map);
}
#ifndef _BITS_SIGACTION_STRUCT_H
#define _BITS_SIGACTION_STRUCT_H
-/* This file provides whatever this particular arch's kernel thinks
+/* This file provides whatever this particular arch's kernel thinks
* the sigaction struct should look like... */
#undef NO_OLD_SIGACTION
* arches have broken headers that introduce tons of gratuitous
* conflicts with uClibc's namespace. See bits/kernel_types.h
* for i386, arm, etc for examples... */
-#warning You really should include a proper bits/kernel_types.h for your architecture
+#warning You really should include a proper bits/kernel_types.h for your architecture
#ifndef __GLIBC__
#define __GLIBC__ 2
#ifdef _STDIO_H
# define L_tmpnam 20
# define TMP_MAX 238328
-# define FILENAME_MAX 4095
+# define FILENAME_MAX 4095
# ifdef __USE_POSIX
# define L_ctermid 9
#endif
#if defined __need_IOV_MAX && !defined IOV_MAX
-# define IOV_MAX 1024
+# define IOV_MAX 1024
#endif
* this file must be able to cope with PIC and non-PIC code. For some arches
* there is no difference. For x86 (which has far too few registers) there is
* a difference. Regardless, including asm/unistd.h is hereby officially
- * forbidden. Don't do it. It is bad for you.
- */
+ * forbidden. Don't do it. It is bad for you.
+ */
#error You have not provided architecture specific _syscall[0-6] macros
#define __CTYPE_ispunct(D) (D == __CTYPE_punct)
#define __CTYPE_isspace(D) (((unsigned int)(D - __CTYPE_print_space_nonblank)) <= 5)
#define __CTYPE_isupper(D) (((unsigned int)(D - __CTYPE_alpha_upper_lower)) <= 1)
-/* #define __CTYPE_isxdigit(D) -- isxdigit is untestable this way.
+/* #define __CTYPE_isxdigit(D) -- isxdigit is untestable this way.
* But that's ok as isxdigit() (and isdigit() too) are locale-invariant. */
#else /* __UCLIBC_GEN_LOCALE *****************************************/
#else /* __UCLIBC_HAS_LOCALE__ */
-#define __LOCALE_C_ONLY
+#define __LOCALE_C_ONLY
#define __XL_NPP(N) N
#define __LOCALE_PARAM
/* Start with the "terminator canary". */
ret = 0xFF0A0D00UL;
- /* Everything failed? Or we are using a weakened model of the
+ /* Everything failed? Or we are using a weakened model of the
* terminator canary */
{
struct timeval tv;
*
* ftruncate64 syscall. Copes with 64 bit and 32 bit machines
* and on 32 bit machines this sends things into the kernel as
- * two 32-bit arguments (high and low 32 bits of length) that
+ * two 32-bit arguments (high and low 32 bits of length) that
* are ordered based on endianess. It turns out endian.h has
* just the macro we need to order things, __LONG_LONG_PAIR.
*/
const size_t size_diff = (offsetof (struct dirent, d_name)
- offsetof (struct kernel_dirent, d_name));
- red_nbytes = MIN (nbytes - ((nbytes /
- (offsetof (struct dirent, d_name) + 14)) * size_diff),
+ red_nbytes = MIN (nbytes - ((nbytes /
+ (offsetof (struct dirent, d_name) + 14)) * size_diff),
nbytes - size_diff);
dp = (struct dirent *) buf;
# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
# endif
-struct kernel_dirent64
+struct kernel_dirent64
{
uint64_t d_ino;
int64_t d_off;
const size_t size_diff = (offsetof (struct dirent64, d_name)
- offsetof (struct kernel_dirent64, d_name));
- red_nbytes = MIN (nbytes - ((nbytes /
- (offsetof (struct dirent64, d_name) + 14)) * size_diff),
+ red_nbytes = MIN (nbytes - ((nbytes /
+ (offsetof (struct dirent64, d_name) + 14)) * size_diff),
nbytes - size_diff);
dp = (struct dirent64 *) buf;
loff_t __libc_lseek64(int fd, loff_t offset, int whence)
{
loff_t result;
- return(loff_t)(INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
+ return(loff_t)(INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
(off_t) (offset & 0xffffffff), &result, whence) ?: result);
}
#else
*/
/* sendfile64 syscall. Copes with 64 bit and 32 bit machines
* and on 32 bit machines this sends things into the kernel as
- * two 32-bit arguments (high and low 32 bits of length) that
+ * two 32-bit arguments (high and low 32 bits of length) that
* are ordered based on endianess. It turns out endian.h has
* just the macro we need to order things, __LONG_LONG_PAIR.
*/
#ifndef INLINE_SYSCALL
#define INLINE_SYSCALL(name, nr, args...) __syscall_sync (args)
-#define __NR___syscall_sync __NR_sync
+#define __NR___syscall_sync __NR_sync
static __inline__ _syscall0(void, __syscall_sync);
#endif
*/
/* truncate64 syscall. Copes with 64 bit and 32 bit machines
* and on 32 bit machines this sends things into the kernel as
- * two 32-bit arguments (high and low 32 bits of length) that
+ * two 32-bit arguments (high and low 32 bits of length) that
* are ordered based on endianess. It turns out endian.h has
* just the macro we need to order things, __LONG_LONG_PAIR.
*/
-/*
+/*
* Copyright (C) 2004 <solar@gentoo.org>
* Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \
-}
+}
#undef _syscall5
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
#define FE_OVERFLOW FE_OVERFLOW
FE_DIVBYZERO = (1 << 11),
#define FE_DIVBYZERO FE_DIVBYZERO
- FE_INVALID = (1 << 12)
+ FE_INVALID = (1 << 12)
#define FE_INVALID FE_INVALID
};
-/*
+/*
Inline floating-point environment handling functions for Hyperstone e1-32X.
Copyright (C) 2002-2003, George Thanos <george.thanos@gdt.gr>
Yannis Mitsos <yannis.mitsos@gdt.gr>
#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_MATH_INLINES
-/**********************************************************
+/**********************************************************
* --- A small description of the E1-16/32X FP unit. ---
- * FP exceptions can be enabled and disabled through
+ * FP exceptions can be enabled and disabled through
* <feenableexcept>, <fedisableexcept>.
*
* - When an enabled exception takes place a SIGFPE signal
* a trap. The user can check if any exception took place after
* an FP instruction by issuing an <fetestexcept> command.
* User should first clear the G2 register by issuing an
- * <feclearexcept> function.
+ * <feclearexcept> function.
* The following program is a typical example of how the user
* should check for exceptions that did not generate a SIGFPE
* signal :
* raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
* if (raised & FE_OVERFLOW) { ... }
* if (raised & FE_INVALID) { ... }
- * ...
+ * ...
* }
***********************************************************/
__asm__ __volatile__("mov %0, SR"
:"=l"(enabled_excepts)
- :/*no input*/ );
+ :/*no input*/ );
enabled_excepts &= 0x1F00;
disabled_excepts = ~enabled_excepts;
/* fetestexcepts tests both for actual and accrued
* excepts. You can test for an exception either after
* an FP instruction or within a SIGFPE handler
- */
+ */
inline int fetestexcept(int __excepts)
-{
+{
unsigned int G2, G2en, G2dis;
unsigned int enabled_excepts, disabled_excepts;
__asm__ __volatile__("mov %0, SR"
:"=l"(enabled_excepts)
- :/*no input*/ );
+ :/*no input*/ );
enabled_excepts &= 0x1F00;
disabled_excepts = ~enabled_excepts;
:"l"( envp->actual_except ) ); \
(0); /* return 0 */ \
})
-
+
#define feupdateenv(envp) \
({ \
/* Clear FRM & FTE field of SR */ \
:"l"( envp->actual_except ) ); \
(0); /* return 0 */ \
})
-
+
#endif /* __GNUC__ && !_SOFT_FLOAT */
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
else
state->__jmpbuf->ReturnValue = value;
- jmpbuf_ptr = (unsigned long)state;
+ jmpbuf_ptr = (unsigned long)state;
e1newSP(state->__jmpbuf->SavedSP);
#define _state_ ((struct __jmp_buf_tag*)jmpbuf_ptr)
else
state->__jmpbuf->ReturnValue = value;
- jmpbuf_ptr = (unsigned long)state;
+ jmpbuf_ptr = (unsigned long)state;
e1newSP(state->__jmpbuf->SavedSP);
-
+
#define _state_ ((struct __jmp_buf_tag*)jmpbuf_ptr)
__asm__ __volatile__("mov L0, %0\n\t"
int setjmp( jmp_buf state)
{
- __asm__ __volatile__( "mov %0, G3\n\t"
- "mov %1, G4\n\t"
- :"=l"(state->__jmpbuf->G3),
- "=l"(state->__jmpbuf->G4)
- :/*no input*/
+ __asm__ __volatile__( "mov %0, G3\n\t"
+ "mov %1, G4\n\t"
+ :"=l"(state->__jmpbuf->G3),
+ "=l"(state->__jmpbuf->G4)
+ :/*no input*/
:"%G3", "%G4" );
__asm__ __volatile__( "setadr %0\n\t"
} else
state->__mask_was_saved = 0;
- __asm__ __volatile__( "mov %0, G3\n\t"
- "mov %1, G4\n\t"
- :"=l"(state->__jmpbuf->G3),
- "=l"(state->__jmpbuf->G4)
- :/*no input*/
+ __asm__ __volatile__( "mov %0, G3\n\t"
+ "mov %1, G4\n\t"
+ :"=l"(state->__jmpbuf->G3),
+ "=l"(state->__jmpbuf->G4)
+ :/*no input*/
:"%G3", "%G4" );
__asm__ __volatile__( "setadr %0\n\t"
|| (offset == map->segs[c].p_memsz && c + 1 == map->nsegs))
return (char*)map->segs[c].addr + offset;
}
-
+
/* We might want to crash instead. */
return (void*)-1;
}
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
if (p >= e)
return (void*)-1;
-
+
return __reloc_pointer (*p, map);
}
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
* this file must be able to cope with PIC and non-PIC code. For some arches
* there is no difference. For x86 (which has far too few registers) there is
* a difference. Regardless, including asm/unistd.h is hereby officially
- * forbidden. Don't do it. It is bad for you.
- */
+ * forbidden. Don't do it. It is bad for you.
+ */
#ifndef _SYSCALL_H
# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
#endif
-/* Ripped from linux/include/asm-parisc/stat.h
+/* Ripped from linux/include/asm-parisc/stat.h
* and renamed 'struct stat' to 'struct kernel_stat' */
#ifndef _PARISC_STAT_H
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers.
How often the function is used is unknown. */
-long int
-syscall (long int __sysno, ...)
+long int
+syscall (long int __sysno, ...)
{
/* FIXME: Keep this matching INLINE_SYSCALL for hppa */
va_list args;
arg4 = va_arg (args, long int);
arg5 = va_arg (args, long int);
va_end (args);
-
+
{
register unsigned long int __res __asm__("r28");
K_LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Boston, MA 02111-1307, USA.
Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
*/
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
* Microblaze port by John Williams
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
arg0 = flags;
arg1 = (unsigned long)child_stack;
syscall = __NR_clone;
- __asm__ __volatile__ ("bralid r17, trap;nop;"
+ __asm__ __volatile__ ("bralid r17, trap;nop;"
: "=r" (rval), "=r" (syscall)
: "1" (syscall), "r" (arg0), "r" (arg1)
: SYSCALL_CLOBBERS);
{
arg0 = (*fn) (arg);
syscall = __NR_exit;
- __asm__ __volatile__ ("bralid r17, trap;nop;"
+ __asm__ __volatile__ ("bralid r17, trap;nop;"
: "=r" (rval), "=r" (syscall)
: "1" (syscall), "r" (arg0)
: SYSCALL_CLOBBERS);
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
unsigned long ret_sav;
*((unsigned long *)0xFFFF4004) = (unsigned int)('+');
- __asm__ ("brlid r17, 08x; nop;"
+ __asm__ ("brlid r17, 08x; nop;"
: "=r" (ret)
: "r" (syscall), "r" (a), "r" (b), "r" (c), "r" (d), "r" (e), "r" (f)
: SYSCALL_CLOBBERS);
-
+
ret_sav=ret;
*((unsigned long *)0xFFFF4004) = (unsigned int)('-');
__prev; })
#endif
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be
+/* ??? Barrier semantics for atomic_exchange_and_add appear to be
undefined. Use full barrier for now, as that's safe. */
#define atomic_exchange_and_add(mem, value) \
__atomic_val_bysize (__arch_exchange_and_add, int, mem, value, \
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#include <sgidefs.h>
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \
-}
+}
#undef _syscall5
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Boston, MA 02111-1307, USA.
Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
*/
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
__asm__ __volatile__ (".section .fini");
(*call__dtors)();
__asm__ __volatile__ (".section .trash");
-
+
}
*/
/* prevent function pointer constant propagation */
__asm__ __volatile__ (".section .init");
-
+
if (!initialized) {
initialized = 1;
(*call__ctors)();
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
struct kernel_stat {
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
/* floating point regs, if any */
#if defined __HAVE_FPU__
unsigned long __fpregs[64];
-#endif
+#endif
} __jmp_buf[1];
#endif
-/*
+/*
* libc/sysdeps/linux/nios2/syscall.c -- generic syscall function for linux/nios2
*
* Copyright (C) 2004 Microtronix Datacom Ltd.
{
register long _r2 __asm__("r2")=(long)TRAP_ID_SYSCALL;
register long _r3 __asm__("r3")=(long)sysnum;
-
+
register long _r4 __asm__("r4")=(long)(a);
register long _r5 __asm__("r5")=(long)(b);
register long _r6 __asm__("r6")=(long)(c);
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#if __WORDSIZE == 64
#define kernel_stat kernel_stat64
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
-/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2002
+/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2002
Free Software Foundation, Inc.
This file is part of the GNU C Library.
*/
/* Based in part on the files
* ./sysdeps/unix/sysv/linux/pwrite.c,
- * ./sysdeps/unix/sysv/linux/pread.c,
+ * ./sysdeps/unix/sysv/linux/pread.c,
* sysdeps/posix/pread.c
* sysdeps/posix/pwrite.c
* from GNU libc 2.2.5, but reworked considerably...
#include <sys/syscall.h>
#include <unistd.h>
-#ifndef __UCLIBC_HAS_LFS__
+#ifndef __UCLIBC_HAS_LFS__
# define off64_t off_t
#endif
void *, buf, size_t, count, off64_t, offset);
ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
-{
+{
return(__syscall_pread(fd, buf, count, (off64_t)offset));
}
weak_alias(__libc_pread,pread)
-# ifdef __UCLIBC_HAS_LFS__
+# ifdef __UCLIBC_HAS_LFS__
extern __typeof(pread64) __libc_pread64;
ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
-{
+{
return(__syscall_pread(fd, buf, count, offset));
}
weak_alias(__libc_pread64,pread64)
const void *, buf, size_t, count, off64_t, offset);
ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
-{
+{
return(__syscall_pwrite(fd, buf, count, (off64_t)offset));
}
weak_alias(__libc_pwrite,pwrite)
-# ifdef __UCLIBC_HAS_LFS__
+# ifdef __UCLIBC_HAS_LFS__
extern __typeof(pwrite64) __libc_pwrite64;
ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
-{
+{
return(__syscall_pwrite(fd, buf, count, offset));
}
weak_alias(__libc_pwrite64,pwrite64)
libc_hidden_proto(write)
libc_hidden_proto(lseek)
-static ssize_t __fake_pread_write(int fd, void *buf,
+static ssize_t __fake_pread_write(int fd, void *buf,
size_t count, off_t offset, int do_pwrite)
{
int save_errno;
ssize_t result;
off_t old_offset;
- /* Since we must not change the file pointer preserve the
+ /* Since we must not change the file pointer preserve the
* value so that we can restore it later. */
if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
return -1;
result = read(fd, buf, count);
}
- /* Now we have to restore the position. If this fails we
+ /* Now we have to restore the position. If this fails we
* have to return this as an error. */
save_errno = errno;
if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
return(result);
}
-# ifdef __UCLIBC_HAS_LFS__
+# ifdef __UCLIBC_HAS_LFS__
libc_hidden_proto(lseek64)
-static ssize_t __fake_pread_write64(int fd, void *buf,
+static ssize_t __fake_pread_write64(int fd, void *buf,
size_t count, off64_t offset, int do_pwrite)
{
int save_errno;
ssize_t result;
off64_t old_offset;
- /* Since we must not change the file pointer preserve the
+ /* Since we must not change the file pointer preserve the
* value so that we can restore it later. */
if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
return -1;
/* Set to wanted position. */
- if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
- return -1;
+ if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
+ return -1;
if (do_pwrite==1) {
/* Write the data. */
}
weak_alias(__libc_pread,pread)
-# ifdef __UCLIBC_HAS_LFS__
+# ifdef __UCLIBC_HAS_LFS__
ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
-{
+{
return(__fake_pread_write64(fd, buf, count, offset, 0));
}
weak_alias(__libc_pread64,pread64)
}
weak_alias(__libc_pwrite,pwrite)
-# ifdef __UCLIBC_HAS_LFS__
+# ifdef __UCLIBC_HAS_LFS__
ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
-{
+{
return(__fake_pread_write64(fd, (void*)buf, count, offset, 1));
}
weak_alias(__libc_pwrite64,pwrite64)
__BEGIN_DECLS
-/* These definitions are normally provided by ucontext.h via
- asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
- them here. */
+/* These definitions are normally provided by ucontext.h via
+ asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
+ them here. */
#ifndef __PPC64_ELF_H
#define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
#define ELF_NFPREG 33 /* includes fpscr */
#else
-/* For 64-bit kernels with Altivec support, a machine context is exactly
- * a sigcontext. For older kernel (without Altivec) the sigcontext matches
- * the mcontext upto but not including the v_regs field. For kernels that
- * don't AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
+/* For 64-bit kernels with Altivec support, a machine context is exactly
+ * a sigcontext. For older kernel (without Altivec) the sigcontext matches
+ * the mcontext upto but not including the v_regs field. For kernels that
+ * don't AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
* v_regs field may not exit and should not be referenced. The v_regd field
* can be refernced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
* is set in AT_HWCAP. */
-
+
/* Number of general registers. */
# define NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
# define NFPREG 33 /* includes fp0-fp31 &fpscr. */
typedef double fpregset_t[NFPREG];
/* Container for Altivec/VMX Vector Status and Control Register. Only 32-bits
- but can only be copied to/from a 128-bit vector register. So we allocated
+ but can only be copied to/from a 128-bit vector register. So we allocated
a whole quadword speedup save/restore. */
typedef struct _libc_vscr
{
gregset_t gp_regs;
fpregset_t fp_regs;
/*
- * To maintain compatibility with current implementations the sigcontext is
- * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
- * followed by an unstructured (vmx_reserve) field of 69 doublewords. This
- * allows the array of vector registers to be quadword aligned independent of
- * the alignment of the containing sigcontext or ucontext. It is the
- * responsibility of the code setting the sigcontext to set this pointer to
- * either NULL (if this processor does not support the VMX feature) or the
+ * To maintain compatibility with current implementations the sigcontext is
+ * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
+ * followed by an unstructured (vmx_reserve) field of 69 doublewords. This
+ * allows the array of vector registers to be quadword aligned independent of
+ * the alignment of the containing sigcontext or ucontext. It is the
+ * responsibility of the code setting the sigcontext to set this pointer to
+ * either NULL (if this processor does not support the VMX feature) or the
* address of the first quadword within the allocated (vmx_reserve) area.
*
- * The pointer (v_regs) of vector type (elf_vrreg_t) is essentually
- * an array of 34 quadword entries. The entries with
- * indexes 0-31 contain the corresponding vector registers. The entry with
- * index 32 contains the vscr as the last word (offset 12) within the
- * quadword. This allows the vscr to be stored as either a quadword (since
- * it must be copied via a vector register to/from storage) or as a word.
- * The entry with index 33 contains the vrsave as the first word (offset 0)
+ * The pointer (v_regs) of vector type (elf_vrreg_t) is essentually
+ * an array of 34 quadword entries. The entries with
+ * indexes 0-31 contain the corresponding vector registers. The entry with
+ * index 32 contains the vscr as the last word (offset 12) within the
+ * quadword. This allows the vscr to be stored as either a quadword (since
+ * it must be copied via a vector register to/from storage) or as a word.
+ * The entry with index 33 contains the vrsave as the first word (offset 0)
* within the quadword.
*/
vrregset_t *v_regs;
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#include <endian.h>
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
* directory of this archive for more details.
*/
-/*
+/*
* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
unsigned long long sc_pc;
unsigned long long sc_sr;
unsigned long long sc_fpscr;
-
+
} mcontext_t;
/* Userlevel context. */
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#if __WORDSIZE == 64
#define kernel_stat kernel_stat64
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
: "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__g1) \
: "cc"); \
__SYSCALL_RETURN(type) \
-}
+}
#undef _syscall5
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License. See the file COPYING.LIB in the main
* directory of this archive for more details.
- *
+ *
* Written by Miles Bader <miles@gnu.org>
*/
-/* Ripped from linux/include/asm-x86_64/stat.h
+/* Ripped from linux/include/asm-x86_64/stat.h
* and renamed 'struct stat' to 'struct kernel_stat' */
#ifndef _ASM_X86_64_STAT_H
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
#endif
/*
- Some of the sneaky macros in the code were taken from
+ Some of the sneaky macros in the code were taken from
glibc-2.2.5/sysdeps/unix/sysv/linux/x86_64/sysdep.h
*/
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \
-}
+}
#undef _syscall5
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
#error bits/kernel_stat.h is for internal uClibc use only!
#endif
-/* This file provides whatever this particular arch's kernel thinks
- * struct kernel_stat should look like... It turns out each arch has a
+/* This file provides whatever this particular arch's kernel thinks
+ * struct kernel_stat should look like... It turns out each arch has a
* different opinion on the subject... */
#define STAT_HAVE_NSEC 1
/* Note that we use the exact same include guard #define names
- * as asm/posix_types.h. This will avoid gratuitous conflicts
- * with the posix_types.h kernel header, and will ensure that
+ * as asm/posix_types.h. This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
* our private content, and not the kernel header, will win.
* -Erik
*/
#endif
/*
- Some of the sneaky macros in the code were taken from
+ Some of the sneaky macros in the code were taken from
glibc .../sysdeps/unix/sysv/linux/xtensa/sysdep.h
*/
#define C_DECL_ARGS_5(t, v, args...) t v, C_DECL_ARGS_4(args)
#define C_DECL_ARGS_6(t, v, args...) t v, C_DECL_ARGS_5(args)
-#define C_ARGS_0()
+#define C_ARGS_0()
#define C_ARGS_1(t, v) v
#define C_ARGS_2(t, v, args...) v, C_ARGS_1 (args)
#define C_ARGS_3(t, v, args...) v, C_ARGS_2 (args)
* Copyright (C) 2007 Tensilica Inc.
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
+ */
#include <unistd.h>
#include <sys/syscall.h>
* Copyright (C) 2007, 2008 Tensilica Inc.
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
+ */
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <bits/kernel_sigaction.h>
-#define SA_RESTORER 0x04000000
+#define SA_RESTORER 0x04000000
extern void __default_sa_restorer (void);
/* Experimentally off - libc_hidden_proto(memcpy) */
-int __libc_sigaction (int signum, const struct sigaction *act,
+int __libc_sigaction (int signum, const struct sigaction *act,
struct sigaction *oldact)
{
struct kernel_sigaction kact, koldact;
memset (mempcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
__KERNEL_NCCS * sizeof (cc_t)),
_POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
-#if 0
+#if 0
memset ( (memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0],
- __KERNEL_NCCS * sizeof (cc_t)) + (__KERNEL_NCCS * sizeof (cc_t))) ,
+ __KERNEL_NCCS * sizeof (cc_t)) + (__KERNEL_NCCS * sizeof (cc_t))) ,
_POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t));
#endif
} else {
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * 3. <BSD Advertising Clause omitted per the July 22, 1999 licensing change
- * ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change>
+ * 3. <BSD Advertising Clause omitted per the July 22, 1999 licensing change
+ * ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change>
*
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
/* Get file-specific information about descriptor FD. */
long int fpathconf(int fd, int name)
-{
+{
if (fd < 0)
{
__set_errno (EBADF);
return -1;
- }
+ }
if (name == _PC_LINK_MAX)
{
#endif
case _PC_ASYNC_IO:
-#if defined _POSIX_ASYNC_IO && defined __UCLIBC_HAS_LFS__
+#if defined _POSIX_ASYNC_IO && defined __UCLIBC_HAS_LFS__
{
/* AIO is only allowed on regular files and block devices. */
struct stat st;
retval = '?';
goto BAD;
}
-
+
if (s[1] == ':') { /* Option takes an arg? */
if (o[1]) { /* No space between option and arg? */
optarg = (char *)(o + 1);
* Modified for uClibc by Manuel Novoa III on 1/5/01.
* Modified once again for uClibc by Erik Andersen 8/7/02
*/
-\f
+
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
#ifndef _NO_PROTO
static struct _getopt_data getopt_data;
-\f
+
#ifndef __GNU_LIBRARY__
/* Avoid depending on library functions or files
#endif
#endif /* not __GNU_LIBRARY__ */
-\f
+
#ifdef _LIBC
/* Stored original parameters.
XXX This is no good solution. We should rather copy the args so
return optstring;
}
-\f
+
/* Scan elements of ARGV (whose length is ARGC) for option characters
given in OPTSTRING.
const struct option *__longopts, int *__longind,
int __long_only) attribute_hidden;
-\f
+
/* Reentrant versions which can handle parsing multiple argument
vectors at the same time. */
* SUCH DAMAGE.
*
* This version has been hevily modified for use with uClibc
- * November 2002, Erik Andersen <andersen@codepoet.org>
+ * November 2002, Erik Andersen <andersen@codepoet.org>
*/
#include <sys/param.h>
static u_int32_t old_rawkey0, old_rawkey1;
-/* Static stuff that stays resident and doesn't change after
- * being initialized, and therefore doesn't need to be made
+/* Static stuff that stays resident and doesn't change after
+ * being initialized, and therefore doesn't need to be made
* reentrant. */
static u_char init_perm[64], final_perm[64];
static u_char m_sbox[4][4096];
static const u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
-static int
+static int
ascii_to_bin(char ch)
{
if (ch > 'z')
*/
output[9] = '\0';
p = (u_char *)output + strlen(output);
- } else
+ } else
#endif
{
/*
context->state[3] = 0x10325476;
}
-/*
+/*
* MD5 block update operation. Continues an MD5 message-digest
* operation, processing another message block, and updating the
* context.
INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
/* Save old enable bits. */
- if (pflags & PR_FP_EXC_OVF)
+ if (pflags & PR_FP_EXC_OVF)
result |= FE_OVERFLOW;
- if (pflags & PR_FP_EXC_UND)
+ if (pflags & PR_FP_EXC_UND)
result |= FE_UNDERFLOW;
- if (pflags & PR_FP_EXC_INV)
+ if (pflags & PR_FP_EXC_INV)
result |= FE_INVALID;
- if (pflags & PR_FP_EXC_DIV)
+ if (pflags & PR_FP_EXC_DIV)
result |= FE_DIVBYZERO;
- if (pflags & PR_FP_EXC_RES)
+ if (pflags & PR_FP_EXC_RES)
result |= FE_INEXACT;
if (excepts & FE_INEXACT)
INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
/* Save old enable bits. */
- if (pflags & PR_FP_EXC_OVF)
+ if (pflags & PR_FP_EXC_OVF)
result |= FE_OVERFLOW;
- if (pflags & PR_FP_EXC_UND)
+ if (pflags & PR_FP_EXC_UND)
result |= FE_UNDERFLOW;
- if (pflags & PR_FP_EXC_INV)
+ if (pflags & PR_FP_EXC_INV)
result |= FE_INVALID;
- if (pflags & PR_FP_EXC_DIV)
+ if (pflags & PR_FP_EXC_DIV)
result |= FE_DIVBYZERO;
- if (pflags & PR_FP_EXC_RES)
+ if (pflags & PR_FP_EXC_RES)
result |= FE_INEXACT;
if (excepts & FE_INEXACT)
/* If the thread has registered an extrication interface, then
invoke the interface. If it returns 1, then we succeeded in
dequeuing the thread from whatever waiting object it was enqueued
- with. In that case, it is our responsibility to wake it up.
+ with. In that case, it is our responsibility to wake it up.
And also to set the p_woken_by_cancel flag so the woken thread
can tell that it was woken by cancellation. */
if (dorestart)
restart(th);
- else
+ else
kill(pid, __pthread_sig_cancel);
return 0;
** debugging on, add -DDEBUG_PT to CFLAGS. It was added to the original
** distribution of linuxthreads.
**
-** This program is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Library General Public License
-** as published by the Free Software Foundation; either version 2
-** of the License, or (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU Library General Public License for more details.
+** This program is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Library General Public License
+** as published by the Free Software Foundation; either version 2
+** of the License, or (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU Library General Public License for more details.
**
****************************************************************************/
#include <bits/uClibc_locale.h>
#endif /* __UCLIBC_HAS_XLOCALE__ */
-/* Use a funky version in a probably vein attempt at preventing gdb
+/* Use a funky version in a probably vein attempt at preventing gdb
* from dlopen()'ing glibc's libthread_db library... */
#define STRINGIFY(s) STRINGIFY2 (s)
#define STRINGIFY2(s) #s
/* If not terminated yet, suspend ourselves. */
if (! th->p_terminated) {
/* Register extrication interface */
- __pthread_set_own_extricate_if(self, &extr);
+ __pthread_set_own_extricate_if(self, &extr);
if (!(THREAD_GETMEM(self, p_canceled)
&& THREAD_GETMEM(self, p_cancelstate) == PTHREAD_CANCEL_ENABLE))
th->p_joining = self;
__pthread_unlock(&handle->h_lock);
if (already_canceled) {
- __pthread_set_own_extricate_if(self, 0);
+ __pthread_set_own_extricate_if(self, 0);
__pthread_do_exit(PTHREAD_CANCELED, CURRENT_STACK_FRAME);
}
suspend(self);
PDEBUG("after suspend\n");
/* Deregister extrication interface */
- __pthread_set_own_extricate_if(self, 0);
+ __pthread_set_own_extricate_if(self, 0);
/* This is a cancellation point */
if (THREAD_GETMEM(self, p_woken_by_cancel)
pthread_handle_free(request.req_args.free.thread_id);
break;
case REQ_PROCESS_EXIT:
- PDEBUG("got REQ_PROCESS_EXIT from %d, exit code = %d\n",
+ PDEBUG("got REQ_PROCESS_EXIT from %d, exit code = %d\n",
request.req_thread, request.req_args.exit.code);
pthread_handle_exit(request.req_thread,
request.req_args.exit.code);
{
stacksize = attr->__stacksize;
}
-
+
/* malloc a stack - memory from the bottom up */
if ((new_thread_bottom = malloc(stacksize)) == NULL)
{
*
* ^ +------------------------+
* | | pthread_descr struct |
- * | +------------------------+ <- new_thread
+ * | +------------------------+ <- new_thread
* malloc block | | |
* | | thread stack |
* | | |
new_thread = ((pthread_descr) ((int)(new_thread_bottom + stacksize) & -sizeof(void*))) - 1;
guardaddr = NULL;
guardsize = 0;
-
+
PDEBUG("thread stack: bos=%p, tos=%p\n", new_thread_bottom, new_thread);
-
+
/* check the initial thread stack boundaries so they don't overlap */
NOMMU_INITIAL_THREAD_BOUNDS((char *) new_thread, (char *) new_thread_bottom);
-
- PDEBUG("initial stack: bos=%p, tos=%p\n", __pthread_initial_thread_bos,
+
+ PDEBUG("initial stack: bos=%p, tos=%p\n", __pthread_initial_thread_bos,
__pthread_initial_thread_tos);
-
+
/* on non-MMU systems we always have non-standard stack frames */
__pthread_nonstandard_stacks = 1;
-
+
#endif /* __ARCH_USE_MMU__ */
}
/* ******************************************************** */
/* This code was moved from below to cope with running threads
* on uClinux systems. See comment below...
- * Insert new thread in doubly linked list of active threads */
+ * Insert new thread in doubly linked list of active threads */
new_thread->p_prevlive = __pthread_main_thread;
new_thread->p_nextlive = __pthread_main_thread->p_nextlive;
__pthread_main_thread->p_nextlive->p_prevlive = new_thread;
}
/* Check if cloning succeeded */
if (pid == -1) {
- /********************************************************
+ /********************************************************
* Code inserted to remove the thread from our list of active
- * threads in case of failure (needed to cope with uClinux),
+ * threads in case of failure (needed to cope with uClinux),
* See comment below. */
new_thread->p_nextlive->p_prevlive = new_thread->p_prevlive;
new_thread->p_prevlive->p_nextlive = new_thread->p_nextlive;
while (1) {
/* Register extrication interface */
- __pthread_set_own_extricate_if(self, &extr);
+ __pthread_set_own_extricate_if(self, &extr);
do {
oldstatus = sem->sem_status;
if ((oldstatus & 1) && (oldstatus != 1))
while (! sem_compare_and_swap(sem, oldstatus, newstatus));
if (newstatus & 1) {
/* We got the semaphore. */
- __pthread_set_own_extricate_if(self, 0);
+ __pthread_set_own_extricate_if(self, 0);
return 0;
}
/* Wait for sem_post or cancellation */
suspend(self);
- __pthread_set_own_extricate_if(self, 0);
+ __pthread_set_own_extricate_if(self, 0);
/* This is a cancellation point */
if (self->p_canceled && self->p_cancelstate == PTHREAD_CANCEL_ENABLE) {
startup of the C library. */
void __pthread_initialize_minimal(void)
{
- /* If we have special thread_self processing, initialize
+ /* If we have special thread_self processing, initialize
* that for the main thread now. */
#ifdef INIT_THREAD_SELF
INIT_THREAD_SELF(&__pthread_initial_thread, 0);
{ /* uClibc-specific stdio initialization for threads. */
FILE *fp;
-
+
_stdio_user_locking = 0; /* 2 if threading not initialized */
for (fp = _stdio_openlist; fp != NULL; fp = fp->__nextopen) {
if (fp->__user_locking != 1) {
}
#else
/* For non-MMU assume __pthread_initial_thread_tos at upper page boundary, and
- * __pthread_initial_thread_bos at address 0. These bounds are refined as we
+ * __pthread_initial_thread_bos at address 0. These bounds are refined as we
* malloc other stack frames such that they don't overlap. -StS
*/
__pthread_initial_thread_tos =
return THREAD_GETMEM(self, p_tid);
}
libpthread_hidden_def (pthread_self)
-
+
int pthread_equal(pthread_t thread1, pthread_t thread2)
{
return thread1 == thread2;
{
pthread_descr self = thread_self();
sigjmp_buf * jmpbuf;
-
+
if (self == &__pthread_manager_thread)
{
{
pthread_readlock_info *info = self->p_readlock_free;
- if (info != NULL)
+ if (info != NULL)
self->p_readlock_free = info->pr_next;
else
info = malloc(sizeof *info);
return info;
}
}
-
+
return NULL;
}
* This function helps support brain-damaged recursive read locking
* semantics required by Unix 98, while maintaining write priority.
* This basically determines whether this thread already holds a read lock
- * already. It returns 1 if so, otherwise it returns 0.
+ * already. It returns 1 if so, otherwise it returns 0.
*
* If the thread has any ``untracked read locks'' then it just assumes
* that this lock is among them, just to be safe, and returns 1.
else
self->p_untracked_readlock_count++;
}
-
+
return 0;
}
__pthread_lock (&rwlock->__rw_lock, self);
/* 0 is passed to here instead of have_lock_already.
- This is to meet Single Unix Spec requirements:
+ This is to meet Single Unix Spec requirements:
if writers are waiting, pthread_rwlock_tryrdlock
does not acquire a read lock, even if the caller has
one or more read locks already. */
self->p_untracked_readlock_count++;
}
}
-
+
return retval;
}
lock->__spinlock += (spin_count - lock->__spinlock) / 8;
}
-#endif
+#endif
again:
/* Spinlock implementation; required. */
-/* The SH5 does not have a suitable test-and-set instruction (SWAP only
+/* The SH5 does not have a suitable test-and-set instruction (SWAP only
operates on an aligned quad word). So we use the SH4 version instead.
This must be seperately compiled in SHcompact mode, so it cannot be
inline. */
__pthread_spin_lock (pthread_spinlock_t *lock)
{
int *p = (int *) lock;
-
+
while (__builtin_expect (__sync_val_compare_and_swap (p, 0, 1), 0))
{
/* Spin without using the atomic instruction. */
# define __uselocale(x) ((void)0)
#endif
-/* Use a funky version in a probably vein attempt at preventing gdb
+/* Use a funky version in a probably vein attempt at preventing gdb
* from dlopen()'ing glibc's libthread_db library... */
#define STRINGIFY(s) STRINGIFY2 (s)
#define STRINGIFY2(s) #s
-/* HP-PARISC macro definitions for mutexes, thread-specific data
+/* HP-PARISC macro definitions for mutexes, thread-specific data
and parameters for malloc.
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Carlos O'Donell <carlos@baldric.uwo.ca>, 2003.
-
+
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
# define mutex_unlock(m) \
__libc_maybe_call (__pthread_mutex_unlock, (m), \
(((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) )
-
+
/* This is defined by newer gcc version unique for each module. */
extern void *__dso_handle __attribute__ ((__weak__));
utmpname(_PATH_UTMP);
setutent();
-#if _HAVE_UT_TYPE - 0
+#if _HAVE_UT_TYPE - 0
copy.ut_type = USER_PROCESS;
-#endif
+#endif
#if _HAVE_UT_PID - 0
copy.ut_pid = getpid();
#endif
char *cp;
cp = crypt ("Hello world!", salt);
- if (strcmp ("$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1", cp)) {
+ if (strcmp ("$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1", cp)) {
fprintf(stderr, "Failed md5 crypt test!\n");
return EXIT_FAILURE;
}
int fd, i;
const char *ethers;
struct stat statb;
-
+
if ((fd = open(ETHER_FILE_NAME, O_RDONLY)) == -1) {
perror ("Cannot open file");
exit(1);
exit(1);
}
ethers = mmap(NULL, statb.st_size, PROT_READ, MAP_SHARED, fd, 0);
-
+
if (ethers == MAP_FAILED) {
perror("File mapping failed");
exit(1);
- }
+ }
ether_line(ethers, &addr, hostname);
-
+
for (i = 0; i < 6; i++) {
printf("%02x", addr.ether_addr_octet[i]);
if (i < 5)
char host[ETHER_LINE_LEN];
int i;
int res = ether_hostton("teeth", &addr);
-
+
if (res)
return 1;
} else {
free(ptr);
}
-
+
ptr = malloc(100);
ptr = realloc(ptr, 0);
if (ptr) {
free(y);
printf("about to free(0)\n");
free(0);
-
+
x=malloc(13);
printf("x = %p\n", x);
memcpy(x, "Small string", 13);
memcpy(y, "********** Larger string **********", 36);
printf("0x%p test string2: %s\n", y, (char *)y);
free(y);
-
-
+
+
printf("Allocate 100 nodes 500 bytes each\n");
save = 0;
for (i=0; i<100; i++) {
lp->next = save;
save = lp;
}
-
+
printf("freeing 100 nodes\n");
while (save) {
lp = save;
save = save->next;
free(lp);
}
-
+
printf("try realloc 100 times \n");
lp = 0;
for (i=1; i<=100; i++) {
void *unused_ret = realloc(lp, 0);
(void) unused_ret;
}
-
+
printf("Allocate another 100 nodes 600 bytes each\n");
save = 0;
for (i=0; i<100; i++) {
lp->next = save;
save = lp;
}
-
+
printf("freeing 100 nodes\n");
while (save) {
lp = save;
save = save->next;
free(lp);
}
-
+
printf("alloc test PASSED\n");
exit(0);
#include <stdlib.h>
#define REPS (100000)
-int sizes[] = {
+int sizes[] = {
100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50,
100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50,
100000, 1024, 42000, 350, 100, 80, 3 ,3,3,3,3,3,3,3,3,3,3,3,3,50,
/* The result can only be represented in long double. */
TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L);
TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L);
- TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L);
+ TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L);
TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L);
- TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L);
+ TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L);
- TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L);
- TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L);
+ TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L);
+ TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L);
TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L);
- TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L);
+ TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L);
TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L);
TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L);
TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L);
TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L);
TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L);
- TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L);
+ TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L);
#endif
END (trunc);
double d1, d2;
d1 = 0.6; d2 = rint(d1);
printf("d1 = %f, d2 = %f\n", d1, d2);
- return 0;
+ return 0;
}
!= GLOB_ABORTED)
{
puts ("glob did not fail with GLOB_ABORTED");
- exit (EXIT_FAILURE);
+ exit (EXIT_FAILURE);
}
globfree (&gl);
if (glob ("dir2/*", GLOB_DOOFFS, NULL, &gl) != GLOB_NOMATCH)
{
puts ("glob did not fail with GLOB_NOMATCH");
- exit (EXIT_FAILURE);
+ exit (EXIT_FAILURE);
}
globfree (&gl);
status = pthread_cond_timedwait(&foo.cond, &foo.mutex, &timeout);
}
pthread_mutex_unlock(&foo.mutex);
-
+
/* post the main event */
pthread_mutex_lock(&main_event.mutex);
main_event.flag = 1;
pthread_cond_signal(&main_event.cond);
pthread_mutex_unlock(&main_event.mutex);
-
+
/* that's it, bye */
return (void*) status;
}
printf ("count = %lu\n", count);
}
-
+
usleep (10);
}
else
#endif
fun = "regexec";
-
+
for (i = 0; i < elementsof(match); i++)
match[i] = state.NOMATCH;
static int g_counter = 0;
static int
-f (void)
+f (void)
{
static int counter = 0;
static int way_point1 = 3;
"10000000", "100000000", "1000000000",
/* negative */
- "-0", "-1", "-10",
+ "-0", "-1", "-10",
"-100", "-1000", "-10000", "-100000", "-1000000",
"-10000000", "-100000000", "-1000000000",
{
int i, cnt = 1;
char one[21], two[21];
-
+
it = "memcmp";
check(memcmp("a", "a", 1) == 0, cnt++); /* Identity. */
check(memcmp("abc", "abc", 3) == 0, cnt++); /* Multicharacter. */
/* We use this instead of memcmp because some broken C libraries
* add additional nonstandard fields to struct tm... */
-
+
int tm_cmp(struct tm tm1, struct tm tm2)
{
return tm1.tm_sec != tm2.tm_sec ||