X-Git-Url: https://git.saurik.com/apple/boot.git/blobdiff_plain/f083c6c388c9bea8d87e360850329e0c60ce21aa..bba600dda0ea8a76d875db7308f372bfc43f8506:/i386/libsaio/ufs_byteorder.c?ds=inline diff --git a/i386/libsaio/ufs_byteorder.c b/i386/libsaio/ufs_byteorder.c index 198e694..a1c3f71 100644 --- a/i386/libsaio/ufs_byteorder.c +++ b/i386/libsaio/ufs_byteorder.c @@ -1,24 +1,23 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * - * Copyright (c) 1999-2003 Apple Computer, 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. + * Portions Copyright (c) 1999-2003 Apple Computer, 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.apple.com/publicsource 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 + * 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. + * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License. * * @APPLE_LICENSE_HEADER_END@ */ @@ -41,6 +40,7 @@ #define byte_swap_int(thing) ((thing) = OSSwapBigToHostInt32(thing)) #define byte_swap_short(thing) ((thing) = OSSwapBigToHostInt16(thing)) +#if UNUSED void byte_swap_longlongs(unsigned long long *array, int count) { @@ -49,9 +49,10 @@ byte_swap_longlongs(unsigned long long *array, int count) for (i = 0; i < (unsigned long long)count; i++) byte_swap_longlong(array[i]); } +#endif void -byte_swap_ints(int *array, int count) +byte_swap_ints(unsigned int *array, int count) { register int i; @@ -60,7 +61,7 @@ byte_swap_ints(int *array, int count) } void -byte_swap_shorts(short *array, int count) +byte_swap_shorts(unsigned short *array, int count) { register int i; @@ -68,8 +69,9 @@ byte_swap_shorts(short *array, int count) byte_swap_short(array[i]); } -void -swapBigIntsToHost(int *array, int count) +#if UNUSED +static void +swapBigIntsToHost(unsigned int *array, int count) { register int i; @@ -77,15 +79,15 @@ swapBigIntsToHost(int *array, int count) swapBigLongToHost(array[i]); } - -void -swapBigShortToHosts(short *array, int count) +static void +swapBigShortToHosts(unsigned short *array, int count) { register int i; for (i = 0; i < count; i++) swapBigShortToHost(array[i]); } +#endif void byte_swap_superblock(struct fs *sb) @@ -93,14 +95,16 @@ byte_swap_superblock(struct fs *sb) u_int16_t * usptr; unsigned long size; - byte_swap_ints(((int32_t *)&sb->fs_firstfield), 52); + byte_swap_ints(((u_int32_t *)&sb->fs_firstfield), 52); byte_swap_int(sb->fs_cgrotor); byte_swap_int(sb->fs_cpc); - byte_swap_shorts((int16_t *)sb->fs_opostbl, 16 * 8); - byte_swap_ints((int32_t *)sb->fs_sparecon, 50); - byte_swap_ints((int32_t *)&sb->fs_contigsumsize, 3); + byte_swap_shorts((u_int16_t *)sb->fs_opostbl, 16 * 8); + byte_swap_ints((u_int32_t *)sb->fs_sparecon, 50); + byte_swap_ints((u_int32_t *)&sb->fs_contigsumsize, 3); +#if UNUSED byte_swap_longlongs((u_int64_t *)&sb->fs_maxfilesize,3); - byte_swap_ints((int32_t *)&sb->fs_state, 6); +#endif + byte_swap_ints((u_int32_t *)&sb->fs_state, 6); /* Got these magic numbers from mkfs.c in newfs */ if (sb->fs_nrpos != 8 || sb->fs_cpc > 16) { @@ -110,87 +114,6 @@ byte_swap_superblock(struct fs *sb) } } -static inline void -byte_swap_disklabel_common(disk_label_t *dl) -{ - swapBigLongToHost(dl->dl_version); /* ditto */ - swapBigLongToHost(dl->dl_label_blkno); - swapBigLongToHost(dl->dl_size); - swapBigLongToHost(dl->dl_flags); - swapBigLongToHost(dl->dl_tag); -// swapBigShortToHost(dl->dl_checksum); -// if (dl->dl_version >= DL_V3) -// swapBigShortToHost(dl->dl_un.DL_v3_checksum); -// else -// swapBigIntsToHost(dl->dl_un.DL_bad, NBAD); -} - -void -byte_swap_disklabel_in(disk_label_t *dl) -{ - byte_swap_disklabel_common(dl); - byte_swap_disktab_in(&dl->dl_dt); -} - -static inline void -byte_swap_disktab_common(struct disktab *dt) -{ - register unsigned int i; - - swapBigLongToHost(dt->d_secsize); - swapBigLongToHost(dt->d_ntracks); - swapBigLongToHost(dt->d_nsectors); - swapBigLongToHost(dt->d_ncylinders); -// swapBigLongToHost(dt->d_rpm); - swapBigShortToHost(dt->d_front); - swapBigShortToHost(dt->d_back); -// swapBigShortToHost(dt->d_ngroups); -// swapBigShortToHost(dt->d_ag_size); -// swapBigShortToHost(dt->d_ag_alts); -// swapBigShortToHost(dt->d_ag_off); -// swapBigIntsToHost(dt->d_boot0_blkno, NBOOTS); - - for (i=0; i < NPART; i++) - byte_swap_partition(&dt->d_partitions[i]); -} - -/* - * This is particularly grody. The beginning of the partition array is two - * bytes low on the 68 wrt natural alignment rules. Furthermore, each - * element of the partition table is two bytes smaller on 68k due to padding - * at the end of the struct. - */ -void -byte_swap_disktab_in(struct disktab *dt) -{ - struct partition * pp; - int i; - - /* - * Shift each struct partition up in memory by 2 + 2 * offset bytes. - * Do it backwards so we don't overwrite anything. - */ - for (i=NPART - 1; i >=0; i--) { - struct partition temp; - pp = &dt->d_partitions[i]; - /* beware: compiler doesn't do overlapping struct assignment */ - temp = *(struct partition *)(((char *) pp) - 2 * (i + 1)); - *pp = temp; - } - - byte_swap_disktab_common(dt); -} - -void -byte_swap_partition(struct partition *part) -{ - swapBigLongToHost(part->p_base); - swapBigLongToHost(part->p_size); - swapBigShortToHost(part->p_bsize); - swapBigShortToHost(part->p_fsize); - swapBigShortToHost(part->p_cpg); - swapBigShortToHost(part->p_density); -} /* This value should correspond to the value set in the ffs_mounts */ @@ -201,34 +124,34 @@ byte_swap_dinode_in(struct dinode *di) { int i; - di->di_mode = NXSwapShort(di->di_mode); - di->di_nlink = NXSwapShort(di->di_nlink); + di->di_mode = OSSwapInt16(di->di_mode); + di->di_nlink = OSSwapInt16(di->di_nlink); #ifdef LFS - di->di_u.inumber = NXSwapLong(di->di_u.inumber); + di->di_u.inumber = OSSwapInt32(di->di_u.inumber); #else - di->di_u.oldids[0] = NXSwapShort(di->di_u.oldids[0]); - di->di_u.oldids[1] = NXSwapShort(di->di_u.oldids[1]); + di->di_u.oldids[0] = OSSwapInt16(di->di_u.oldids[0]); + di->di_u.oldids[1] = OSSwapInt16(di->di_u.oldids[1]); #endif - di->di_size = NXSwapLongLong(di->di_size); - di->di_atime = NXSwapLong(di->di_atime); - di->di_atimensec = NXSwapLong(di->di_atimensec); - di->di_mtime = NXSwapLong(di->di_mtime); - di->di_mtimensec = NXSwapLong(di->di_mtimensec); - di->di_ctime = NXSwapLong(di->di_ctime); - di->di_ctimensec = NXSwapLong(di->di_ctimensec); + di->di_size = OSSwapInt64(di->di_size); + di->di_atime = OSSwapInt32(di->di_atime); + di->di_atimensec = OSSwapInt32(di->di_atimensec); + di->di_mtime = OSSwapInt32(di->di_mtime); + di->di_mtimensec = OSSwapInt32(di->di_mtimensec); + di->di_ctime = OSSwapInt32(di->di_ctime); + di->di_ctimensec = OSSwapInt32(di->di_ctimensec); if (((di->di_mode & IFMT) != IFLNK ) || (di->di_size > RESYMLNKLEN)) { for (i=0; i < NDADDR; i++) /* direct blocks */ - di->di_db[i] = NXSwapLong(di->di_db[i]); + di->di_db[i] = OSSwapInt32(di->di_db[i]); for (i=0; i < NIADDR; i++) /* indirect blocks */ - di->di_ib[i] = NXSwapLong(di->di_ib[i]); + di->di_ib[i] = OSSwapInt32(di->di_ib[i]); } - di->di_flags = NXSwapLong(di->di_flags); - di->di_blocks = NXSwapLong(di->di_blocks); - di->di_gen = NXSwapLong(di->di_gen); - di->di_uid = NXSwapLong(di->di_uid); - di->di_gid = NXSwapLong(di->di_gid); - di->di_spare[0] = NXSwapLong(di->di_spare[0]); - di->di_spare[1] = NXSwapLong(di->di_spare[1]); + di->di_flags = OSSwapInt32(di->di_flags); + di->di_blocks = OSSwapInt32(di->di_blocks); + di->di_gen = OSSwapInt32(di->di_gen); + di->di_uid = OSSwapInt32(di->di_uid); + di->di_gid = OSSwapInt32(di->di_gid); + di->di_spare[0] = OSSwapInt32(di->di_spare[0]); + di->di_spare[1] = OSSwapInt32(di->di_spare[1]); } void