- Fixed f_unlink() may return FR_OK on error. - Fixed wrong cache control in f_lseek(). - Added relative path feature. - Added f_chdir(). - Added f_chdrive(). - Added proper case conversion to extended char.
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 | |
| <html lang="en">
 | |
| <head>
 | |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 | |
| <meta http-equiv="Content-Style-Type" content="text/css">
 | |
| <link rel="up" title="FatFs" href="../00index_e.html">
 | |
| <link rel="stylesheet" href="../css_e.css" type="text/css" media="screen" title="ELM Default">
 | |
| <title>FatFs - f_lseek</title>
 | |
| </head>
 | |
| 
 | |
| <body>
 | |
| 
 | |
| <div class="para">
 | |
| <h2>f_lseek</h2>
 | |
| <p>The f_lseek function moves the file read/write pointer of an open file object. It can also be used to extend the file size (cluster pre-allocation).</p>
 | |
| 
 | |
| <pre>
 | |
| FRESULT f_lseek (
 | |
|   FIL* <em>FileObject</em>,   /* Pointer to the file object structure */
 | |
|   DWORD <em>Offset</em>       /* File offset in unit of byte */
 | |
| );
 | |
| </pre>
 | |
| </div>
 | |
| 
 | |
| <div class="para">
 | |
| <h4>Parameters</h4>
 | |
| <dl class="par">
 | |
| <dt>FileObject</dt>
 | |
| <dd>Pointer to the open file object.</dd>
 | |
| <dt>Offset</dt>
 | |
| <dd>Number of bytes where from start of the file</dd>
 | |
| </dl>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div class="para">
 | |
| <h4>Return Values</h4>
 | |
| <dl class="ret">
 | |
| <dt>FR_OK (0)</dt>
 | |
| <dd>The function succeeded.</dd>
 | |
| <dt>FR_DISK_ERR</dt>
 | |
| <dd>The function failed due to an error in the disk function.</dd>
 | |
| <dt>FR_INT_ERR</dt>
 | |
| <dd>The function failed due to a wrong FAT structure or an internal error.</dd>
 | |
| <dt>FR_NOT_READY</dt>
 | |
| <dd>The disk drive cannot work due to no medium in the drive or any other reason.</dd>
 | |
| <dt>FR_INVALID_OBJECT</dt>
 | |
| <dd>The file object is invalid.</dd>
 | |
| </dl>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div class="para">
 | |
| <h4>Description</h4>
 | |
| <p>The f_lseek function moves the file R/W pointer of an open file. The offset can be specified in only origin from top of the file. When an offset above the file size is specified in write mode, the file size is extended to the offset and the data in the extended area is undefined. This is suitable to create a large file quickly, for fast write operation. After the f_lseek function succeeded, member fptr in the file object should be checked in order to make sure the R/W pointer has been moved correctry. In case of fptr is less than expected value, any of the followings has been occured.</p>
 | |
| <ul>
 | |
| <li>In read-only mode, the Offset was clipped in file size.</li>
 | |
| <li>The drive gets full during the file extending process.</li>
 | |
| </ul>
 | |
| <p>This function is not supported in minimization level of >= 3.</p></div>
 | |
| 
 | |
| 
 | |
| <div class="para">
 | |
| <h4>Example</h4>
 | |
| <pre>
 | |
|     // Move to offset of 5000 from top of the file.
 | |
|     res = f_lseek(&file, 5000);
 | |
| 
 | |
|     // Move to end of the file to append data
 | |
|     res = f_lseek(&file, file.fsize);
 | |
| 
 | |
|     // Forward 3000 bytes
 | |
|     res = f_lseek(&file, file.fptr + 3000);
 | |
| 
 | |
|     // Rewind 2000 bytes (take care on overflow)
 | |
|     res = f_lseek(&file, file.fptr - 2000);
 | |
| </pre>
 | |
| <pre>
 | |
|     // Cluster pre-allocation (to prevent buffer overrun on streaming write)
 | |
| 
 | |
|     res = f_open(&file, recfile, FA_CREATE_NEW | FA_WRITE); // Create a file
 | |
| 
 | |
|     res = f_lseek(&file, PRE_SIZE);        // Pre-allocate clusters
 | |
|     if (res || file.fptr != PRE_SIZE) .... // Check if the file is extended corrctly
 | |
| 
 | |
|     res = f_lseek(&file, DATA_START);      // Record data stream without cluster allocation delay
 | |
|     ...
 | |
| 
 | |
|     res = f_truncate(&file);               // Truncate unused area
 | |
|     res = f_lseek(&file, 0);               // Put file header
 | |
|     ...
 | |
| 
 | |
|     res = f_close(&file);
 | |
| </pre>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div class="para">
 | |
| <h4>References</h4>
 | |
| <p><tt><a href="open.html">f_open</a>, <a href="truncate.html">f_truncate</a>, <a href="sfile.html">FIL</a></tt></p>
 | |
| </div>
 | |
| 
 | |
| <p class="foot"><a href="../00index_e.html">Return</a></p>
 | |
| </body>
 | |
| </html>
 |