]> git.sur5r.net Git - freertos/commitdiff
Update FreeRTOS+FAT SL to version 1.0.1.
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Wed, 23 Apr 2014 13:28:21 +0000 (13:28 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Wed, 23 Apr 2014 13:28:21 +0000 (13:28 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2235 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

41 files changed:
FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/ConfigurationFiles/config_fat_sl.h
FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/ConfigurationFiles/config_fat_sl_test.h [new file with mode: 0644]
FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/ConfigurationFiles/config_mdriver_ram.h
FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/WIN32.vcxproj
FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/WIN32.vcxproj.filters
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/api/api_mdriver.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/api/api_mdriver_ram.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/api/fat_sl.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/config/config_fat_sl_template.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/config/config_mdriver_ram_template.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/dir.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/dir.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/drv.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/drv.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/f_lock.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/f_lock.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/fat.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/fat.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/file.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/file.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/util.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/util.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/util_sfn.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/util_sfn.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/volume.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/common/volume.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/test/test.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/fat_sl/test/test.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/media-drv/ram/ramdrv_f.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/psp/include/psp_rtc.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/psp/include/psp_string.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/psp/target/fat_sl/psp_test.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/psp/target/fat_sl/psp_test.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/psp/target/rtc/psp_rtc.c
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/History.txt [new file with mode: 0644]
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_fat_sl.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_mdriver.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_mdriver_ram.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_psp_fat_sl.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_psp_rtc.h
FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/ver_psp_string.h

index 373d780922895af2f95d8eae027af1ad295f770b..8647077ee7b13d7703396cbc4d48854e522426c6 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers\r
  * Ltd. by HCC Embedded for use with FreeRTOS.  It is not, in itself, part of\r
@@ -38,7 +38,7 @@
 #define _CONFIG_FAT_SL_H\r
 \r
 #include "../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/ConfigurationFiles/config_fat_sl_test.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_FAT_SL_and_CLI_Windows_Simulator/ConfigurationFiles/config_fat_sl_test.h
new file mode 100644 (file)
index 0000000..2f56f93
--- /dev/null
@@ -0,0 +1,62 @@
+/*\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
+ *\r
+ * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers\r
+ * Ltd. by HCC Embedded for use with FreeRTOS.  It is not, in itself, part of\r
+ * the FreeRTOS kernel.  FreeRTOS+FAT SL is licensed separately from FreeRTOS,\r
+ * and uses a different license to FreeRTOS.  FreeRTOS+FAT SL uses a dual\r
+ * license model, information on which is provided below:\r
+ *\r
+ * - Open source licensing -\r
+ * FreeRTOS+FAT SL is a free download and may be used, modified and distributed\r
+ * without charge provided the user adheres to version two of the GNU General\r
+ * Public license (GPL) and does not remove the copyright notice or this text.\r
+ * The GPL V2 text is available on the gnu.org web site, and on the following\r
+ * URL: http://www.FreeRTOS.org/gpl-2.0.txt\r
+ *\r
+ * - Commercial licensing -\r
+ * Businesses and individuals who wish to incorporate FreeRTOS+FAT SL into\r
+ * proprietary software for redistribution in any form must first obtain a\r
+ * commercial license - and in-so-doing support the maintenance, support and\r
+ * further development of the FreeRTOS+FAT SL product.  Commercial licenses can\r
+ * be obtained from http://shop.freertos.org and do not require any source files\r
+ * to be changed.\r
+ *\r
+ * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
+ * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as\r
+ * is'.  FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the\r
+ * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A\r
+ * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all\r
+ * conditions and terms, be they implied, expressed, or statutory.\r
+ *\r
+ * http://www.FreeRTOS.org\r
+ * http://www.FreeRTOS.org/FreeRTOS-Plus\r
+ *\r
+ */\r
+\r
+#ifndef _CONFIG_FAT_SL_TEST_H\r
+#define _CONFIG_FAT_SL_TEST_H\r
+\r
+#include "../version/ver_fat_sl.h"\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
+ #error Incompatible FAT_SL version number!\r
+#endif\r
+\r
+\r
+/*\r
+** Maximum size for seek test.\r
+** Options: 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768\r
+*/\r
+#define F_MAX_SEEK_TEST 16384\r
+\r
+\r
+/*\r
+** Defines media type for testing.\r
+** Options: F_FAT12_MEDIA, F_FAT16_MEDIA, F_FAT32_MEDIA\r
+*/\r
+#define F_FAT_TYPE      F_FAT16_MEDIA\r
+\r
+\r
+#endif /* ifndef _CONFIG_STHIN_TEST_H */\r
+\r
+\r
index 1c3ce96e5b286689d119227e5f14830897c71f0a..51f201883587c92221dd010dae1ee9f9680d7c40 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * FreeRTOS+FAT SL is an complementary component provided to Real Time Engineers\r
  * Ltd. by HCC Embedded for use with FreeRTOS.  It is not, in itself, part of\r
index 294c69b3c0b8184125400219e38373ab4e910599..6257eb79f49bdbe892b86d26e36070a6b0820d78 100644 (file)
     <ClInclude Include="..\..\Source\FreeRTOS-Plus-FAT-SL\api\fat_sl.h" />\r
     <ClInclude Include="..\..\Source\FreeRTOS-Plus-FAT-SL\fat_sl\common\f_lock.h" />\r
     <ClInclude Include="ConfigurationFiles\config_fat_sl.h" />\r
+    <ClInclude Include="ConfigurationFiles\config_fat_sl_test.h" />\r
     <ClInclude Include="FreeRTOSConfig.h" />\r
     <ClInclude Include="..\..\Source\FreeRTOS-Plus-FAT-SL\fat_sl\common\dir.h" />\r
     <ClInclude Include="..\..\Source\FreeRTOS-Plus-FAT-SL\fat_sl\common\drv.h" />\r
index e230fae6d3c6d143fcc644b0b12933cebf9e104d..72966a42879e348506638c555c6feaa034aebe8f 100644 (file)
     <ClInclude Include="..\..\Source\FreeRTOS-Plus-FAT-SL\fat_sl\common\f_lock.h">\r
       <Filter>FreeRTOS+\FreeRTOS+FAT SL</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="ConfigurationFiles\config_fat_sl_test.h">\r
+      <Filter>Configuration Files</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index 8e9b070813747a0558766dcd860c593e6aea9fa2..59940a33b01a228624d122dbd264f27d1807ac51 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index c7b3421218c15ceb94dc5e839bff464ddacd3182..750162dad0aa14b47be04861551cf76be9b3df9b 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index d18848c906294fe0242f3340e65cd366550f50ea..974a8bb15dcce6c85a5033988001ca4495b423cd 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -44,7 +44,7 @@
 #include "config_fat_sl.h"\r
 \r
 #include "../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -87,23 +87,6 @@ typedef struct
   F_POS           pos;\r
 } F_FIND;\r
 \r
-/* definitions for ctime */\r
-#define F_CTIME_SEC_SHIFT   0\r
-#define F_CTIME_SEC_MASK    0x001f  /*0-30 in 2seconds*/\r
-#define F_CTIME_MIN_SHIFT   5\r
-#define F_CTIME_MIN_MASK    0x07e0  /*0-59 */\r
-#define F_CTIME_HOUR_SHIFT  11\r
-#define F_CTIME_HOUR_MASK   0xf800  /*0-23*/\r
-\r
-\r
-/* definitions for cdate */\r
-#define F_CDATE_DAY_SHIFT   0\r
-#define F_CDATE_DAY_MASK    0x001f  /*0-31*/\r
-#define F_CDATE_MONTH_SHIFT 5\r
-#define F_CDATE_MONTH_MASK  0x01e0  /*1-12*/\r
-#define F_CDATE_YEAR_SHIFT  9\r
-#define F_CDATE_YEAR_MASK   0xfe00  /*0-119 (1980+value)*/\r
-\r
 #define F_ATTR_ARC         0x20\r
 #define F_ATTR_DIR         0x10\r
 #define F_ATTR_VOLUME      0x08\r
@@ -126,7 +109,6 @@ typedef struct
   unsigned long  abspos;\r
   unsigned long  filesize;\r
   unsigned long  startcluster;\r
-  unsigned long  prevcluster;\r
   unsigned long  relpos;\r
   unsigned char  modified;\r
   unsigned char  mode;\r
@@ -238,9 +220,6 @@ enum
  * for file changed events\r
  *\r
  ***************************************************************************/\r
-#ifndef F_FILE_CHANGED_EVENT\r
-       #define F_FILE_CHANGED_EVENT 0\r
-#endif\r
 \r
 #if F_FILE_CHANGED_EVENT\r
 \r
@@ -277,9 +256,17 @@ extern F_FILE_CHANGED_EVENTFUNC  f_filechangedevent;
  #define FACTION_ADDED            0x00000001\r
  #define FACTION_REMOVED          0x00000002\r
  #define FACTION_MODIFIED         0x00000003\r
+ #define FACTION_RENAMED_OLD_NAME 0x00000004\r
+ #define FACTION_RENAMED_NEW_NAME 0x00000005\r
 \r
 #endif /* if F_FILE_CHANGED_EVENT */\r
 \r
+unsigned char fs_init ( void );\r
+unsigned char fs_delete ( void );\r
+\r
+#define f_initvolume fn_initvolume\r
+#define f_delvolume  fn_delvolume\r
+\r
 unsigned char fn_initvolume ( F_DRIVERINIT initfunc );\r
 unsigned char fn_delvolume ( void );\r
 \r
@@ -318,7 +305,6 @@ F_FILE * fn_truncate ( const char *, long );
 unsigned char fn_getcwd ( char * buffer, unsigned char maxlen, char root );\r
 \r
 unsigned char fn_hardformat ( unsigned char fattype );\r
-unsigned char fn_format ( unsigned char fattype );\r
 \r
 unsigned char fn_getserial ( unsigned long * );\r
 \r
@@ -327,14 +313,6 @@ unsigned char fn_getserial ( unsigned long * );
 \r
 #include "FreeRTOS.h"\r
 #include "semphr.h"\r
-#ifndef FS_MUTEX_DEFINED\r
-       extern xSemaphoreHandle fs_lock_semaphore;\r
-#endif /* FS_MUTEX_DEFINED */\r
-\r
-unsigned char fn_init ( void );\r
-#define f_init fn_init\r
-#define f_initvolume fn_initvolume\r
-#define f_delvolume  fn_delvolume\r
 \r
 unsigned char fr_hardformat ( unsigned char fattype );\r
 #define f_hardformat( fattype ) fr_hardformat( fattype )\r
@@ -405,11 +383,6 @@ F_FILE * fr_truncate ( const char *, long );
 \r
 #else /* F_FS_THREAD_AWARE */\r
 \r
-unsigned char fn_init ( void );\r
-#define f_init fn_init\r
-#define f_initvolume fn_initvolume\r
-#define f_delvolume  fn_delvolume\r
-\r
 #define f_hardformat( fattype ) fn_hardformat( fattype )\r
 #define f_format( fattype )    fn_hardformat( fattype )\r
 \r
@@ -468,6 +441,7 @@ F_FILE * fn_truncate ( const char *, long );
 \r
 #endif /* F_FS_THREAD_AWARE */\r
 \r
+\r
 /****************************************************************************\r
  *\r
  * end of fat_sl.h\r
index 5b7314158163a814a025d989890c2a01e5def915..37b34395e26cce226d7883038e7eb0b7427e48d4 100644 (file)
@@ -1,29 +1,29 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
@@ -42,7 +42,7 @@
 #define _CONFIG_FAT_SL_H\r
 \r
 #include "../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index c0f59814d74a699177ab9b929262debe1b6b488b..7a3a4d362d3d1ad99979cdf0e91201b5d58fa916 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index e46c7f1a670abf25e5c7c7500a483b3c4d4001d9..92fd0d9615cbff95275bf9aee5b5c9106a1897bd 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -49,7 +49,7 @@
 #include "file.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -206,7 +206,9 @@ unsigned char _f_findfilewc ( char * name, char * ext, F_POS * pos, F_DIRENTRY *
         pos->cluster = gl_volume.bootrecord.rootcluster;\r
       }\r
       else\r
+      {\r
         return 0;\r
+      }\r
     }\r
 \r
     {\r
@@ -303,6 +305,7 @@ static void _f_getfilename ( char * dest, char * name, char * ext )
 unsigned long _f_getdecluster ( F_DIRENTRY * de )\r
 {\r
   unsigned long  cluster;\r
+\r
   if ( gl_volume.mediatype == F_FAT32_MEDIA )\r
   {\r
     cluster = _f_getword( &de->clusterhi );\r
@@ -384,6 +387,7 @@ unsigned char _f_findpath ( F_NAME * fsname, F_POS * pos )
       {\r
         return 0;\r
       }\r
+\r
       if ( !( de->attr & F_ATTR_DIR ) )\r
       {\r
         return 0;\r
@@ -506,8 +510,6 @@ unsigned char _f_findpath ( F_NAME * fsname, F_POS * pos )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
-\r
 unsigned char fn_getcwd ( char * buffer, unsigned char maxlen, char root )\r
 {\r
   unsigned char  a;\r
@@ -557,8 +559,6 @@ unsigned char fn_getcwd ( char * buffer, unsigned char maxlen, char root )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
-\r
 unsigned char fn_findfirst ( const char * filename, F_FIND * find )\r
 {\r
   unsigned char  ret;\r
@@ -605,8 +605,6 @@ unsigned char fn_findfirst ( const char * filename, F_FIND * find )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
-\r
 unsigned char fn_findnext ( F_FIND * find )\r
 {\r
   F_DIRENTRY   * de;\r
@@ -827,7 +825,9 @@ unsigned char _f_addentry ( F_NAME * fsname, F_POS * pos, F_DIRENTRY * * pde )
         pos->cluster = gl_volume.bootrecord.rootcluster;\r
       }\r
       else\r
+      {\r
         return F_ERR_NOMOREENTRY;\r
+      }\r
     }\r
 \r
     {\r
index 84c7de1c24d76adc7a9be913e94492a2e2b7ba2a..6bd8a2b97db1728189125515c1024e1d2be340e9 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define __DIR_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -51,6 +51,22 @@ extern "C" {
 #endif\r
 \r
 \r
+/* definitions for ctime */\r
+#define F_CTIME_SEC_SHIFT   0\r
+#define F_CTIME_SEC_MASK    0x001f  /*0-30 in 2seconds*/\r
+#define F_CTIME_MIN_SHIFT   5\r
+#define F_CTIME_MIN_MASK    0x07e0  /*0-59 */\r
+#define F_CTIME_HOUR_SHIFT  11\r
+#define F_CTIME_HOUR_MASK   0xf800  /*0-23*/\r
+\r
+\r
+/* definitions for cdate */\r
+#define F_CDATE_DAY_SHIFT   0\r
+#define F_CDATE_DAY_MASK    0x001f  /*0-31*/\r
+#define F_CDATE_MONTH_SHIFT 5\r
+#define F_CDATE_MONTH_MASK  0x01e0  /*1-12*/\r
+#define F_CDATE_YEAR_SHIFT  9\r
+#define F_CDATE_YEAR_MASK   0xfe00  /*0-119 (1980+value)*/\r
 \r
 \r
 #define NTRES_LOW           0x08 /*lower case name*/\r
index 41c5c2229da7bbace0dd8abef0569058f3f0efbd..ccc232475df653f7a82d18f217439d7d85e34e58 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -46,7 +46,7 @@
 #include "volume.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index d4dd245e211c13c41f278278b150c9f5bae994a5..5d0ff726ccdc95d62a89912bb807cf56b6f68d89 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define __DRV_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 35d13a2fff80520802ce6ec6e5bfa9fbea0e8c12..3a6ca633a5e4fe0053cdf57af55cf2385e7d3c7a 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 \r
 #include "../../api/fat_sl.h"\r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index abdb850b6a162e59c217c17545a6ba90163341e2..e62796014fc4e04699ebc7e2402e37272934aa5e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define _F_RTOS_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -51,7 +51,8 @@
 extern "C" {\r
 #endif\r
 \r
-unsigned char fr_init ( void );\r
+unsigned char fsr_init ( void );\r
+unsigned char fsr_delete ( void );\r
 \r
 #ifdef __cplusplus\r
 }\r
index 2063dd64465610ef08c41b18752ae35553aea248..057558e2e01c138148591078a96ff43015149abe 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -45,7 +45,7 @@
 #include "drv.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -487,7 +487,6 @@ unsigned char _f_getcurrsector ( void )
       return F_ERR_EOF;\r
     }\r
 \r
-    gl_file.prevcluster = gl_file.pos.cluster;\r
     _f_clustertopos( cluster, &gl_file.pos );\r
   }\r
 \r
@@ -510,7 +509,6 @@ unsigned char _f_getcurrsector ( void )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
 unsigned char _f_alloccluster ( unsigned long * pcluster )\r
 {\r
   unsigned long  maxcluster = gl_volume.maxcluster;\r
@@ -563,7 +561,6 @@ unsigned char _f_alloccluster ( unsigned long * pcluster )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
 unsigned char _f_removechain ( unsigned long cluster )\r
 {\r
   gl_volume.fatsector = (unsigned long)-1;\r
index 9923b39b7db62780d74465d2073f9c138b3bfcc5..8fb6e95f74d0e47baa6cf51d00cfa09708205039 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define __FAT_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 38b93a51b5fa5b6e62a0325b7def5d02b1ef7095..964b86c286757b581c32bd11a993c4fee3bce964 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
 #include "file.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
-static unsigned char _f_emptywritebuffer ( void );\r
+static unsigned char _f_stepnextsector ( void );\r
 \r
 \r
 /****************************************************************************\r
@@ -125,73 +125,77 @@ long fn_filelength ( const char * filename )
  * error code or zero if successful\r
  *\r
  ***************************************************************************/\r
-\r
-\r
-static unsigned char _f_emptywritebuffer ( void )\r
+static unsigned char _f_stepnextsector ( void )\r
 {\r
   unsigned char  ret;\r
+  unsigned char  b_alloc;\r
 \r
-  ret = _f_writeglsector( gl_file.pos.sector );\r
-  if ( ret )\r
+  b_alloc = 0;\r
+  gl_volume.fatsector = (unsigned long)-1;\r
+  if ( gl_file.startcluster == 0 )\r
   {\r
-    return ret;\r
+    b_alloc = 1;\r
   }\r
+  else\r
+  {\r
+    ++gl_file.pos.sector;\r
+    if ( gl_file.pos.sector >= gl_file.pos.sectorend )\r
+    {\r
+      unsigned long  value;\r
 \r
-  gl_file.modified = 0;\r
+      ret = _f_getclustervalue( gl_file.pos.cluster, &value );\r
+      if ( ret )\r
+      {\r
+        return ret;\r
+      }\r
 \r
-  gl_file.pos.sector++;\r
+      if ( ( value >= 2 ) && ( value < F_CLUSTER_RESERVED ) ) /*we are in chain*/\r
+      {\r
+        _f_clustertopos( value, &gl_file.pos );    /*go to next cluster*/\r
+      }\r
+      else\r
+      {\r
+        b_alloc = 1;\r
+      }\r
+    }\r
+  }\r
 \r
-  if ( gl_file.pos.sector >= gl_file.pos.sectorend )\r
+  if ( b_alloc != 0 )\r
   {\r
-    unsigned long  value;\r
+    unsigned long  nextcluster;\r
+\r
+    ret = _f_alloccluster( &nextcluster );\r
+    if ( ret )\r
+    {\r
+      return ret;\r
+    }\r
 \r
-    gl_volume.fatsector = (unsigned long)-1;\r
-    ret = _f_getclustervalue( gl_file.pos.cluster, &value );\r
+    ret = _f_setclustervalue( nextcluster, F_CLUSTER_LAST );\r
     if ( ret )\r
     {\r
       return ret;\r
     }\r
 \r
-    if ( ( value >= 2 ) && ( value < F_CLUSTER_RESERVED ) ) /*we are in chain*/\r
+    if ( gl_file.startcluster == 0 )\r
     {\r
-      gl_file.prevcluster = gl_file.pos.cluster;\r
-      _f_clustertopos( value, &gl_file.pos );    /*go to next cluster*/\r
+      gl_file.startcluster = nextcluster;\r
     }\r
     else\r
     {\r
-      unsigned long  nextcluster;\r
-\r
-      ret = _f_alloccluster( &nextcluster );\r
-      if ( ret )\r
-      {\r
-        return ret;\r
-      }\r
-\r
-      ret = _f_setclustervalue( nextcluster, F_CLUSTER_LAST );\r
-      if ( ret )\r
-      {\r
-        return ret;\r
-      }\r
-\r
       ret = _f_setclustervalue( gl_file.pos.cluster, nextcluster );\r
       if ( ret )\r
       {\r
         return ret;\r
       }\r
+    }\r
 \r
-      gl_file.prevcluster = gl_file.pos.cluster;\r
-\r
-      _f_clustertopos( nextcluster, &gl_file.pos );\r
+    _f_clustertopos( nextcluster, &gl_file.pos );\r
 \r
-      return _f_writefatsector();\r
-    }\r
+    return _f_writefatsector();\r
   }\r
 \r
-\r
   return F_NO_ERROR;\r
-} /* _f_emptywritebuffer */\r
-\r
-\r
+} /* _f_stepnextsector */\r
 \r
 \r
 /****************************************************************************\r
@@ -209,30 +213,65 @@ static unsigned char _f_extend ( long size )
   size -= gl_file.filesize;\r
   _size = (unsigned long)size;\r
 \r
-  rc = _f_getcurrsector();\r
-  if ( rc )\r
+  if ( gl_file.startcluster == 0 )\r
+  {\r
+    if ( _f_stepnextsector() )\r
+    {\r
+      return F_ERR_WRITE;\r
+    }\r
+  }\r
+  else\r
   {\r
-    return rc;\r
+    if ( ( gl_file.relpos > 0 ) && ( gl_file.relpos < F_SECTOR_SIZE ) )\r
+    {\r
+      rc = _f_getcurrsector();\r
+      if ( rc )\r
+      {\r
+        return rc;\r
+      }\r
+    }\r
   }\r
 \r
-  psp_memset( gl_sector + gl_file.relpos, 0, ( F_SECTOR_SIZE - gl_file.relpos ) );\r
-\r
-  if ( gl_file.relpos + _size > F_SECTOR_SIZE )\r
+  if ( gl_file.relpos + _size >= F_SECTOR_SIZE )\r
   {\r
-    _size -= ( F_SECTOR_SIZE - gl_file.relpos );\r
-    while ( _size )\r
+    if ( gl_file.relpos < F_SECTOR_SIZE )\r
     {\r
-      if ( _f_emptywritebuffer() )\r
+      psp_memset( gl_sector + gl_file.relpos, 0, ( F_SECTOR_SIZE - gl_file.relpos ) );\r
+      _size -= ( F_SECTOR_SIZE - gl_file.relpos );\r
+\r
+      if ( _f_writeglsector( gl_file.pos.sector ) )\r
+      {\r
+        return F_ERR_WRITE;\r
+      }\r
+    }\r
+\r
+    if ( _f_stepnextsector() )\r
+    {\r
+      return F_ERR_WRITE;\r
+    }\r
+\r
+    psp_memset( gl_sector, 0, F_SECTOR_SIZE );\r
+\r
+    while ( _size >= F_SECTOR_SIZE )\r
+    {\r
+      if ( _f_writeglsector( gl_file.pos.sector ) )\r
+      {\r
+        return F_ERR_WRITE;\r
+      }\r
+\r
+      if ( _f_stepnextsector() )\r
       {\r
         return F_ERR_WRITE;\r
       }\r
 \r
       psp_memset( gl_sector, 0, F_SECTOR_SIZE );\r
-      _size -= ( _size > F_SECTOR_SIZE ? F_SECTOR_SIZE : _size );\r
+\r
+      _size -= F_SECTOR_SIZE;\r
     }\r
   }\r
   else\r
   {\r
+    psp_memset( gl_sector + gl_file.relpos, 0, ( F_SECTOR_SIZE - gl_file.relpos ) );\r
     _size += gl_file.relpos;\r
   }\r
 \r
@@ -295,7 +334,6 @@ static unsigned char _f_fseek ( long offset )
     {\r
       gl_file.abspos = 0;\r
       gl_file.relpos = 0;\r
-      gl_file.prevcluster = 0;\r
       gl_file.pos.cluster = gl_file.startcluster;\r
       remain = gl_file.filesize;\r
 \r
@@ -326,7 +364,6 @@ static unsigned char _f_fseek ( long offset )
           break;\r
         }\r
 \r
-        gl_file.prevcluster = gl_file.pos.cluster;\r
         gl_file.pos.cluster = cluster;\r
       }\r
 \r
@@ -353,6 +390,10 @@ static unsigned char _f_fseek ( long offset )
         gl_file.relpos = (unsigned short)offset;\r
       }\r
     }\r
+    else\r
+    {\r
+      ret = _f_extend( offset );\r
+    }\r
   }\r
 \r
   return ret;\r
@@ -452,7 +493,7 @@ F_FILE * fn_open ( const char * filename, const char * mode )
     return 0;\r
   }\r
 \r
-  psp_memset( &gl_file, 0, 21 );\r
+  psp_memset( &gl_file, 0, sizeof( F_FILE ) );\r
 \r
   if ( !_f_findpath( &fsname, &gl_file.dirpos ) )\r
   {\r
@@ -605,27 +646,6 @@ F_FILE * fn_open ( const char * filename, const char * mode )
       return 0;        /*invalid mode*/\r
   } /* switch */\r
 \r
-  if ( ( m_mode != F_FILE_RD ) && ( gl_file.startcluster == 0 ) )\r
-  {\r
-    gl_volume.fatsector = (unsigned long)-1;\r
-    if ( _f_alloccluster( &( gl_file.startcluster ) ) )\r
-    {\r
-      return 0;\r
-    }\r
-\r
-    _f_clustertopos( gl_file.startcluster, &gl_file.pos );\r
-    if ( _f_setclustervalue( gl_file.startcluster, F_CLUSTER_LAST ) )\r
-    {\r
-      return 0;\r
-    }\r
-\r
-    if ( _f_writefatsector() )\r
-    {\r
-      return 0;\r
-    }\r
-  }\r
-\r
-\r
   gl_file.mode = m_mode; /* lock it */\r
   return (F_FILE *)1;\r
 } /* fn_open */\r
@@ -967,6 +987,11 @@ long fn_write ( const void * buf, long size, long _size_st, F_FILE * f )
   _size_st = retsize;\r
   retsize = 0;\r
 \r
+  if ( size == 0 )\r
+  {\r
+    return 0;\r
+  }\r
+\r
   if ( _f_getvolume() )\r
   {\r
     return 0;                     /*can't write*/\r
@@ -981,10 +1006,21 @@ long fn_write ( const void * buf, long size, long _size_st, F_FILE * f )
     }\r
   }\r
 \r
-  if ( _f_getcurrsector() )\r
+  if ( gl_file.startcluster == 0 )\r
   {\r
-    gl_file.mode = F_FILE_CLOSE;\r
-    return 0;\r
+    if ( _f_stepnextsector() )\r
+    {\r
+      gl_file.mode = F_FILE_CLOSE;\r
+      return 0;\r
+    }\r
+  }\r
+  else\r
+  {\r
+    if ( _f_getcurrsector() )\r
+    {\r
+      gl_file.mode = F_FILE_CLOSE;\r
+      return 0;\r
+    }\r
   }\r
 \r
   for( ; ; )\r
@@ -995,7 +1031,7 @@ long fn_write ( const void * buf, long size, long _size_st, F_FILE * f )
     {     /*now full*/\r
       if ( gl_file.modified )\r
       {\r
-        if ( _f_emptywritebuffer() )\r
+        if ( _f_writeglsector( gl_file.pos.sector ) )\r
         {\r
           gl_file.mode = F_FILE_CLOSE;\r
           if ( _f_updatefileentry( 0 ) == 0 )\r
@@ -1007,10 +1043,21 @@ long fn_write ( const void * buf, long size, long _size_st, F_FILE * f )
             return 0;\r
           }\r
         }\r
+\r
+        gl_file.modified = 0;\r
       }\r
-      else\r
+\r
+      if ( _f_stepnextsector() )\r
       {\r
-        gl_file.pos.sector++;       /*goto next*/\r
+        gl_file.mode = F_FILE_CLOSE;\r
+        if ( _f_updatefileentry( 0 ) == 0 )\r
+        {\r
+          return retsize;\r
+        }\r
+        else\r
+        {\r
+          return 0;\r
+        }\r
       }\r
 \r
       gl_file.abspos += gl_file.relpos;\r
index 63045303a3989344c0bd72b01d48a35768e25af5..b56093f7cfe962a3311758a7936fb008457a308c 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define __FILE_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 9d5ed9b6584e968b887c871ccc8f3076fb94ed68..59842a85c5224aa233cb18fd8a08cf90d98cf9a2 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -45,7 +45,7 @@
 #include "util.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 51be821203d18b7f2d61480700f2dbd9dfb558f8..2dfd8ac98d61dd9ae83ab7bf135ee3f310c19693 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -44,7 +44,7 @@
 #include "util_sfn.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index ec2c39aa588b53d575d3b7a3b5c16bb1e9fa210f..0ec64bbe40a626cdc9f4d701116c7e8d3b4590f8 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -43,7 +43,7 @@
 #include "util.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 9b4b2b68ac63a5161f7e07eaaf1eae16f0acd61a..1c5768a8d64868f1bd4a89b34ef81736b27aaa59 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -42,7 +42,7 @@
 #define __UTIL_SFN_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index 3325f4cde37973c6e82bf0eaed93525332226d29..b63068118283f74c48e22a2b73286ac5b4dbd760 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -49,7 +49,7 @@
 #include "file.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -112,8 +112,8 @@ static unsigned char _f_writebootrecord ( F_PHY * phy )
   unsigned char   rs;\r
   unsigned short  mre;\r
 \r
-  unsigned char  ret;\r
-  unsigned char  _n = 0;\r
+  unsigned char   ret;\r
+  unsigned char   _n = 0;\r
 \r
   if ( gl_volume.mediatype == F_FAT32_MEDIA )\r
   {  /*write FS_INFO*/\r
@@ -379,6 +379,7 @@ static unsigned char _f_prepareformat ( F_PHY * phy, unsigned char fattype )
 \r
     gl_volume.bootrecord.sector_per_cluster = FAT32_CS[i].sector_per_cluster;\r
   }\r
+\r
   if ( !gl_volume.bootrecord.sector_per_cluster )\r
   {\r
     return F_ERR_INVALIDMEDIA;                                               /*fat16 cannot be there*/\r
@@ -869,17 +870,52 @@ unsigned char fn_getserial ( unsigned long * serial )
   return 0;\r
 }\r
 \r
+\r
 /*\r
-** fn_init\r
+** fs_init\r
 **\r
-** Initialize FAT_SL file system\r
+** Initialize STHIN file system\r
 **\r
 ** RETURN: F_NO_ERROR on success, other if error.\r
 */\r
-unsigned char fn_init ( void )\r
+unsigned char fs_init ( void )\r
 {\r
-  return F_NO_ERROR;\r
-} /* fn_init */\r
+  unsigned char  rc = F_NO_ERROR;\r
+\r
+#if RTOS_SUPPORT\r
+  rc = fsr_init();\r
+  if ( rc )\r
+  {\r
+    return rc;\r
+  }\r
+\r
+#endif\r
+  return rc;\r
+} /* fs_init */\r
+\r
+\r
+/*\r
+** fs_delete\r
+**\r
+** Delete STHIN file system\r
+**\r
+** RETURN: F_NO_ERROR on success, other if error.\r
+*/\r
+unsigned char fs_delete ( void )\r
+{\r
+  unsigned char  rc = F_NO_ERROR;\r
+\r
+#if RTOS_SUPPORT\r
+  rc = fsr_delete();\r
+  if ( rc )\r
+  {\r
+    return rc;\r
+  }\r
+\r
+#endif\r
+  return rc;\r
+} /* fs_delete */\r
+\r
 \r
 /****************************************************************************\r
  *\r
@@ -896,16 +932,18 @@ unsigned char fn_init ( void )
 unsigned char fn_initvolume ( F_DRIVERINIT initfunc )\r
 {\r
 #if F_FS_THREAD_AWARE == 1\r
-  {\r
-    if( fs_lock_semaphore == NULL )\r
-    {\r
-      fs_lock_semaphore = xSemaphoreCreateMutex();\r
-      if( fs_lock_semaphore == NULL )\r
-      {\r
-        return F_ERR_OS;\r
-      }\r
-    }\r
-  }\r
+       {\r
+               extern xSemaphoreHandle fs_lock_semaphore;\r
+\r
+               if( fs_lock_semaphore == NULL )\r
+               {\r
+                       fs_lock_semaphore = xSemaphoreCreateMutex();\r
+                       if( fs_lock_semaphore == NULL )\r
+                       {\r
+                               return F_ERR_OS;\r
+                       }\r
+               }\r
+       }\r
 #endif /* F_FS_THREAD_AWARE */\r
 \r
   gl_volume.state = F_STATE_NONE;\r
@@ -925,6 +963,7 @@ unsigned char fn_initvolume ( F_DRIVERINIT initfunc )
   return _f_getvolume();\r
 } /* fn_initvolume */\r
 \r
+\r
 /****************************************************************************\r
  *\r
  * fn_delvolume\r
index 16a1d016cf2c8a15b5533f8328710d98f2e18605..a70de03b51e0ed8bec49759e3d100a207ad47817 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -44,7 +44,7 @@
 #include "config_fat_sl.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
index b25e05c19bfa154ab2e41b85b99d3044c3ae04a1..c74047a3ae33ed1b582a353a0893767b521bf209 100644 (file)
@@ -1,33 +1,29 @@
-#ifndef _TEST_C_\r
-#define _TEST_C_\r
-\r
-\r
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
 \r
 #include "test.h"\r
 #include "../../api/fat_sl.h"\r
+#include "config_fat_sl_test.h"\r
 #include "../../psp/target/fat_sl/psp_test.h"\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
@@ -139,19 +136,19 @@ static unsigned char f_formatting ( void )
   ret = f_format( F_FAT_TYPE );\r
   if ( ret )\r
   {\r
-    return _f_result( 0, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 1, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 2, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -188,327 +185,327 @@ static unsigned char f_dirtest ( void )
   ret = f_mkdir( "a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 1, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "ab" );\r
   if ( ret )\r
   {\r
-    return _f_result( 2, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "abc" );\r
   if ( ret )\r
   {\r
-    return _f_result( 3, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "abca" );\r
   if ( ret )\r
   {\r
-    return _f_result( 4, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*creates directories in /a  -  a ab abc abcd*/\r
   ret = f_mkdir( "a/a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 5, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "a/ab" );\r
   if ( ret )\r
   {\r
-    return _f_result( 6, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "a/abc" );\r
   if ( ret )\r
   {\r
-    return _f_result( 7, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "a/abcd" );\r
   if ( ret )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*change into a/abcd and check cwd*/\r
   ret = f_chdir( "a/abcd" );\r
   if ( ret )\r
   {\r
-    return _f_result( 9, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 10, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*make directory t change into t and check cwd="a/abcd/t"*/\r
   ret = f_mkdir( "t" );\r
   if ( ret )\r
   {\r
-    return _f_result( 11, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "t" );\r
   if ( ret )\r
   {\r
-    return _f_result( 12, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd/t" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "." );\r
   if ( ret )\r
   {\r
-    return _f_result( 14, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd/t" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 15, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "../." );\r
   if ( ret )\r
   {\r
-    return _f_result( 16, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 17, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*removing t dir*/\r
   ret = f_rmdir( "t" );\r
   if ( ret )\r
   {\r
-    return _f_result( 18, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "t" );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 19, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*removing /a dir*/\r
   ret = f_rmdir( "/ab" );\r
   if ( ret )\r
   {\r
-    return _f_result( 20, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "/ab" );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*removing /a dir*/\r
   ret = f_rmdir( "../../a" );\r
   if ( ret != F_ERR_NOTEMPTY )\r
   {\r
-    return _f_result( 22, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*removing /abca dir*/\r
   ret = f_rmdir( "a:/abca" );\r
   if ( ret )\r
   {\r
-    return _f_result( 24, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*changing invalid dirs*/\r
   ret = f_chdir( "" );\r
   if ( ret != F_ERR_INVALIDNAME )\r
   {\r
-    return _f_result( 25, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( " " );\r
   if ( ret )\r
   {\r
-    return _f_result( 26, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 27, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "?" );\r
   if ( ret != F_ERR_INVALIDNAME )\r
   {\r
-    return _f_result( 28, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "*.*" );\r
   if ( ret != F_ERR_INVALIDNAME )\r
   {\r
-    return _f_result( 29, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/a/abcd" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 30, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*changing into /abc and removes subfolder from /a/ */\r
   ret = f_chdir( "/abc" );\r
   if ( ret )\r
   {\r
-    return _f_result( 31, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "/a/a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 32, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "A:../a/ab" );\r
   if ( ret )\r
   {\r
-    return _f_result( 33, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "A:/a/abc" );\r
   if ( ret )\r
   {\r
-    return _f_result( 34, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( ".././abc/.././a/../a/abcd" );\r
   if ( ret )\r
   {\r
-    return _f_result( 35, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*some invalid rmdir*/\r
   ret = f_rmdir( "." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 36, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( ".." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 37, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*create again abc remove abc*/\r
   ret = f_mkdir( ".././abc" );\r
   if ( ret != F_ERR_DUPLICATED )\r
   {\r
-    return _f_result( 38, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "../abc" );\r
   if ( ret )\r
   {\r
-    return _f_result( 39, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( ".././abc" );\r
   if ( ret != F_ERR_INVALIDDIR )\r
   {\r
-    return _f_result( 40, ret );                         /*cwd is not exist*/\r
+    return _f_result( __LINE__, ret );                         /*cwd is not exist*/\r
   }\r
 \r
   ret = f_chdir( "/" );\r
   if ( ret )\r
   {\r
-    return _f_result( 41, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*try . and .. in the root*/\r
   ret = f_chdir( "." );\r
   if ( ret )\r
   {\r
-    return _f_result( 42, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "./././." );\r
   if ( ret )\r
   {\r
-    return _f_result( 43, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( ".." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 44, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( "/" ); /*root!*/\r
   if ( ret )\r
   {\r
-    return _f_result( 45, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*test . and .. in a and remove a*/\r
   ret = f_chdir( "a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 46, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( ".." );\r
   if ( ret )\r
   {\r
-    return _f_result( 47, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 48, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "." );\r
   if ( ret )\r
   {\r
-    return _f_result( 49, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "a" );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 50, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "./.." );\r
   if ( ret )\r
   {\r
-    return _f_result( 51, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "a" );\r
   if ( ret )\r
   {\r
-    return _f_result( 52, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*check if all are removed*/\r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 53, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -528,92 +525,92 @@ static unsigned char f_findingtest ( void )
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 0, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*create Hello.dir*/\r
   ret = f_mkdir( "Hello.dir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 1, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*check if it is exist, and only exist*/\r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 2, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "Hello.dir" ) ) )\r
   {\r
-    return _f_result( 3, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( find.attr != F_ATTR_DIR )\r
   {\r
-    return _f_result( 4, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 5, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*check some not founds*/\r
   ret = f_findfirst( "q*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 6, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "Hello.", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 7, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "a/*.*", &find );\r
   if ( ret != F_ERR_INVALIDDIR )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( ".", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 9, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "..", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 10, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "?e.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 11, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 12, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.?", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.??", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 14, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -621,219 +618,219 @@ static unsigned char f_findingtest ( void )
   ret = f_findfirst( "*.dir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 15, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.d?r", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 16, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.d??", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 17, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.???", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 18, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "?ello.???", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 19, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "he??o.dir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 20, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "he?*.dir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "HELLO.DIR", &find ); /*no capitals sensitivity in find!!*/\r
   if ( ret )\r
   {\r
-    return _f_result( 22, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*change into hello.dir*/\r
   ret = f_chdir( "hello.dir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 23, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 24, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "..", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 25, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "??", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 26, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( ".", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 27, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "k*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 28, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 29, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, "." ) )\r
   {\r
-    return _f_result( 29, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 29, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, ".." ) )\r
   {\r
-    return _f_result( 29, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 29, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
   ret = f_findfirst( "*.a", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 30, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*creating testdir and find it*/\r
   ret = f_mkdir( "testdir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 31, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 32, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, "." ) )\r
   {\r
-    return _f_result( 32, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 32, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, ".." ) )\r
   {\r
-    return _f_result( 32, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 32, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 33, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 34, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, "." ) )\r
   {\r
-    return _f_result( 35, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 35, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, ".." ) )\r
   {\r
-    return _f_result( 35, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 36, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 37, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 38, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*search exact file*/\r
   ret = f_findfirst( "testDir", &find ); /*no capitals!*/\r
   if ( ret )\r
   {\r
-    return _f_result( 39, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 40, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 41, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -841,26 +838,26 @@ static unsigned char f_findingtest ( void )
   ret = f_chdir( "\\" );\r
   if ( ret )\r
   {\r
-    return _f_result( 42, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "Hello.dir/testdir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 43, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "Hello.dir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 44, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*check if all are removed*/\r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 45, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -877,154 +874,154 @@ static unsigned char f_powerfail ( void )
   ret = f_mkdir( "testdir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 0, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 1, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "testdir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 2, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*checking formatting*/\r
   ret = f_format( F_FAT_TYPE );\r
   if ( ret )\r
   {\r
-    return _f_result( 3, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 4, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 5, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*checking formatting, 1st creating*/\r
   ret = f_format( F_FAT_TYPE );\r
   if ( ret )\r
   {\r
-    return _f_result( 6, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "testdir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 7, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "testdir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 9, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 10, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 11, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 12, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*checking formatting, 2nd creating*/\r
   ret = f_format( F_FAT_TYPE );\r
   if ( ret )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "testdir" );\r
   if ( ret )\r
   {\r
-    return _f_result( 14, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "testdir", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 15, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 16, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_mkdir( "testdir2" );\r
   if ( ret )\r
   {\r
-    return _f_result( 17, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "testdir2", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 18, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir2" ) ) )\r
   {\r
-    return _f_result( 19, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 20, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir" ) ) )\r
   {\r
-    return _f_result( 22, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret )\r
   {\r
-    return _f_result( 23, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( strcmp( find.filename, f_nameconv( "testdir2" ) ) )\r
   {\r
-    return _f_result( 24, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_findnext( &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 25, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -1032,25 +1029,25 @@ static unsigned char f_powerfail ( void )
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 26, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_format( F_FAT_TYPE );\r
   if ( ret )\r
   {\r
-    return _f_result( 27, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_poweron();\r
   if ( ret )\r
   {\r
-    return _f_result( 28, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_findfirst( "*.*", &find );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 29, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -1092,60 +1089,65 @@ static unsigned char f_seeking ( int sectorsize )
   unsigned char  ret;\r
   unsigned long  size;\r
   unsigned long  pos;\r
+  unsigned long  fname_pos;\r
+  char         * test_fname[4] =\r
+  {\r
+    "test1.txt", "test2.txt", "test3.txt", "test4.txt"\r
+  };\r
 \r
   if ( sectorsize == 128 )\r
   {\r
     _f_dump( "f_seeking with 128" );\r
   }\r
 \r
-  #if ( F_MAX_SEEK_TEST > 128 )\r
+#if ( F_MAX_SEEK_TEST > 128 )\r
   else if ( sectorsize == 256 )\r
   {\r
     _f_dump( "f_seeking with 256" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 256 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 256 )\r
   else if ( sectorsize == 512 )\r
   {\r
     _f_dump( "f_seeking with 512" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 512 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 512 )\r
   else if ( sectorsize == 1024 )\r
   {\r
     _f_dump( "f_seeking with 1024" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 1024 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 1024 )\r
   else if ( sectorsize == 2048 )\r
   {\r
     _f_dump( "f_seeking with 2048" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 2048 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 2048 )\r
   else if ( sectorsize == 4096 )\r
   {\r
     _f_dump( "f_seeking with 4096" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 4096 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 4096 )\r
   else if ( sectorsize == 8192 )\r
   {\r
     _f_dump( "f_seeking with 8192" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 8192 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 8192 )\r
   else if ( sectorsize == 16384 )\r
   {\r
     _f_dump( "f_seeking with 16384" );\r
   }\r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 16384 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 16384 )\r
   else if ( sectorsize == 32768 )\r
   {\r
     _f_dump( "f_seeking with 32768" );\r
   }\r
-  #endif\r
+#endif\r
   else\r
   {\r
     _f_dump( "f_seeking with random" );\r
@@ -1155,98 +1157,98 @@ static unsigned char f_seeking ( int sectorsize )
   file = f_open( "test.bin", "w+" );\r
   if ( !file )\r
   {\r
-    return _f_result( 0, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*write sectorsize times 0*/\r
   psp_memset( testbuffer, 0, sectorsize );\r
   size = (unsigned long)f_write( testbuffer, 1, (long)sectorsize, file );\r
-  if ( size != (unsigned long) sectorsize )\r
+  if ( size != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 1, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) sectorsize )\r
+  if ( pos != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 2, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek back and read some*/\r
   ret = f_seek( file, 0, F_SEEK_SET ); /*seek back*/\r
   if ( ret )\r
   {\r
-    return _f_result( 3, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos )\r
   {\r
-    return _f_result( 4, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
   size = (unsigned long)f_read( testbuffer, 1, sectorsize, file );\r
-  if ( size != (unsigned long) sectorsize )\r
+  if ( size != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 5, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) sectorsize )\r
+  if ( pos != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 6, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*fake read at eof*/\r
   size = (unsigned long)f_read( testbuffer, 1, 2, file ); /*eof!*/\r
   if ( size != 0 )\r
   {\r
-    return _f_result( 7, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) sectorsize )\r
+  if ( pos != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 8, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*writing sectorsize times 1 at the end*/\r
   psp_memset( testbuffer, 1, sectorsize );\r
   size = (unsigned long)f_write( testbuffer, 1, sectorsize, file );\r
-  if ( size != (unsigned long) sectorsize )\r
+  if ( size != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 11, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( sectorsize * 2 ) )\r
+  if ( pos != (unsigned long)( sectorsize * 2 ) )\r
   {\r
-    return _f_result( 12, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seeking back and read 1byte less*/\r
   ret = f_seek( file, 0, F_SEEK_SET );\r
   if ( ret )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos )\r
   {\r
-    return _f_result( 14, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
   size = (unsigned long)f_read( testbuffer, 1, sectorsize - 1, file );\r
-  if ( size != (unsigned long) ( sectorsize - 1 ) )\r
+  if ( size != (unsigned long)( sectorsize - 1 ) )\r
   {\r
-    return _f_result( 15, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( sectorsize - 1 ) )\r
+  if ( pos != (unsigned long)( sectorsize - 1 ) )\r
   {\r
-    return _f_result( 16, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 \r
@@ -1255,26 +1257,26 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 2, file );\r
   if ( size != 2 )\r
   {\r
-    return _f_result( 17, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( sectorsize + 1 ) )\r
+  if ( pos != (unsigned long)( sectorsize + 1 ) )\r
   {\r
-    return _f_result( 18, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*read 2 bytes*/\r
   size = (unsigned long)f_read( testbuffer, 2, 1, file );\r
   if ( size != 1 )\r
   {\r
-    return _f_result( 19, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( sectorsize + 3 ) )\r
+  if ( pos != (unsigned long)( sectorsize + 3 ) )\r
   {\r
-    return _f_result( 20, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 \r
@@ -1283,26 +1285,26 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 4, file );\r
   if ( size != 4 )\r
   {\r
-    return _f_result( 21, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( sectorsize + 3 + 4 ) )\r
+  if ( pos != (unsigned long)( sectorsize + 3 + 4 ) )\r
   {\r
-    return _f_result( 22, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek at 2*/\r
   ret = f_seek( file, 2, F_SEEK_SET );\r
   if ( ret )\r
   {\r
-    return _f_result( 23, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos != 2 )\r
   {\r
-    return _f_result( 24, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*write 6 times 4*/\r
@@ -1310,39 +1312,39 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 6, file );\r
   if ( size != 6 )\r
   {\r
-    return _f_result( 25, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos != 8 )\r
   {\r
-    return _f_result( 26, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek end -4*/\r
   ret = f_seek( file, -4, F_SEEK_END );\r
   if ( ret )\r
   {\r
-    return _f_result( 27, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize - 4 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize - 4 ) )\r
   {\r
-    return _f_result( 28, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*read 2 bytes*/\r
   size = (unsigned long)f_read( testbuffer, 1, 2, file );\r
   if ( size != 2 )\r
   {\r
-    return _f_result( 29, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize - 2 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize - 2 ) )\r
   {\r
-    return _f_result( 30, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*write 8 times 5*/\r
@@ -1350,39 +1352,39 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 8, file );\r
   if ( size != 8 )\r
   {\r
-    return _f_result( 31, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize + 6 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize + 6 ) )\r
   {\r
-    return _f_result( 32, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek to the begining*/\r
   ret = f_seek( file, 0, F_SEEK_SET );\r
   if ( ret )\r
   {\r
-    return _f_result( 33, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos )\r
   {\r
-    return _f_result( 34, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek to the end*/\r
   ret = f_seek( file, 2 * sectorsize + 6, F_SEEK_SET );\r
   if ( ret )\r
   {\r
-    return _f_result( 35, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize + 6 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize + 6 ) )\r
   {\r
-    return _f_result( 36, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*write 2 times 6*/\r
@@ -1390,51 +1392,51 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 2, file );\r
   if ( size != 2 )\r
   {\r
-    return _f_result( 37, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize + 8 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize + 8 ) )\r
   {\r
-    return _f_result( 38, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*seek to the begining*/\r
   (void)f_seek( file, -( 2 * sectorsize + 8 ), F_SEEK_CUR );\r
   if ( ret )\r
   {\r
-    return _f_result( 39, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
   if ( pos )\r
   {\r
-    return _f_result( 40, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*read 2 times sector*/\r
   size = (unsigned long)f_read( testbuffer, 1, sectorsize, file );\r
-  if ( size != (unsigned long) sectorsize )\r
+  if ( size != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 41, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) sectorsize )\r
+  if ( pos != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 42, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
   size = (unsigned long)f_read( testbuffer, 1, sectorsize, file );\r
-  if ( size != (unsigned long) sectorsize )\r
+  if ( size != (unsigned long)sectorsize )\r
   {\r
-    return _f_result( 43, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize ) )\r
   {\r
-    return _f_result( 44, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*write 1 once 7*/\r
@@ -1442,118 +1444,433 @@ static unsigned char f_seeking ( int sectorsize )
   size = (unsigned long)f_write( testbuffer, 1, 1, file );\r
   if ( size != 1 )\r
   {\r
-    return _f_result( 45, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize + 1 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize + 1 ) )\r
   {\r
-    return _f_result( 46, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*close it*/\r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 47, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
 /*check the result*/\r
   size = (unsigned long)f_filelength( "test.bin" );\r
-  if ( size != (unsigned long) ( 2 * sectorsize + 8 ) )\r
+  if ( size != (unsigned long)( 2 * sectorsize + 8 ) )\r
   {\r
-    return _f_result( 48, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*opens it*/\r
   file = f_open( "test.bin", "r" );\r
   if ( !file )\r
   {\r
-    return _f_result( 49, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   if ( checkfilecontent( 2, 0, file ) )\r
   {\r
-    return _f_result( 50, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 6, 4, file ) )\r
   {\r
-    return _f_result( 51, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( sectorsize - 8 - 1, 0, file ) )\r
   {\r
-    return _f_result( 52, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 2, 2, file ) )\r
   {\r
-    return _f_result( 53, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 2, 1, file ) )\r
   {\r
-    return _f_result( 54, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 4, 3, file ) )\r
   {\r
-    return _f_result( 55, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( sectorsize - 7 - 2, 1, file ) )\r
   {\r
-    return _f_result( 56, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 2, 5, file ) )\r
   {\r
-    return _f_result( 57, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 1, 7, file ) )\r
   {\r
-    return _f_result( 58, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 5, 5, file ) )\r
   {\r
-    return _f_result( 59, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( checkfilecontent( 2, 6, file ) )\r
   {\r
-    return _f_result( 60, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*check pos result*/\r
   pos = (unsigned long)f_tell( file );\r
-  if ( pos != (unsigned long) ( 2 * sectorsize + 8 ) )\r
+  if ( pos != (unsigned long)( 2 * sectorsize + 8 ) )\r
   {\r
-    return _f_result( 61, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*this has to be eof*/\r
   pos = f_eof( file );\r
   if ( !pos )\r
   {\r
-    return _f_result( 62, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
 /*close it*/\r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 63, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 /*deletes it*/\r
   ret = f_delete( "test.bin" );\r
   if ( ret )\r
   {\r
-    return _f_result( 64, ret );\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  /**************************************************************/\r
+  for ( pos = 0 ; pos < 4 ; pos++ )\r
+  {\r
+    file = f_open( test_fname[pos], "w" );\r
+    if ( file == NULL )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    memset( testbuffer, '0' + pos, sectorsize );\r
+    if ( f_write( testbuffer, 1, sectorsize - 1, file ) != ( sectorsize - 1 ) )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    ret = f_close( file );\r
+    if ( ret != F_NO_ERROR )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+  }\r
+\r
+  ret = f_delete( test_fname[0] );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_delete( test_fname[2] );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  file = f_open( "test.txt", "w" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  memset( testbuffer, 'a', sectorsize );\r
+  if ( f_write( testbuffer, 1, sectorsize, file ) != sectorsize )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  file = f_open( "test.txt", "r+" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_seek( file, 2 * sectorsize, F_SEEK_SET );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  for ( pos = 0 ; pos < 2 ; pos++ )\r
+  {\r
+    file = f_open( "test.txt", "r+" );\r
+    if ( file == NULL )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    ret = f_seek( file, ( pos + 2 ) * sectorsize, F_SEEK_SET );\r
+    if ( ret != F_NO_ERROR )\r
+    {\r
+      return _f_result( __LINE__, ret );\r
+    }\r
+\r
+    memset( testbuffer, 'b' + pos, sectorsize );\r
+    if ( f_write( testbuffer, 1, sectorsize, file ) != sectorsize )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    ret = f_close( file );\r
+    if ( ret != F_NO_ERROR )\r
+    {\r
+      return _f_result( __LINE__, ret );\r
+    }\r
+  }\r
+\r
+  fname_pos = 1;\r
+  for ( pos = 0 ; pos < 2 ; pos++ )\r
+  {\r
+    file = f_open( test_fname[fname_pos], "r" );\r
+    if ( file == NULL )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    if ( checkfilecontent( sectorsize - 1, '0' + ( unsigned char ) fname_pos, file ) )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    ret = f_close( file );\r
+    if ( ret != F_NO_ERROR )\r
+    {\r
+      return _f_result( __LINE__, ret );\r
+    }\r
+\r
+    fname_pos = 3;\r
+  }\r
+\r
+  file = f_open( "test.txt", "r" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize, 'a', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize, 0, file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize, 'b', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize, 'c', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_delete( "test.txt" );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  /************************************/\r
+  file = f_open( "test.txt", "w" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_seek( file, sectorsize - 2, F_SEEK_SET );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  file = f_open( "test.txt", "r+" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  memset( testbuffer, 'f', 2 );\r
+  if ( f_write( testbuffer, 1, 2, file ) != 2 )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_seek( file, sectorsize - 2, F_SEEK_SET );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  memset( testbuffer, 'g', 3 );\r
+  if ( f_write( testbuffer, 1, 3, file ) != 3 )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  file = f_open( "test.txt", "r+" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_seek( file, sectorsize * 2, F_SEEK_SET );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  memset( testbuffer, 'h', sectorsize );\r
+  if ( f_write( testbuffer, 1, sectorsize, file ) != sectorsize )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  size = f_filelength( "test.txt" );\r
+  if ( size != ( unsigned long ) ( 3 * sectorsize ) )\r
+  {\r
+    return _f_result( __LINE__, size );\r
+  }\r
+\r
+  fname_pos = 1;\r
+  for ( pos = 0 ; pos < 2 ; pos++ )\r
+  {\r
+    file = f_open( test_fname[fname_pos], "r" );\r
+    if ( file == NULL )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    if ( checkfilecontent( sectorsize - 1, '0' + ( unsigned char ) fname_pos, file ) )\r
+    {\r
+      return _f_result( __LINE__, 0 );\r
+    }\r
+\r
+    ret = f_close( file );\r
+    if ( ret != F_NO_ERROR )\r
+    {\r
+      return _f_result( __LINE__, ret );\r
+    }\r
+\r
+    fname_pos = 3;\r
+  }\r
+\r
+  file = f_open( "test.txt", "r" );\r
+  if ( file == NULL )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( 2, 'f', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize - 4, 0, file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( 3, 'g', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize - 1, 0, file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  if ( checkfilecontent( sectorsize, 'h', file ) )\r
+  {\r
+    return _f_result( __LINE__, 0 );\r
+  }\r
+\r
+  ret = f_close( file );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_delete( "test.txt" );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_delete( test_fname[1] );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
+  }\r
+\r
+  ret = f_delete( test_fname[3] );\r
+  if ( ret != F_NO_ERROR )\r
+  {\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -1573,38 +1890,38 @@ static unsigned char f_opening ( void )
   file = f_open( "file.bin", "r" );\r
   if ( file )\r
   {\r
-    return _f_result( 0, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   file = f_open( "file.bin", "r+" );\r
   if ( file )\r
   {\r
-    return _f_result( 1, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*test non existing appends    "a" a+*/\r
   file = f_open( "file.bin", "a" );\r
   if ( !file )\r
   {\r
-    return _f_result( 2, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   file2 = f_open( "file.bin", "a+" ); /*open again*/\r
   if ( file2 )\r
   {\r
-    return _f_result( 3, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 3, 1 );\r
+    return _f_result( __LINE__, 1 );\r
   }\r
 \r
   ret = f_close( file2 );\r
   if ( ret != F_ERR_NOTOPEN )\r
   {\r
-    return _f_result( 3, 2 );\r
+    return _f_result( __LINE__, 2 );\r
   }\r
 \r
 \r
@@ -1612,7 +1929,7 @@ static unsigned char f_opening ( void )
   file = f_open( "file.bin", "w" );\r
   if ( !file )\r
   {\r
-    return _f_result( 4, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*write 512 times 1*/\r
@@ -1620,65 +1937,65 @@ static unsigned char f_opening ( void )
   size = (unsigned short)f_write( testbuffer, 1, 512, file ); /*test write*/\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 5, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*go back, and read it*/\r
   ret = f_rewind( file ); /*back to the begining*/\r
   if ( ret )\r
   {\r
-    return _f_result( 6, ret );       /*it should fail*/\r
+    return _f_result( __LINE__, ret );       /*it should fail*/\r
   }\r
 \r
   size = (unsigned short)f_read( testbuffer, 1, 512, file ); /*test read*/\r
   if ( size )\r
   {\r
-    return _f_result( 7, size );        /*it should fail*/\r
+    return _f_result( __LINE__, size );        /*it should fail*/\r
   }\r
 \r
 /*close and check size*/\r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size )\r
   {\r
-    return _f_result( 8, size );        /*has to be zero*/\r
+    return _f_result( __LINE__, size );        /*has to be zero*/\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 9, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 10, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*try to owerwrites it it*/\r
   file = f_open( "file.bin", "w+" );\r
   if ( !file )\r
   {\r
-    return _f_result( 11, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*close and check size*/\r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size )\r
   {\r
-    return _f_result( 12, size );        /*has to be zero*/\r
+    return _f_result( __LINE__, size );        /*has to be zero*/\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size )\r
   {\r
-    return _f_result( 14, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
@@ -1687,7 +2004,7 @@ static unsigned char f_opening ( void )
   file = f_open( "file.bin", "r+" );\r
   if ( !file )\r
   {\r
-    return _f_result( 15, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
 /*write 512 times 1*/\r
@@ -1695,7 +2012,7 @@ static unsigned char f_opening ( void )
   size = (unsigned short)f_write( testbuffer, 1, 512, file ); /*test write*/\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 16, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*go back, and read it*/\r
@@ -1703,7 +2020,7 @@ static unsigned char f_opening ( void )
   size = (unsigned short)f_read( testbuffer, 1, 512, file ); /*test read*/\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 17, size );             /*it should fail*/\r
+    return _f_result( __LINE__, size );             /*it should fail*/\r
   }\r
 \r
   ret = f_rewind( file ); /*back to the begining*/\r
@@ -1713,32 +2030,32 @@ static unsigned char f_opening ( void )
   size = (unsigned short)f_write( testbuffer, 1, 256, file ); /*test write*/\r
   if ( size != 256 )\r
   {\r
-    return _f_result( 18, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   pos = (unsigned short)f_tell( file );\r
   if ( pos != 256 )\r
   {\r
-    return _f_result( 19, pos );            /*position has to be 512*/\r
+    return _f_result( __LINE__, pos );            /*position has to be 512*/\r
   }\r
 \r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size )\r
   {\r
-    return _f_result( 20, size );        /*has to be zero*/\r
+    return _f_result( __LINE__, size );        /*has to be zero*/\r
   }\r
 \r
 /*close and check size*/\r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 22, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
@@ -1746,13 +2063,13 @@ static unsigned char f_opening ( void )
   file = f_open( "file.bin", "a+" );\r
   if ( !file )\r
   {\r
-    return _f_result( 23, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   pos = (unsigned short)f_tell( file );\r
   if ( pos != 512 )\r
   {\r
-    return _f_result( 24, pos );            /*position has to be 512*/\r
+    return _f_result( __LINE__, pos );            /*position has to be 512*/\r
   }\r
 \r
 /*write 512 times 3*/\r
@@ -1760,58 +2077,58 @@ static unsigned char f_opening ( void )
   size = (unsigned short)f_write( testbuffer, 1, 512, file ); /*test write*/\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 25, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*go back, and read it*/\r
   ret = f_rewind( file ); /*back to the begining*/\r
   if ( ret )\r
   {\r
-    return _f_result( 26, ret );       /*it should fail*/\r
+    return _f_result( __LINE__, ret );       /*it should fail*/\r
   }\r
 \r
   size = (unsigned short)f_read( testbuffer, 1, 512, file ); /*test read*/\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 27, size );             /*it should fail*/\r
+    return _f_result( __LINE__, size );             /*it should fail*/\r
   }\r
 \r
   pos = (unsigned short)f_tell( file );\r
   if ( pos != 512 )\r
   {\r
-    return _f_result( 28, pos );            /*position has to be 512*/\r
+    return _f_result( __LINE__, pos );            /*position has to be 512*/\r
   }\r
 \r
 /*close and check size*/\r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size != 512 )\r
   {\r
-    return _f_result( 29, size );             /*has to be zero*/\r
+    return _f_result( __LINE__, size );             /*has to be zero*/\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 30, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned short)f_filelength( "file.bin" );\r
   if ( size != 1024 )\r
   {\r
-    return _f_result( 31, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 /*close again!*/\r
   ret = f_close( file );\r
   if ( ret != F_ERR_NOTOPEN )\r
   {\r
-    return _f_result( 32, pos );\r
+    return _f_result( __LINE__, pos );\r
   }\r
 \r
   ret = f_delete( "file.bin" );\r
   if ( ret )\r
   {\r
-    return _f_result( 33, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -1833,20 +2150,20 @@ static unsigned char f_appending ( void )
     file = f_open( "ap.bin", "a" );\r
     if ( !file )\r
     {\r
-      return _f_result( 1, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     psp_memset( testbuffer, a, sizeof( testbuffer ) );\r
     size = (unsigned short)f_write( testbuffer, 1, a + 128, file );\r
     if ( size != a + 128 )\r
     {\r
-      return _f_result( 2, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     size = (unsigned short)f_filelength( "ap.bin" );\r
     if ( size != tsize )\r
     {\r
-      return _f_result( 3, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     tsize += a + 128;\r
@@ -1854,34 +2171,34 @@ static unsigned char f_appending ( void )
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 4, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
 \r
     size = (unsigned short)f_filelength( "ap.bin" );\r
     if ( size != tsize )\r
     {\r
-      return _f_result( 5, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
   }\r
 \r
   file = f_open( "ap.bin", "r" );\r
   if ( !file )\r
   {\r
-    return _f_result( 6, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   for ( tsize = 0, a = 0 ; a < 16 ; a++ )\r
   {\r
     if ( checkfilecontent( a + 128, (char)a, file ) )\r
     {\r
-      return _f_result( 7, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   for ( tsize = 0, a = 0 ; a < 16 ; a++ )\r
@@ -1889,32 +2206,32 @@ static unsigned char f_appending ( void )
     file = f_open( "ap.bin", "r" );\r
     if ( !file )\r
     {\r
-      return _f_result( 9, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     ret = f_seek( file, tsize, F_SEEK_SET );\r
     if ( ret )\r
     {\r
-      return _f_result( 10, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
 \r
     pos = (unsigned short)f_tell( file );\r
     if ( pos != tsize )\r
     {\r
-      return _f_result( 11, pos );\r
+      return _f_result( __LINE__, pos );\r
     }\r
 \r
     size = (unsigned short)f_read( testbuffer, 1, a + 128, file );\r
     if ( size != a + 128 )\r
     {\r
-      return _f_result( 12, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     for ( b = 0 ; b < a + 128 ; b++ )\r
     {\r
       if ( testbuffer[b] != (char)a )\r
       {\r
-        return _f_result( 13, a );\r
+        return _f_result( __LINE__, a );\r
       }\r
     }\r
 \r
@@ -1923,26 +2240,26 @@ static unsigned char f_appending ( void )
     pos = (unsigned short)f_tell( file );\r
     if ( pos != tsize )\r
     {\r
-      return _f_result( 13, pos );\r
+      return _f_result( __LINE__, pos );\r
     }\r
 \r
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 14, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret != F_ERR_NOTOPEN )\r
   {\r
-    return _f_result( 9, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_delete( "ap.bin" );\r
   if ( ret )\r
   {\r
-    return _f_result( 14, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -1961,7 +2278,7 @@ static unsigned char f_writing ( void )
   ret = f_getfreespace( &before );\r
   if ( ret )\r
   {\r
-    return _f_result( 0, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   for ( a = 0 ; a < 4 ; a++ )\r
@@ -1969,43 +2286,43 @@ static unsigned char f_writing ( void )
     file = f_open( "wr.bin", "w" );\r
     if ( !file )\r
     {\r
-      return _f_result( 1, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     psp_memset( testbuffer, a, sizeof( testbuffer ) );\r
     size = (unsigned short)f_write( testbuffer, 1, a * 128, file );\r
     if ( size != a * 128 )\r
     {\r
-      return _f_result( 2, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 3, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
 \r
     size = (unsigned short)f_filelength( "wr.bin" );\r
     if ( size != a * 128 )\r
     {\r
-      return _f_result( 4, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     file = f_open( "wr.bin", "r" );\r
     if ( !file )\r
     {\r
-      return _f_result( 5, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     if ( checkfilecontent( a * 128, (char)a, file ) )\r
     {\r
-      return _f_result( 6, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
 \r
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 7, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
   }\r
 \r
@@ -2015,107 +2332,107 @@ static unsigned char f_writing ( void )
     file = f_open( "wr.bin", "w+" );\r
     if ( !file )\r
     {\r
-      return _f_result( 8, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     psp_memset( testbuffer, a, sizeof( testbuffer ) );\r
     size = (unsigned short)f_write( testbuffer, 1, a * 128, file );\r
     if ( size != a * 128 )\r
     {\r
-      return _f_result( 9, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 10, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
 \r
     size = (unsigned short)f_filelength( "wr.bin" );\r
     if ( size != a * 128 )\r
     {\r
-      return _f_result( 11, size );\r
+      return _f_result( __LINE__, size );\r
     }\r
 \r
     file = f_open( "wr.bin", "r+" );\r
     if ( !file )\r
     {\r
-      return _f_result( 12, 0 );\r
+      return _f_result( __LINE__, 0 );\r
     }\r
 \r
     if ( checkfilecontent( a * 128, (char)a, file ) )\r
     {\r
-      return _f_result( 13, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
 \r
     ret = f_close( file );\r
     if ( ret )\r
     {\r
-      return _f_result( 14, ret );\r
+      return _f_result( __LINE__, ret );\r
     }\r
   }\r
 \r
   ret = f_getfreespace( &after );\r
   if ( ret )\r
   {\r
-    return _f_result( 15, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( before.bad != after.bad )\r
   {\r
-    return _f_result( 16, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.free == after.free )\r
   {\r
-    return _f_result( 17, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.used == after.used )\r
   {\r
-    return _f_result( 18, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.total != after.total )\r
   {\r
-    return _f_result( 19, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.used + before.free != after.used + after.free )\r
   {\r
-    return _f_result( 20, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_delete( "wr.bin" );\r
   if ( ret )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_getfreespace( &after );\r
   if ( ret )\r
   {\r
-    return _f_result( 22, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   if ( before.bad != after.bad )\r
   {\r
-    return _f_result( 23, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.free != after.free )\r
   {\r
-    return _f_result( 24, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.used != after.used )\r
   {\r
-    return _f_result( 25, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   if ( before.total != after.total )\r
   {\r
-    return _f_result( 26, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -2133,67 +2450,67 @@ static unsigned char f_dots ( void )
   ret = f_mkdir( "/tt" );\r
   if ( ret )\r
   {\r
-    return _f_result( 0, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "/tt" );\r
   if ( ret )\r
   {\r
-    return _f_result( 1, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 4, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( ".." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 5, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( "." );\r
   if ( ret )\r
   {\r
-    return _f_result( 6, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = _f_checkcwd( f_nameconv( "/tt" ) );\r
   if ( ret )\r
   {\r
-    return _f_result( 7, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_delete( "." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_delete( ".." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 9, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 10, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( ".." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 11, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_mkdir( "..." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 12, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   for ( a = 0 ; a < 6 ; a++ )\r
@@ -2226,63 +2543,63 @@ static unsigned char f_dots ( void )
         break;\r
 \r
       default:\r
-        return _f_result( 13, a );\r
+        return _f_result( __LINE__, a );\r
     } /* switch */\r
 \r
     file = f_open( ".", mode );\r
     if ( file )\r
     {\r
-      return _f_result( 14, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
 \r
     file = f_open( "..", mode );\r
     if ( file )\r
     {\r
-      return _f_result( 15, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
 \r
     file = f_open( "...", mode );\r
     if ( file )\r
     {\r
-      return _f_result( 16, a );\r
+      return _f_result( __LINE__, a );\r
     }\r
   }\r
 \r
   size = (unsigned char)f_filelength( "." );\r
   if ( size )\r
   {\r
-    return _f_result( 17, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   size = (unsigned char)f_filelength( ".." );\r
   if ( size )\r
   {\r
-    return _f_result( 18, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   size = (unsigned char)f_filelength( "..." );\r
   if ( size )\r
   {\r
-    return _f_result( 19, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
   ret = f_chdir( "..." );\r
   if ( ret != F_ERR_NOTFOUND )\r
   {\r
-    return _f_result( 20, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_chdir( ".." );\r
   if ( ret )\r
   {\r
-    return _f_result( 21, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   ret = f_rmdir( "tt" );\r
   if ( ret )\r
   {\r
-    return _f_result( 27, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -2297,7 +2614,7 @@ typedef struct
   unsigned char  Line;\r
   unsigned char  Buf[87];\r
 } struct_TestFileSysEntry;\r
-  #define NUM_OF_RECORDS 10\r
+#define NUM_OF_RECORDS 10\r
 static unsigned char f_rit ( void )\r
 {\r
   unsigned char             i;\r
@@ -2314,7 +2631,7 @@ static unsigned char f_rit ( void )
   File = f_open( "MyTest", "a+" );\r
   if ( !File )\r
   {\r
-    return _f_result( 1, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   /* add records  */\r
@@ -2328,40 +2645,40 @@ static unsigned char f_rit ( void )
 \r
     if ( F_NO_ERROR != f_seek( File, 0, F_SEEK_END ) )\r
     {\r
-      return _f_result( 2, 0 ); /* Fail, could not go to the end of the file */\r
+      return _f_result( __LINE__, 0 ); /* Fail, could not go to the end of the file */\r
     }\r
 \r
     if ( sizeof( struct_TestFileSysEntry ) != f_write( (void *)Entry, 1, sizeof( struct_TestFileSysEntry ), File ) )\r
     {\r
-      return _f_result( 3, 0 ); /* Fail, could not write new entry */\r
+      return _f_result( __LINE__, 0 ); /* Fail, could not write new entry */\r
     }\r
 \r
     Pos = (unsigned short)f_tell( File );\r
     if ( ( ( Pos / sizeof( struct_TestFileSysEntry ) ) - 1 ) != i )\r
     {\r
-      return _f_result( 4, 0 ); /* Fail, wrong file position */\r
+      return _f_result( __LINE__, 0 ); /* Fail, wrong file position */\r
     }\r
 \r
     if ( F_NO_ERROR != f_seek( File, (long)( Pos - sizeof( struct_TestFileSysEntry ) ), F_SEEK_SET ) )\r
     {\r
-      return _f_result( 5, 0 ); /* Fail, could not go to new entry position */\r
+      return _f_result( __LINE__, 0 ); /* Fail, could not go to new entry position */\r
     }\r
 \r
     if ( sizeof( struct_TestFileSysEntry ) != f_read( (void *)Entry, 1, sizeof( struct_TestFileSysEntry ), File ) )\r
     {\r
-      return _f_result( 6, 0 ); /* Fail, could not read the new entry */\r
+      return _f_result( __LINE__, 0 ); /* Fail, could not read the new entry */\r
     }\r
 \r
     if ( ( Entry->MagicNum != 0xbc ) || ( Entry->Line != (int)i ) || ( Entry->Buf[0] != Ch ) || ( Entry->Buf[10] != Ch + 1 ) )\r
     {\r
-      return _f_result( 7, 0 ); /*Fail, the new entry is corrupted"*/\r
+      return _f_result( __LINE__, 0 ); /*Fail, the new entry is corrupted"*/\r
     }\r
   }\r
 \r
   ret = f_close( File );\r
   if ( ret )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
@@ -2369,7 +2686,7 @@ static unsigned char f_rit ( void )
   File = f_open( "MyTest", "a+" );\r
   if ( !File )\r
   {\r
-    return _f_result( 9, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   /* read records  */\r
@@ -2379,7 +2696,7 @@ static unsigned char f_rit ( void )
 \r
     if ( F_NO_ERROR != f_seek( File, 0, F_SEEK_SET ) )\r
     {\r
-      return _f_result( 10, 0 ); /* Fail, could not go to the start of the file */\r
+      return _f_result( __LINE__, 0 ); /* Fail, could not go to the start of the file */\r
     }\r
 \r
     Founded = 0;\r
@@ -2397,21 +2714,21 @@ static unsigned char f_rit ( void )
 \r
     if ( !Founded )\r
     {\r
-      return _f_result( 11, i );      /* Entry not founded */\r
+      return _f_result( __LINE__, i );      /* Entry not founded */\r
     }\r
   }\r
 \r
   ret = f_close( File );\r
   if ( ret )\r
   {\r
-    return _f_result( 12, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
 \r
   ret = f_delete( "MyTest" );\r
   if ( ret )\r
   {\r
-    return _f_result( 13, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   _f_dump( "passed..." );\r
@@ -2433,109 +2750,109 @@ static unsigned char f_truncating ( void )
   file = f_open( "test.bin", "w+" );\r
   if ( !file )\r
   {\r
-    return _f_result( 0, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   (void)psp_memset( testbuffer, 1, F_MAX_SEEK_TEST );\r
   size = (unsigned long)f_write( testbuffer, 1, F_MAX_SEEK_TEST, file );\r
   if ( size != F_MAX_SEEK_TEST )\r
   {\r
-    return _f_result( 1, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 2, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   file = f_truncate( "test.bin", F_MAX_SEEK_TEST - 4 );\r
   if ( !file )\r
   {\r
-    return _f_result( 3, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 4, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned long)f_filelength( "test.bin" );\r
   if ( size != F_MAX_SEEK_TEST - 4 )\r
   {\r
-    return _f_result( 5, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
   file = f_truncate( "test.bin", F_MAX_SEEK_TEST );\r
   if ( !file )\r
   {\r
-    return _f_result( 3, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 4, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned long)f_filelength( "test.bin" );\r
   if ( size != F_MAX_SEEK_TEST )\r
   {\r
-    return _f_result( 5, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
   file = f_truncate( "test.bin", ( F_MAX_SEEK_TEST / 2 ) - 92 );\r
   if ( !file )\r
   {\r
-    return _f_result( 6, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   (void)psp_memset( testbuffer, 2, 92 );\r
   size = (unsigned long)f_write( testbuffer, 1, 92, file );\r
   if ( size != 92 )\r
   {\r
-    return _f_result( 7, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 8, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned long)f_filelength( "test.bin" );\r
   if ( size != ( F_MAX_SEEK_TEST / 2 ) )\r
   {\r
-    return _f_result( 9, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
   file = f_truncate( "test.bin", 1 );\r
   if ( !file )\r
   {\r
-    return _f_result( 10, 0 );\r
+    return _f_result( __LINE__, 0 );\r
   }\r
 \r
   (void)psp_memset( testbuffer, 3, 2 );\r
   size = (unsigned long)f_write( testbuffer, 1, 2, file );\r
   if ( size != 2 )\r
   {\r
-    return _f_result( 11, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
   ret = f_close( file );\r
   if ( ret )\r
   {\r
-    return _f_result( 12, ret );\r
+    return _f_result( __LINE__, ret );\r
   }\r
 \r
   size = (unsigned long)f_filelength( "test.bin" );\r
   if ( size != 3 )\r
   {\r
-    return _f_result( 13, size );\r
+    return _f_result( __LINE__, size );\r
   }\r
 \r
 \r
@@ -2598,7 +2915,7 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #if ( F_MAX_SEEK_TEST > 128 )\r
+#if ( F_MAX_SEEK_TEST > 128 )\r
 \r
     /* fall through */\r
     case 6:\r
@@ -2608,8 +2925,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 256 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 256 )\r
 \r
     /* fall through */\r
     case 7:\r
@@ -2619,8 +2936,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 512 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 512 )\r
 \r
     /* fall through */\r
     case 8:\r
@@ -2630,8 +2947,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 1024 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 1024 )\r
 \r
     /* fall through */\r
     case 9:\r
@@ -2641,8 +2958,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 2048 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 2048 )\r
 \r
     /* fall through */\r
     case 10:\r
@@ -2652,8 +2969,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 4096 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 4096 )\r
 \r
     /* fall through */\r
     case 11:\r
@@ -2663,8 +2980,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 8192 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 8192 )\r
 \r
     /* fall through */\r
     case 12:\r
@@ -2674,8 +2991,8 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
-  #if ( F_MAX_SEEK_TEST > 16384 )\r
+#endif\r
+#if ( F_MAX_SEEK_TEST > 16384 )\r
 \r
     /* fall through */\r
     case 13:\r
@@ -2685,7 +3002,7 @@ void f_dotest ( unsigned char t )
         break;\r
       }\r
 \r
-  #endif\r
+#endif\r
 \r
     /* fall through */\r
     case 14:\r
@@ -2745,10 +3062,8 @@ void f_dotest ( unsigned char t )
 } /* f_dotest */\r
 \r
 \r
-\r
 /****************************************************************************\r
  *\r
  * end of test.c\r
  *\r
  ***************************************************************************/\r
-#endif  /*_TEST_C_*/\r
index 033f5db006f5ba3c50514dece3c23312d51e5b6a..6d2de89294c1a842c514ae91512510d7bb8648a2 100644 (file)
@@ -1,29 +1,29 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
 #define __TEST_H\r
 \r
 #include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3 || VER_FAT_SL_MINOR != 2\r
+#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 \r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
 \r
 /*\r
 ** Maximum size for seek test.\r
@@ -60,59 +56,13 @@ extern "C" {
 \r
 /*\r
 ** Defines media type for testing.\r
-** Options: F_FAT12_MEDIA, F_FAT16_MEDIA\r
+** Options: F_FAT12_MEDIA, F_FAT16_MEDIA, F_FAT32_MEDIA\r
 */\r
-#define F_FAT_TYPE      F_FAT12_MEDIA\r
+#define F_FAT_TYPE      F_FAT16_MEDIA\r
 \r
 \r
-/*\r
-** Start filesystem test.\r
-** Parameter:\r
-**     0  - run all the tests\r
-**\r
-**     2  - directory\r
-**     3  - find\r
-**\r
-**     5* - seek 128\r
-**     6* - seek 256\r
-**     7* - seek 512\r
-**     8* - seek 1024\r
-**     9* - seek 2048\r
-**     10*- seek 4096\r
-**     11*- seek 8192\r
-**     12*- seek 16384\r
-**     13*- seek 32768\r
-**     14 - open\r
-**     15 - append\r
-**     16 - write\r
-**     17 - dots\r
-**     18 - rit\r
-**  *Note that only seek tests allowed by F_MAX_SEEK_TEST are executed.\r
-**\r
-**  The following defines are required for the specific test:\r
-**                                       1 1 1 1 1 1 1 1 1\r
-**                       2 3   5 6 7 8 9 0 1 2 3 4 5 6 7 8\r
-** F_CHDIR               x x   - - - - - - - - - - x - x -\r
-** F_MKDIR               x x   - - - - - - - - - - - - x -\r
-** F_RMDIR               x x   - - - - - - - - - - x - x -\r
-** F_DELETE              x x   x x x x x x x x x x x x x x\r
-** F_FILELENGTH                  - -   x x x x x x x x x x x x - -\r
-** F_FINDING             x x   - - - - - - - - - - x - - -\r
-** F_TELL                - -   x x x x x x x x x x x x - x\r
-** F_REWIND              - -   - - - - - - - - - x - - - -\r
-** F_EOF                 - -   x x x x x x x x x - - x - -\r
-** F_SEEK                - -   x x x x x x x x x - x x - x\r
-** F_WRITE               - -   x x x x x x x x x x x x - x\r
-** F_WRITING             x x   x x x x x x x x x x x x x x\r
-** F_DIRECTORIES         x x   - - - - - - - - - - x - x -\r
-** F_CHECKNAME           x -   - - - - - - - - - - - - x -\r
-*/\r
 void f_dotest ( unsigned char );\r
 \r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ifndef __TEST_H */\r
+#endif /* ifndef _CONFIG_STHIN_TEST_H */\r
 \r
 \r
index c665df38e7d5d58e5eaa37db1ed3221e583246c5..30e443ee8b3064959ca97f7001ddc74d5c4c647c 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index 4dab7fdad4d11f6c52bb25f44f23442f63e356cb..a66c50015a17b440df38ab46f00362c8442e1f5e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index 237c90c0cea5c6c4183f02411a256815c1430d9d..8a4410d0caf3a1ca706a6f489cf5bd7e2c5b926f 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index 085425cc77f804e50d2613f26cac643b0d918d6b..5295424bbe6a72c026598f91a12b57e39b8ca131 100644 (file)
@@ -1,29 +1,29 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
 #include "../../../api/api_mdriver_ram.h"\r
 \r
 #include "../../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3\r
+#if VER_FAT_SL_MAJOR != 5\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 #include "../../../version/ver_psp_fat_sl.h"\r
-#if VER_PSP_FAT_FAT_SL_MAJOR != 1 || VER_PSP_FAT_FAT_SL_MINOR != 1\r
+#if VER_PSP_FAT_FAT_SL_MAJOR != 1 || VER_PSP_FAT_FAT_SL_MINOR != 2\r
  #error Incompatible PSP_FAT_FAT_SL version number!\r
 #endif\r
 \r
-uint8_t  all_tests_passed = 1u;\r
+#define PRINT_BUFFER_SIZE 64\r
+\r
+extern void __printbuf ( char * buf, int len );\r
 \r
 /* Use to display text (printf). */\r
 void _f_dump ( char * s )\r
@@ -63,19 +65,9 @@ void _f_dump ( char * s )
 }\r
 \r
 /* Use to display test result (printf). */\r
-uint8_t _f_result ( uint8_t testnum, uint32_t result )\r
+uint8_t _f_result ( int linenum, uint32_t result )\r
 {\r
-  (void)testnum;\r
-  if ( result == 0 )\r
-  {\r
-    printf( "Passed\r\n" );\r
-  }\r
-  else\r
-  {\r
-    printf( "FAILED! Error code: %u\r\n", ( unsigned int ) result );\r
-    all_tests_passed = 0u;\r
-  }\r
-\r
+  printf( "Error:%d/%ld\r\n", linenum, result );\r
   return 0;\r
 }\r
 \r
@@ -85,4 +77,3 @@ uint8_t _f_poweron ( void )
   f_delvolume();\r
   return f_initvolume( ram_initfunc );\r
 }\r
-\r
index 53b1540d04f846cb61b71aed42a4a6e6e6950d9a..15e632f2a6532b0f3fa6aa1c46c156b286025331 100644 (file)
@@ -1,29 +1,29 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
 #include "../../../psp/include/psp_string.h"\r
 \r
 #include "../../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 3\r
+#if VER_FAT_SL_MAJOR != 5\r
  #error Incompatible FAT_SL version number!\r
 #endif\r
 #include "../../../version/ver_psp_fat_sl.h"\r
-#if VER_PSP_FAT_FAT_SL_MAJOR != 1 || VER_PSP_FAT_FAT_SL_MINOR != 1\r
+#if VER_PSP_FAT_FAT_SL_MAJOR != 1 || VER_PSP_FAT_FAT_SL_MINOR != 2\r
  #error Incompatible PSP_FAT_FAT_SL version number!\r
 #endif\r
 \r
 extern "C" {\r
 #endif\r
 \r
-extern uint8_t  all_tests_passed;\r
-\r
 /* Use to display text (printf). */\r
 void _f_dump ( char * s );\r
 \r
 /* Use to display test result (printf). */\r
-uint8_t _f_result ( uint8_t testnum, uint32_t result );\r
+uint8_t _f_result ( int linenum, uint32_t result );\r
 \r
 /* Use to build file system (mount). */\r
 uint8_t _f_poweron ( void );\r
index 3f10512cfee7673f8505c2dba45cc26d229da9d2..afa6ca4d88b4f4a3a8797d5e65c8a5cbb3bcbb6a 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
diff --git a/FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/History.txt b/FreeRTOS-Plus/Source/FreeRTOS-Plus-FAT-SL/version/History.txt
new file mode 100644 (file)
index 0000000..653b921
--- /dev/null
@@ -0,0 +1,9 @@
+Changes between V1.0.0 and V1.0.1\r
+\r
+       + Fix seeking beyond the end of file when the offset was not multiple of\r
+         the sector size, or when the file was empty.\r
+\r
+       + Seeking test extended to validate seeking/writing on sector boundaries.\r
+\r
+\r
+\r
index a789f73c7a1b933def274f56bf1955eb7b232fa0..922d32dddbf5f5ef1a8562e7ab6ec002cf2f9169 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
@@ -41,7 +41,7 @@
 #ifndef _VER_FAT_SL_H\r
 #define _VER_FAT_SL_H\r
 \r
-#define VER_FAT_SL_MAJOR 3\r
+#define VER_FAT_SL_MAJOR 5\r
 #define VER_FAT_SL_MINOR 2\r
 \r
 #endif\r
index 18f298313c023d8de93d642e72085e34de20e473..ee581f436205f8a18936cae710effe0e76ea8630 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index 730c11aee331409925d9883fe5ecf96e38e504a3..bd2cffaa3b7fa469df00aaea1843bee5f421e622 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index 38511cbb62d92e2ffac4da2d17c6ea8d6b1d5511..9cc86933eef47070ce462c5161c62556f410b56a 100644 (file)
@@ -1,29 +1,29 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
+ * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license\r
  * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license.  The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.  \r
+ *\r
+ * FreeRTOS+FAT SL uses a dual license model that allows the software to be used\r
+ * under a standard GPL open source license, or a commercial license.  The\r
+ * standard GPL license (unlike the modified GPL license under which FreeRTOS\r
+ * itself is distributed) requires that all software statically linked with\r
+ * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms.\r
  * Details of both license options follow:\r
- * \r
+ *\r
  * - Open source licensing -\r
  * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
+ * distributed without charge provided the user adheres to version two of the\r
+ * GNU General Public License (GPL) and does not remove the copyright notice or\r
  * this text.  The GPL V2 text is available on the gnu.org web site, and on the\r
  * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
+ *\r
  * - Commercial licensing -\r
  * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form.  Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
+ * with the terms of the GPL V2 license must obtain a commercial license before\r
+ * incorporating FreeRTOS+FAT SL into proprietary software for distribution in\r
+ * any form.  Commercial licenses can be purchased from\r
+ * http://shop.freertos.org/fat_sl and do not require any source files to be\r
  * changed.\r
  *\r
  * FreeRTOS+FAT SL is distributed in the hope that it will be useful.  You\r
@@ -42,7 +42,7 @@
 #define _VER_PSP_FAT_FAT_SL_H\r
 \r
 #define VER_PSP_FAT_FAT_SL_MAJOR 1\r
-#define VER_PSP_FAT_FAT_SL_MINOR 1\r
+#define VER_PSP_FAT_FAT_SL_MINOR 2\r
 \r
 #endif  /* _VER_PSP_FAT_FAT_SL_H */\r
 \r
index a1f4c6e61cb1b39865f82389e6f21589a21d5370..032888eb6a41a54876e753e7726fdb9ab5539bc7 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r
index d2c0a21a8285e70ff35cb18c78887a4ae5b2875d..5d8cd4300c5e42fb7e50366f9338b002dbd35dd5 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+FAT FS V1.0.0 (C) 2013 HCC Embedded\r
+ * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
  *\r
  * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
  * terms.\r