1/* 2 * Copyright (c) 1999, 2008 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23/* 24 * Mach Operating System 25 * Copyright (c) 1991,1990 Carnegie Mellon University 26 * All Rights Reserved. 27 * 28 * Permission to use, copy, modify and distribute this software and its 29 * documentation is hereby granted, provided that both the copyright 30 * notice and this permission notice appear in all copies of the 31 * software, derivative works or modified versions, and any portions 32 * thereof, and that both notices appear in supporting documentation. 33 * 34 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS 35 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 36 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 37 * 38 * Carnegie Mellon requests users of this software to return to 39 * 40 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 41 * School of Computer Science 42 * Carnegie Mellon University 43 * Pittsburgh PA 15213-3890 44 * 45 * any improvements or extensions that they make and grant Carnegie the 46 * rights to redistribute these changes. 47 */ 48 49#include <mach/boolean.h> 50#include <ctype.h> 51#include "error.h" 52#include "alloc.h" 53#include "strdefs.h" 54 55string_t 56strmake(char *string) 57{ 58 register string_t saved; 59 60 saved = malloc(strlen(string) + 1); 61 if (saved == strNULL) 62 fatal("strmake('%s'): %s", string, strerror(errno)); 63 return strcpy(saved, string); 64} 65 66string_t 67strconcat(string_t left, string_t right) 68{ 69 register string_t saved; 70 71 saved = malloc(strlen(left) + strlen(right) + 1); 72 if (saved == strNULL) 73 fatal("strconcat('%s', '%s'): %s", left, right, strerror(errno)); 74 return strcat(strcpy(saved, left), right); 75} 76 77string_t 78strphrase(string_t left, string_t right) 79{ 80 string_t saved; 81 string_t current; 82 size_t llen; 83 84 llen = strlen(left); 85 saved = malloc(llen + strlen(right) + 2); 86 if (saved == strNULL) 87 fatal("strphrase('%s', '%s'): %s", left, right, strerror(errno)); 88 strcpy(saved, left); 89 current = saved + llen; 90 *(current++) = ' '; 91 strcpy(current, right); 92 free(left); 93 return(saved); 94} 95 96void 97strfree(string_t string) 98{ 99 free(string); 100} 101 102char * 103strbool(boolean_t bool) 104{ 105 if (bool) 106 return "TRUE"; 107 else 108 return "FALSE"; 109} 110 111char * 112strstring(string_t string) 113{ 114 if (string == strNULL) 115 return "NULL"; 116 else 117 return string; 118} 119 120char * 121toupperstr(char *p) 122{ 123 register char *s = p; 124 char c; 125 126 while ((c = *s)) { 127 if (islower(c)) 128 *s = toupper(c); 129 s++; 130 } 131 return(p); 132} 133