X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_packedtags2.c;h=e420f95da1918ae0738568ec263a731c9e8f9eee;hp=5cc68af9e7f3be9eb277ba981d44487c513fe1e1;hb=457fb8efdcd9b61c657b8b03b942f048eaa5168c;hpb=84699e12e914cb78ae3a1da48c99ed679b934153 diff --git a/yaffs_packedtags2.c b/yaffs_packedtags2.c index 5cc68af..e420f95 100644 --- a/yaffs_packedtags2.c +++ b/yaffs_packedtags2.c @@ -1,16 +1,14 @@ /* - * YAFFS: Yet another FFS. A NAND-flash specific file system. + * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. * - * yaffs_packedtags2.c: Tags packing for YAFFS2 - * - * Copyright (C) 2002 Aleph One Ltd. + * Copyright (C) 2002-2007 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. */ #include "yaffs_packedtags2.h" @@ -114,20 +112,34 @@ void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt) /* Page is in use */ #ifdef YAFFS_IGNORE_TAGS_ECC { - t->eccResult = 0; + t->eccResult = YAFFS_ECC_RESULT_NO_ERROR; } #else { yaffs_ECCOther ecc; + int result; yaffs_ECCCalculateOther((unsigned char *)&pt->t, sizeof (yaffs_PackedTags2TagsPart), &ecc); - t->eccResult = + result = yaffs_ECCCorrectOther((unsigned char *)&pt->t, sizeof (yaffs_PackedTags2TagsPart), &pt->ecc, &ecc); + switch(result){ + case 0: + t->eccResult = YAFFS_ECC_RESULT_NO_ERROR; + break; + case 1: + t->eccResult = YAFFS_ECC_RESULT_FIXED; + break; + case -1: + t->eccResult = YAFFS_ECC_RESULT_UNFIXED; + break; + default: + t->eccResult = YAFFS_ECC_RESULT_UNKNOWN; + } } #endif t->blockBad = 0;