]>
git.cameronkatri.com Git - apple_cmds.git/blob - diskdev_cmds/fdisk.tproj/misc.c
2 * Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
26 * Copyright (c) 1997 Tobias Weingartner
27 * All rights reserved.
29 * Redistribution and use in source and binary forms, with or without
30 * modification, are permitted provided that the following conditions
32 * 1. Redistributions of source code must retain the above copyright
33 * notice, this list of conditions and the following disclaimer.
34 * 2. Redistributions in binary form must reproduce the above copyright
35 * notice, this list of conditions and the following disclaimer in the
36 * documentation and/or other materials provided with the distribution.
37 * 3. All advertising materials mentioning features or use of this software
38 * must display the following acknowledgement:
39 * This product includes software developed by Tobias Weingartner.
40 * 4. The name of the author may not be used to endorse or promote products
41 * derived from this software without specific prior written permission.
43 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
44 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
45 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
46 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
47 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
48 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
49 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
52 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
66 char lbuf
[100], *cp
, *buf
;
69 if (fgets(lbuf
, sizeof lbuf
, stdin
) == NULL
)
71 lbuf
[strlen(lbuf
)-1] = '\0';
75 buf
= &buf
[strspn(buf
, " \t")];
76 cp
= &buf
[strcspn(buf
, " \t")];
78 strncpy(cmd
->cmd
, buf
, 10);
79 buf
= &cp
[strspn(cp
, " \t")];
80 strncpy(cmd
->args
, buf
, 100);
86 ask_num(const char *str
, int flags
, unsigned int dflt
, unsigned int low
, unsigned int high
, void (*help
) __P((void)))
95 printf("%s [%X - %X]: [%X] ", str
, low
, high
, num
);
97 printf("%s [%u - %u]: [%u] ", str
, low
, high
, num
);
99 printf("(? for help) ");
101 if (fgets(lbuf
, sizeof lbuf
, stdin
) == NULL
)
103 lbuf
[strlen(lbuf
)-1] = '\0';
105 if (help
&& lbuf
[0] == '?') {
112 num
= strtoul(lbuf
, &cp
, ((flags
==ASK_HEX
)?16:10));
114 /* Make sure only number present */
118 printf("'%s' is not a valid number.\n", lbuf
);
120 } else if (num
< low
|| num
> high
) {
121 printf("'%u' is out of range.\n", num
);
123 } while (num
< low
|| num
> high
);
129 ask_yn(const char *str
, int default_answer
)
133 printf("%s [%c] ", str
, default_answer
? 'y' : 'n');
136 first
= ch
= getchar();
137 while (ch
!= '\n' && ch
!= EOF
)
140 if (ch
== EOF
|| first
== EOF
)
144 return default_answer
;
146 return (first
== 'y' || first
== 'Y');
152 unsigned char *cp
= p
;
154 return (cp
[0] | (cp
[1] << 8));
158 putshort(void *p
, u_int16_t l
)
160 unsigned char *cp
= p
;
169 unsigned char *cp
= p
;
171 return (cp
[0] | (cp
[1] << 8) | (cp
[2] << 16) | (cp
[3] << 24));
175 putlong(void *p
, u_int32_t l
)
177 unsigned char *cp
= p
;