File: stdlib.c

package info (click to toggle)
ruby1.8 1.8.7.302-2squeeze5
  • links: PTS, VCS
  • area: main
  • in suites: squeeze-lts
  • size: 26,692 kB
  • ctags: 38,616
  • sloc: ruby: 245,002; ansic: 144,156; yacc: 5,890; sh: 2,677; lisp: 1,626; tcl: 949; makefile: 358; sed: 129; xml: 122; awk: 36; cpp: 28; asm: 25; perl: 18; python: 6
file content (57 lines) | stat: -rw-r--r-- 1,047 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/***************************************************************
  stdlib.c
***************************************************************/

#include <windows.h>

char **environ;
extern char * rb_w32_getenv(const char *);

/* getenv should replace with rb_w32_getenv. */
char *getenv(const char *env)
{
	return rb_w32_getenv(env);
}

char *_fullpath(char *absPath, const char *relPath, 
				size_t maxLength)
{
	strcpy( absPath, relPath );
	return absPath;
}

int mblen(const char *mbstr, size_t count)
{
	const char *p = mbstr;
	size_t i;
	int    n=0;

	for( i=0; i<count; i++ )
	{
		if( *p=='\0' ) break;
		if( IsDBCSLeadByteEx( CP_ACP, *p ) )
			n+=2, p+=2;
		else
			n+=1, p+=1;
	}

	return n;
}

void *bsearch( const void *key, const void *base,
			   size_t num, size_t width,
			   int ( __cdecl *compare )(const void *, const void *))
{
	size_t i;
	const void* p = base;
	const char* px;

	for( i=0; i<num; i++ )
	{
		if( 0==compare( key, p ) )
			return (void*)p;
		px = (const char*)p; px+=width; p=(const void*)px;
	}
	return NULL;
}