cygwin, 著名的在win32下模拟unix操作系统的东东

源代码在线查看: strcmp.c

软件大小: 8123 K
上传用户: zhangchao0219
关键词: cygwin unix win 32
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*				 * strcmp.c -- strcmp function.  On at least some MIPS chips, a strcmp that is				 * unrolled twice is faster than the 'optimized' C version in newlib.				 *				 * Copyright (c) 2001 Red Hat, Inc.				 *				 * The authors hereby grant permission to use, copy, modify, distribute,				 * and license this software and its documentation for any purpose, provided				 * that existing copyright notices are retained in all copies and that this				 * notice is included verbatim in any distributions. No written agreement,				 * license, or royalty fee is required for any of the authorized uses.				 * Modifications to this software may be copyrighted by their authors				 * and need not follow the licensing terms described here, provided that				 * the new terms are clearly indicated on the first page of each file where				 * they apply.  */								#include 				#include 				#include 								int				strcmp (const char *s1, const char *s2)				{ 				  unsigned const char *us1 = (unsigned const char *)s1;				  unsigned const char *us2 = (unsigned const char *)s2;				  int c1a, c1b;				  int c2a, c2b;								  /* If the pointers aren't both aligned to a 16-byte boundary, do the				     comparison byte by byte, so that we don't get an invalid page fault if we				     are comparing a string whose null byte is at the last byte on the last				     valid page.  */				  if (((((long)us1) | ((long)us2)) & 1) == 0)				    {				      c1a = *us1;				      for (;;)					{					  c1b = *us2;					  us1 += 2;					  if (c1a == '\0')					    goto ret1;									  c2a = us1[-1];					  if (c1a != c1b)					    goto ret1;									  c2b = us2[1];					  us2 += 2;					  if (c2a == '\0')					    break;									  c1a = *us1;					  if (c2a != c2b)					    break;					}								      return c2a - c2b;				    }				  else				    {				      do					{					  c1a = *us1++;					  c1b = *us2++;					}				      while (c1a != '\0' && c1a == c1b);				    }								 ret1:				  return c1a - c1b;				}							

相关资源