Exemplo n.º 1
0
LPCSTR strcmp_m (LPCSTR pszWhere, LPCSTR pszWhat)
{
	if (*pszWhere == 0)
		return *pszWhat == 0 ? pszWhere : NULL;

	if (*pszWhat == 0)
		return NULL;

	if (*pszWhat == '*')
	{
		if (pszWhat [1] == 0)
			return pszWhere;
		
		
		
		LPCSTR psz = strcmp_m (pszWhere, pszWhat+1);
		if (psz)
			return psz;

		
		return strcmp_m (pszWhere+1, pszWhat);
	}

	if (*pszWhat != '?')
	{
		if (*pszWhere != *pszWhat)
			return NULL;
	}

	return strcmp_m (pszWhere+1, pszWhat+1) ? pszWhere : NULL;
}
Exemplo n.º 2
0
Arquivo: moecc.c Projeto: xxami/moe-c
/**
 * moecc
 * [-v | --version]
 * [-f | -i | --input file1.moe file2.cc file3.mc file4.moec ..]
 * [-o | --output out.c]
 */
int main(int argc, char *argv[]) {
	int i;
	main_arg_state state = MainArgStateDefault;
	char *input = 0;
	char *output = 0;

	if (argc == 1) {
		printf("%s\n", "moecc [-v] [-f file.moe] [-o out.c] | man moecc");
		return 0;
	}
	for (i = 1; i < argc; i++) {
		if (strcmp_m(argv[i], 2, "-v", "--version")) {
			printf("%s%s\n", "moecc version :: c-", GIT_REVISION);
			return 0;
		}
		else if (strcmp_m(argv[i], 3, "-f", "-i", "--input")) {
			state = MainArgStateInput;
		}
		else if (strcmp_m(argv[i], 2, "-o", "--output")) {
			state = MainArgStateOutput;
		}
		else {
			if (state == MainArgStateInput) {
				if (input == 0) {
					input = argv[i];
				}
				else {
					printf("%s\n", "error :: more than one input");
				}
			}
			else if (state == MainArgStateOutput) {
				if (output == 0) {
					output = argv[i];
				}
				else {
					printf("%s\n", "error :: more than one output");
				}
			}
			else {
				printf("%s%s\n", "error :: invalid arg -> ", argv[i]);
				return 0;
			}
		}
	}	
	if (!input || !output) {
		printf("%s\n", "error :: missing input or output file");
		return 0;
	}
	else {
		/**
		 * safe to compile
		 */
		printf("compiling %s to %s... ", input, output);
		printf("%s\n", "done ~ bye!");
	}
	return 0;
}
Exemplo n.º 3
0
LPCSTR strcmpi_m (LPCSTR pszWhere, LPCSTR pszWhat)
{
	char *psz1 = new char [lstrlen (pszWhere) + 1];
	char *psz2 = new char [lstrlen (pszWhat) + 1];

	lstrcpy (psz1, pszWhere);
	lstrcpy (psz2, pszWhat);

	CharLower (psz1);
	CharLower (psz2);

	LPCSTR psz = strcmp_m (psz1, psz2);
	LPCSTR pszRet = NULL;
	if (psz)
		pszRet = pszWhere + (psz - psz1);

	delete [] psz1;
	delete [] psz2;

	return pszRet;
}