/* * * @APPLE_LICENSE_HEADER_START@ * * Copyright (c) 1999-2008 Apple Inc. All Rights Reserved. * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in * compliance with the License. Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this * file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ * */ #include "GetWord.h" char* GetWord( char* toWordPtr, char* fromStrPtr, SInt32 limit ) { // get a word from a string // copy result into toWordPtr, return one past end of the // word, limit is max for toWordPtr // fromStrPtr // trim any leading white space while ( (unsigned char)*fromStrPtr <= 0x20 && *fromStrPtr ) fromStrPtr++; // copy until we find more white space while ( limit && (unsigned char)*fromStrPtr > 0x20 && *fromStrPtr ) { *toWordPtr++ = *fromStrPtr++; limit--; } *toWordPtr = 0x00; return (char *) fromStrPtr; } char * GetQuotedWord( char* toWordPtr, char* fromStrPtr, SInt32 limit ) { // get a quote encoded word from a string // make include white space int lastWasQuote = 0; // trim any leading white space while ( ( (unsigned char)*fromStrPtr <= 0x20 ) && *fromStrPtr ) fromStrPtr++; if ( (unsigned char)*fromStrPtr == '"' ) { // must lead with quote sign after white space fromStrPtr++; // copy until we find the last single quote while ( limit && *fromStrPtr ) { if ( (unsigned char)*fromStrPtr == '"' ) { if ( lastWasQuote ) { *toWordPtr++ = '"'; lastWasQuote = 0; limit--; } else lastWasQuote = 1; } else { if ( !lastWasQuote ) { *toWordPtr++ = *fromStrPtr; limit--; } else // we're done, hit a quote by itself break; } // consume the char we read fromStrPtr++; } } *toWordPtr = 0x00; return (char *) fromStrPtr; }