]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blobdiff - db/bit.c
Update copyright/license notices to match SGI legal prefered boilerplate.
[thirdparty/xfsprogs-dev.git] / db / bit.c
index de3337877860f0f953e7912a3f4f62da1bc502cf..dd1a3c9a20da98cf857354e8b09e7c4a159cd579 100644 (file)
--- a/db/bit.c
+++ b/db/bit.c
@@ -1,36 +1,22 @@
 /*
- * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
- * 
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
+ * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation.
- * 
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * 
- * Further, this software is distributed without any warranty that it is
- * free of the rightful claim of any third person regarding infringement
- * or the like.  Any license provided herein, whether implied or
- * otherwise, applies only to this software file.  Patent licenses, if
- * any, provided herein do not apply to combinations of this program with
- * other software, or any other product whatsoever.
- * 
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston MA 02111-1307, USA.
- * 
- * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
- * Mountain View, CA  94043, or:
- * 
- * http://www.sgi.com 
- * 
- * For further information regarding this notice, see: 
- * 
- * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <libxfs.h>
+#include <xfs/libxfs.h>
 #include "bit.h"
 
 #undef setbit  /* defined in param.h on Linux */
@@ -87,8 +73,8 @@ getbitval(
        __int64_t       rval;
        int             signext;
        int             z1, z2, z3, z4;
-        
-        ASSERT(nbits<=64);
+
+       ASSERT(nbits<=64);
 
        p = (char *)obj + byteize(bitoff);
        bit = bitoffs(bitoff);
@@ -121,25 +107,25 @@ getbitval(
                else
                        return (__int64_t)INT_GET(*(__uint8_t *)p, ARCH_CONVERT);
        }
-        
-        
+
+
        for (i = 0, rval = 0LL; i < nbits; i++) {
                if (getbit(p, bit + i)) {
-                       /* If the last bit is on and we care about sign 
-                         * bits and we don't have a full 64 bit 
-                         * container, turn all bits on between the 
-                         * sign bit and the most sig bit. 
-                         */
-                    
-                        /* handle endian swap here */
+                       /* If the last bit is on and we care about sign
+                        * bits and we don't have a full 64 bit
+                        * container, turn all bits on between the
+                        * sign bit and the most sig bit.
+                        */
+
+                       /* handle endian swap here */
 #if __BYTE_ORDER == LITTLE_ENDIAN
                        if (i == 0 && signext && nbits < 64)
                                rval = -1LL << nbits;
                        rval |= 1LL << (nbits - i - 1);
 #else
                        if ((i == (nbits - 1)) && signext && nbits < 64)
-                               rval |= (-1LL << nbits); 
-                       rval |= 1LL << i;
+                               rval |= (-1LL << nbits);
+                       rval |= 1LL << (nbits - i - 1);
 #endif
                }
        }
@@ -155,48 +141,48 @@ setbitval(
 {
        char    *in           = (char *)ibuf;
        char    *out          = (char *)obuf;
-        
+
        int     bit;
-        
+
 #if BYTE_ORDER == LITTLE_ENDIAN
-        int     big           = 0;
+       int     big           = 0;
 #else
-        int     big           = 1;
+       int     big           = 1;
 #endif
-   
-        /* only need to swap LE integers */ 
-        if (big || (nbits!=2 && nbits!=4 && nbits!=8) ) {
-                /* We don't have type info, so we can only assume
-                 * that 2,4 & 8 byte values are integers. sigh.
-                 */
-            
-                /* byte aligned ? */
-                if (bitoff%NBBY) {
-                        /* no - bit copy */
-                        for (bit=0; bit<nbits; bit++)
-                                setbit(out, bit+bitoff, getbit(in, bit));
-                } else {
-                        /* yes - byte copy */
-                        memcpy(out+byteize(bitoff), in, byteize(nbits));
-                }
-                
-        } else {
-               int     ibit;
-               int     obit;
-            
-                /* we need to endian swap this value */
-        
-                out+=byteize(bitoff); 
-                obit=bitoffs(bitoff);
-
-                ibit=nbits-NBBY;
-            
-                for (bit=0; bit<nbits; bit++) {
-                        setbit(out, bit+obit, getbit(in, ibit));
-                        if (ibit%NBBY==NBBY-1) 
-                                ibit-=NBBY*2-1;
-                        else
-                                ibit++;
-                }
-        }
+
+       /* only need to swap LE integers */
+       if (big || (nbits!=16 && nbits!=32 && nbits!=64) ) {
+               /* We don't have type info, so we can only assume
+                * that 2,4 & 8 byte values are integers. sigh.
+                */
+
+               /* byte aligned ? */
+               if (bitoff%NBBY) {
+                       /* no - bit copy */
+                       for (bit=0; bit<nbits; bit++)
+                               setbit(out, bit+bitoff, getbit(in, bit));
+               } else {
+                       /* yes - byte copy */
+                       memcpy(out+byteize(bitoff), in, byteize(nbits));
+               }
+
+       } else {
+               int     ibit;
+               int     obit;
+
+               /* we need to endian swap this value */
+
+               out+=byteize(bitoff);
+               obit=bitoffs(bitoff);
+
+               ibit=nbits-NBBY;
+
+               for (bit=0; bit<nbits; bit++) {
+                       setbit(out, bit+obit, getbit(in, ibit));
+                       if (ibit%NBBY==NBBY-1)
+                               ibit-=NBBY*2-1;
+                       else
+                               ibit++;
+               }
+       }
 }