added qse_strspn() and qse_strcspn()
This commit is contained in:
		| @ -9,7 +9,7 @@ lib_LTLIBRARIES = libqsecmn.la | ||||
| libqsecmn_la_SOURCES = \ | ||||
| 	syscall.h mem.h \ | ||||
| 	mem.c xma.c fma.c chr.c chr_cnv.c rex.c \ | ||||
| 	str_bas.c str_cnv.c str_dyn.c str_utl.c \ | ||||
| 	str_bas.c str_cnv.c str_dyn.c str_spn.c str_utl.c \ | ||||
| 	lda.c oht.c htb.c rbt.c sll.c gdl.c dll.c opt.c \ | ||||
| 	tio.c tio_get.c tio_put.c \ | ||||
| 	fio.c pio.c sio.c \ | ||||
|  | ||||
| @ -73,7 +73,7 @@ am__installdirs = "$(DESTDIR)$(libdir)" | ||||
| LTLIBRARIES = $(lib_LTLIBRARIES) | ||||
| libqsecmn_la_DEPENDENCIES = | ||||
| am_libqsecmn_la_OBJECTS = mem.lo xma.lo fma.lo chr.lo chr_cnv.lo \ | ||||
| 	rex.lo str_bas.lo str_cnv.lo str_dyn.lo str_utl.lo lda.lo \ | ||||
| 	rex.lo str_bas.lo str_cnv.lo str_dyn.lo str_spn.lo str_utl.lo lda.lo \ | ||||
| 	oht.lo htb.lo rbt.lo sll.lo gdl.lo dll.lo opt.lo tio.lo \ | ||||
| 	tio_get.lo tio_put.lo fio.lo pio.lo sio.lo alg_search.lo \ | ||||
| 	alg_sort.lo time.lo misc.lo assert.lo main.lo stdio.lo | ||||
| @ -264,7 +264,7 @@ lib_LTLIBRARIES = libqsecmn.la $(am__append_1) | ||||
| libqsecmn_la_SOURCES = \ | ||||
| 	syscall.h mem.h \ | ||||
| 	mem.c xma.c fma.c chr.c chr_cnv.c rex.c \ | ||||
| 	str_bas.c str_cnv.c str_dyn.c str_utl.c \ | ||||
| 	str_bas.c str_cnv.c str_dyn.c str_spn.c str_utl.c \ | ||||
| 	lda.c oht.c htb.c rbt.c sll.c gdl.c dll.c opt.c \ | ||||
| 	tio.c tio_get.c tio_put.c \ | ||||
| 	fio.c pio.c sio.c \ | ||||
| @ -385,6 +385,7 @@ distclean-compile: | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_bas.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_cnv.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_dyn.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_spn.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_utl.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tio.Plo@am__quote@ | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: mem.c 287 2009-09-15 10:01:02Z hyunghwan.chung $ | ||||
|  * $Id: mem.c 407 2011-03-23 02:21:14Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -430,7 +430,7 @@ static void mmgr_free (void* data, void* ptr) | ||||
|         free (ptr); | ||||
| } | ||||
|  | ||||
| static qse_mmgr_t mmgr = | ||||
| static qse_mmgr_t builtin_mmgr = | ||||
| { | ||||
| 	mmgr_alloc, | ||||
| 	mmgr_realloc, | ||||
| @ -438,4 +438,14 @@ static qse_mmgr_t mmgr = | ||||
| 	QSE_NULL | ||||
| }; | ||||
|  | ||||
| qse_mmgr_t* qse_mmgr = &mmgr; | ||||
| static qse_mmgr_t* dfl_mmgr = &builtin_mmgr; | ||||
|  | ||||
| qse_mmgr_t* qse_getdflmmgr () | ||||
| { | ||||
| 	return dfl_mmgr; | ||||
| } | ||||
|  | ||||
| void qse_setdflmmgr (qse_mmgr_t* mmgr) | ||||
| { | ||||
| 	dfl_mmgr = (mmgr? mmgr: &builtin_mmgr); | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: pio.c 405 2011-03-21 14:01:10Z hyunghwan.chung $ | ||||
|  * $Id: pio.c 407 2011-03-23 02:21:14Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -308,7 +308,7 @@ qse_pio_t* qse_pio_init ( | ||||
| 		 * handle[0] inherited. set the flag not to inherit handle[1]. */ | ||||
| 		if (DosSetFHState (handle[1], OPEN_FLAGS_NOINHERIT) != NO_ERROR) goto oops; | ||||
|  | ||||
| 		/* Need to do somthing like this to set the flag instead?  | ||||
| 		/* Need to do somthing like this to set the flag instead?  | ||||
| 		ULONG state;                | ||||
| 		DosQueryFHState (handle[1], &state); | ||||
| 		DosSetFHState (handle[1], state | OPEN_FLAGS_NOINHERIT); */ | ||||
| @ -467,37 +467,37 @@ qse_pio_t* qse_pio_init ( | ||||
| 		cmd_file = QSE_MT("cmd.exe"); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		qse_mchar_t* mptr; | ||||
|  | ||||
| 	#ifdef QSE_CHAR_IS_MCHAR | ||||
| 		qse_size_t mn = qse_strlen(cmd); | ||||
| 		cmd_line = qse_strdup2 (cmd, QSE_T(" "), pio->mmgr); | ||||
| 	{ | ||||
| 		qse_mchar_t* mptr; | ||||
|  | ||||
| 	#ifdef QSE_CHAR_IS_MCHAR | ||||
| 		qse_size_t mn = qse_strlen(cmd); | ||||
| 		cmd_line = qse_strdup2 (cmd, QSE_T(" "), pio->mmgr); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
| 	#else    | ||||
| 		qse_size_t n, mn; | ||||
| 		n = qse_wcstombslen (cmd, &mn); | ||||
| 		if (cmd[n] != QSE_T('\0')) goto oops; /* illegal sequence in cmd */ | ||||
|  | ||||
| 		mn = mn + 1; | ||||
| 		cmd_line = QSE_MMGR_ALLOC (pio->mmgr, mn * QSE_SIZEOF(qse_char_t)); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
|    | ||||
| 	#else    | ||||
| 		qse_size_t n, mn; | ||||
| 		n = qse_wcstombslen (cmd, &mn); | ||||
| 		if (cmd[n] != QSE_T('\0')) goto oops; /* illegal sequence in cmd */ | ||||
|  | ||||
| 		mn = mn + 1; | ||||
| 		cmd_line = QSE_MMGR_ALLOC (pio->mmgr, mn * QSE_SIZEOF(qse_char_t)); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
|    | ||||
| 		qse_wcstombs (cmd, cmd_line, &mn); | ||||
| 	#endif | ||||
|  | ||||
| 		/* TODO: enhance this part by: | ||||
| 		 *          supporting file names containing whitespaces. | ||||
| 		 *          detecting the end of the file name better. | ||||
| 		 *          doing better parsing of the command line. | ||||
| 		 */ | ||||
|  | ||||
| 		/* NOTE: you must separate the command name and the parameters with  | ||||
| 		 *       a space. "pstat.exe /c" is ok while "pstat.exe/c" is not. */ | ||||
| 		mptr = qse_mbschr (cmd_line, QSE_MT(' ')); | ||||
| 		if (mptr) *mptr = QSE_MT('\0'); | ||||
| 		cmd_line[mn+1] = QSE_MT('\0'); /* the second '\0' at the end */ | ||||
| 		cmd_file = cmd_line; | ||||
| 	#endif | ||||
|  | ||||
| 		/* TODO: enhance this part by: | ||||
| 		 *          supporting file names containing whitespaces. | ||||
| 		 *          detecting the end of the file name better. | ||||
| 		 *          doing better parsing of the command line. | ||||
| 		 */ | ||||
|  | ||||
| 		/* NOTE: you must separate the command name and the parameters with  | ||||
| 		 *       a space. "pstat.exe /c" is ok while "pstat.exe/c" is not. */ | ||||
| 		mptr = qse_mbschr (cmd_line, QSE_MT(' ')); | ||||
| 		if (mptr) *mptr = QSE_MT('\0'); | ||||
| 		cmd_line[mn+1] = QSE_MT('\0'); /* the second '\0' at the end */ | ||||
| 		cmd_file = cmd_line; | ||||
| 	} | ||||
|  | ||||
| 	/* execute the command line */ | ||||
| @ -697,7 +697,7 @@ qse_pio_t* qse_pio_init ( | ||||
| 				/* no field or an error */ | ||||
| 				goto child_oops; | ||||
| 			} | ||||
| 			 | ||||
| 			 | ||||
| 			/* calculate the length of the string after splitting */ | ||||
| 			for (wl = 0, n = fcnt; n > 0; ) | ||||
| 			{ | ||||
| @ -707,8 +707,8 @@ qse_pio_t* qse_pio_init ( | ||||
| 			n = qse_wcsntombsnlen (wcmd, wl, &mn); | ||||
| 			if (n != wl) goto child_oops; | ||||
| 		} | ||||
|  | ||||
| 		/* prepare to reserve 1 more slot for the terminating '\0' | ||||
|  | ||||
| 		/* prepare to reserve 1 more slot for the terminating '\0' | ||||
| 		 * by incrementing mn by 1. */ | ||||
| 		mn = mn + 1; | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user