Lines Matching refs:buf
553 #define LEAVE_MKFS(res) { if (!work) ff_memfree(buf); return res; }
809 TCHAR* buf, /* Output buffer */ in put_utf() argument
820 *buf = wc; in put_utf()
824 *buf++ = hs; in put_utf()
825 *buf++ = wc; in put_utf()
833 *buf = (TCHAR)chr; in put_utf()
838 *buf++ = (TCHAR)(0xC0 | (chr >> 6 & 0x1F)); in put_utf()
839 *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); in put_utf()
844 *buf++ = (TCHAR)(0xE0 | (chr >> 12 & 0x0F)); in put_utf()
845 *buf++ = (TCHAR)(0x80 | (chr >> 6 & 0x3F)); in put_utf()
846 *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); in put_utf()
855 *buf++ = (TCHAR)(0xF0 | (chr >> 18 & 0x07)); in put_utf()
856 *buf++ = (TCHAR)(0x80 | (chr >> 12 & 0x3F)); in put_utf()
857 *buf++ = (TCHAR)(0x80 | (chr >> 6 & 0x3F)); in put_utf()
858 *buf++ = (TCHAR)(0x80 | (chr >> 0 & 0x3F)); in put_utf()
871 *buf++ = (TCHAR)chr; in put_utf()
880 *buf++ = (char)(wc >> 8); /* Store DBC 1st byte */ in put_utf()
881 *buf++ = (TCHAR)wc; /* Store DBC 2nd byte */ in put_utf()
885 *buf++ = (TCHAR)wc; /* Store the character */ in put_utf()
3884 memset(fp->buf, 0, sizeof fp->buf); /* Clear sector buffer */
3903 if (disk_read(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) res = FR_DISK_ERR;
3988 memcpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs));
3999 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
4003 …if (disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache …
4014 memcpy(rbuff, fp->buf + fp->fptr % SS(fs), rcnt); /* Extract partial sector */
4083 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
4104 memcpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs));
4120 disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) {
4133 memcpy(fp->buf + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */
4165 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR);
4512 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
4516 …if (disk_read(fs->pdrv, fp->buf, dsc, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Load current sector…
4592 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
4596 …if (disk_read(fs->pdrv, fp->buf, nsect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache…
4957 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) {
5163 BYTE buf[FF_FS_EXFAT ? SZDIRE * 2 : SZDIRE], *dir; local
5186 memcpy(buf, fs->dirbuf, SZDIRE * 2); /* Save 85+C0 entry of old object */
5197 memcpy(fs->dirbuf, buf, SZDIRE * 2); /* Restore 85+C0 entry */
5208 memcpy(buf, djo.dir, SZDIRE); /* Save directory entry of the object */
5218 memcpy(dir + 13, buf + 13, SZDIRE - 13);
5219 dir[DIR_Attr] = buf[DIR_Attr];
5724 if (disk_write(fs->pdrv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
5728 if (disk_read(fs->pdrv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR);
5730 dbuf = fp->buf;
5761 BYTE *buf /* Working buffer for a sector */ argument
5796 if (pi * SZ_GPTE % ss == 0) memset(buf, 0, ss); /* Clean the buffer if needed */
5810 …memcpy(buf + ofs + GPTE_PtGuid, GUID_MS_Basic, 16); /* Set partition GUID (Microsoft Basic Data) */
5811 rnd = make_rand(rnd, buf + ofs + GPTE_UpGuid, 16); /* Set unique partition GUID */
5812 st_qword(buf + ofs + GPTE_FstLba, nxt_alloc); /* Set partition start LBA */
5813 st_qword(buf + ofs + GPTE_LstLba, nxt_alloc + sz_part - 1); /* Set partition end LBA */
5817 for (i = 0; i < ss; bcc = crc32(bcc, buf[i++])) ; /* Calculate table check sum */
5818 …if (disk_write(drv, buf, 2 + pi * SZ_GPTE / ss, 1) != RES_OK) return FR_DISK_ERR; /* Write to pri…
5819 …if (disk_write(drv, buf, top_bpt + pi * SZ_GPTE / ss, 1) != RES_OK) return FR_DISK_ERR; /* Write t…
5824 memset(buf, 0, ss);
5825 …memcpy(buf + GPTH_Sign, "EFI PART" "\0\0\1\0" "\x5C\0\0", 16); /* Signature, version (1.0) and siz…
5826 st_dword(buf + GPTH_PtBcc, ~bcc); /* Table check sum */
5827 st_qword(buf + GPTH_CurLba, 1); /* LBA of this header */
5828 st_qword(buf + GPTH_BakLba, sz_drv - 1); /* LBA of secondary header */
5829 st_qword(buf + GPTH_FstLba, 2 + sz_ptbl); /* LBA of first allocatable sector */
5830 st_qword(buf + GPTH_LstLba, top_bpt - 1); /* LBA of last allocatable sector */
5831 st_dword(buf + GPTH_PteSize, SZ_GPTE); /* Size of a table entry */
5832 st_dword(buf + GPTH_PtNum, GPT_ITEMS); /* Number of table entries */
5833 st_dword(buf + GPTH_PtOfs, 2); /* LBA of this table */
5834 rnd = make_rand(rnd, buf + GPTH_DskGuid, 16); /* Disk GUID */
5835 …for (i = 0, bcc= 0xFFFFFFFF; i < 92; bcc = crc32(bcc, buf[i++])) ; /* Calculate header check sum */
5836 st_dword(buf + GPTH_Bcc, ~bcc); /* Header check sum */
5837 if (disk_write(drv, buf, 1, 1) != RES_OK) return FR_DISK_ERR;
5840 st_qword(buf + GPTH_CurLba, sz_drv - 1); /* LBA of this header */
5841 st_qword(buf + GPTH_BakLba, 1); /* LBA of primary header */
5842 st_qword(buf + GPTH_PtOfs, top_bpt); /* LBA of this table */
5843 st_dword(buf + GPTH_Bcc, 0);
5844 …for (i = 0, bcc= 0xFFFFFFFF; i < 92; bcc = crc32(bcc, buf[i++])) ; /* Calculate header check sum */
5845 st_dword(buf + GPTH_Bcc, ~bcc); /* Header check sum */
5846 if (disk_write(drv, buf, sz_drv - 1, 1) != RES_OK) return FR_DISK_ERR;
5849 memset(buf, 0, ss);
5850 memcpy(buf + MBR_Table, gpt_mbr, 16); /* Create a GPT partition */
5851 st_word(buf + BS_55AA, 0xAA55);
5852 if (disk_write(drv, buf, 0, 1) != RES_OK) return FR_DISK_ERR;
5862 memset(buf, 0, FF_MAX_SS); /* Clear MBR */
5863 pte = buf + MBR_Table; /* Partition table in the MBR */
5891 st_word(buf + BS_55AA, 0xAA55); /* MBR signature */
5892 if (disk_write(drv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the MBR */
5911 BYTE *buf; local
5958 buf = (BYTE*)work; /* Working buffer */
5960 if (!buf) buf = ff_memalloc(sz_buf * ss); /* Use heap memory for working buffer */
5962 if (!buf) return FR_NOT_ENOUGH_CORE;
5968 if (disk_read(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Load MBR */
5969 if (ld_word(buf + BS_55AA) != 0xAA55) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if MBR is valid */
5971 if (buf[MBR_Table + PTE_System] == 0xEE) { /* GPT protective MBR? */
5976 …if (disk_read(pdrv, buf, 1, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Load GPT header sector (next…
5977 if (!test_gpt_header(buf)) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if GPT header is valid */
5978 n_ent = ld_dword(buf + GPTH_PtNum); /* Number of entries */
5979 pt_lba = ld_qword(buf + GPTH_PtOfs); /* Table start sector */
5982 …if (ofs == 0 && disk_read(pdrv, buf, pt_lba++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Get PT se…
5983 …if (!memcmp(buf + ofs + GPTE_PtGuid, GUID_MS_Basic, 16) && ++i == ipart) { /* MS basic data partit…
5984 b_vol = ld_qword(buf + ofs + GPTE_FstLba);
5985 sz_vol = ld_qword(buf + ofs + GPTE_LstLba) - b_vol + 1;
5995 pte = buf + (MBR_Table + (ipart - 1) * SZ_PTE);
6096 sum = xsum32(buf[i + 0] = (BYTE)ch, sum); /* Put it into the write buffer */
6097 sum = xsum32(buf[i + 1] = (BYTE)(ch >> 8), sum);
6101 if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6112 memset(buf, 0, sz_buf * ss); /* Initialize bitmap buffer */
6113 …for (i = 0; nbit != 0 && i / 8 < sz_buf * ss; buf[i / 8] |= 1 << (i % 8), i++, nbit--) ; /* Mark u…
6115 if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6123 memset(buf, 0, sz_buf * ss); i = 0; /* Clear work area and reset write offset */
6125 st_dword(buf + i, 0xFFFFFFF8); i += 4; clu++;
6126 st_dword(buf + i, 0xFFFFFFFF); i += 4; clu++;
6131 st_dword(buf + i, (nbit > 1) ? clu + 1 : 0xFFFFFFFF);
6137 if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6142 memset(buf, 0, sz_buf * ss);
6143 buf[SZDIRE * 0 + 0] = ET_VLABEL; /* Volume label entry (no label) */
6144 buf[SZDIRE * 1 + 0] = ET_BITMAP; /* Bitmap entry */
6145 st_dword(buf + SZDIRE * 1 + 20, 2); /* cluster */
6146 st_dword(buf + SZDIRE * 1 + 24, szb_bit); /* size */
6147 buf[SZDIRE * 2 + 0] = ET_UPCASE; /* Up-case table entry */
6148 st_dword(buf + SZDIRE * 2 + 4, sum); /* sum */
6149 st_dword(buf + SZDIRE * 2 + 20, 2 + clen[0]); /* cluster */
6150 st_dword(buf + SZDIRE * 2 + 24, szb_case); /* size */
6154 if (disk_write(pdrv, buf, sect, n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6155 memset(buf, 0, ss); /* Rest of entries are filled with zero */
6163 memset(buf, 0, ss);
6164 memcpy(buf + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11); /* Boot jump code (x86), OEM name */
6165 st_qword(buf + BPB_VolOfsEx, b_vol); /* Volume offset in the physical drive [sector] */
6166 st_qword(buf + BPB_TotSecEx, sz_vol); /* Volume size [sector] */
6167 st_dword(buf + BPB_FatOfsEx, (DWORD)(b_fat - b_vol)); /* FAT offset [sector] */
6168 st_dword(buf + BPB_FatSzEx, sz_fat); /* FAT size [sector] */
6169 st_dword(buf + BPB_DataOfsEx, (DWORD)(b_data - b_vol)); /* Data offset [sector] */
6170 st_dword(buf + BPB_NumClusEx, n_clst); /* Number of clusters */
6171 st_dword(buf + BPB_RootClusEx, 2 + clen[0] + clen[1]); /* Root directory cluster number */
6172 st_dword(buf + BPB_VolIDEx, vsn); /* VSN */
6173 st_word(buf + BPB_FSVerEx, 0x100); /* Filesystem version (1.00) */
6174 …for (buf[BPB_BytsPerSecEx] = 0, i = ss; i >>= 1; buf[BPB_BytsPerSecEx]++) ; /* Log2 of sector siz…
6175 …for (buf[BPB_SecPerClusEx] = 0, i = sz_au; i >>= 1; buf[BPB_SecPerClusEx]++) ; /* Log2 of cluster …
6176 buf[BPB_NumFATsEx] = 1; /* Number of FATs */
6177 buf[BPB_DrvNumEx] = 0x80; /* Drive number (for int13) */
6178 st_word(buf + BS_BootCodeEx, 0xFEEB); /* Boot code (x86) */
6179 st_word(buf + BS_55AA, 0xAA55); /* Signature (placed here regardless of sector size) */
6181 …if (i != BPB_VolFlagEx && i != BPB_VolFlagEx + 1 && i != BPB_PercInUseEx) sum = xsum32(buf[i], sum…
6183 if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6185 memset(buf, 0, ss);
6186 st_word(buf + ss - 2, 0xAA55); /* Signature (placed at end of sector) */
6188 for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */
6189 if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6192 memset(buf, 0, ss);
6194 for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */
6195 if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6198 for (i = 0; i < ss; i += 4) st_dword(buf + i, sum); /* Fill with checksum value */
6199 if (disk_write(pdrv, buf, sect++, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6284 memset(buf, 0, ss);
6285 memcpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11); /* Boot jump code (x86), OEM name */
6286 st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */
6287 buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */
6288 st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */
6289 buf[BPB_NumFATs] = (BYTE)n_fat; /* Number of FATs */
6290 …st_word(buf + BPB_RootEntCnt, (WORD)((fsty == FS_FAT32) ? 0 : n_root)); /* Number of root director…
6292 st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */
6294 st_dword(buf + BPB_TotSec32, (DWORD)sz_vol); /* Volume size in 32-bit LBA */
6296 buf[BPB_Media] = 0xF8; /* Media descriptor byte */
6297 st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */
6298 st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */
6299 st_dword(buf + BPB_HiddSec, (DWORD)b_vol); /* Volume offset in the physical drive [sector] */
6301 st_dword(buf + BS_VolID32, vsn); /* VSN */
6302 st_dword(buf + BPB_FATSz32, sz_fat); /* FAT size [sector] */
6303 st_dword(buf + BPB_RootClus32, 2); /* Root directory cluster # (2) */
6304 st_word(buf + BPB_FSInfo32, 1); /* Offset of FSINFO sector (VBR + 1) */
6305 st_word(buf + BPB_BkBootSec32, 6); /* Offset of backup VBR (VBR + 6) */
6306 buf[BS_DrvNum32] = 0x80; /* Drive number (for int13) */
6307 buf[BS_BootSig32] = 0x29; /* Extended boot signature */
6308 memcpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */
6310 st_dword(buf + BS_VolID, vsn); /* VSN */
6311 st_word(buf + BPB_FATSz16, (WORD)sz_fat); /* FAT size [sector] */
6312 buf[BS_DrvNum] = 0x80; /* Drive number (for int13) */
6313 buf[BS_BootSig] = 0x29; /* Extended boot signature */
6314 memcpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */
6316 …st_word(buf + BS_55AA, 0xAA55); /* Signature (offset is fixed here regardless of sector size) …
6317 …if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Write it to the VBR sec…
6321 disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */
6322 memset(buf, 0, ss);
6323 st_dword(buf + FSI_LeadSig, 0x41615252);
6324 st_dword(buf + FSI_StrucSig, 0x61417272);
6325 st_dword(buf + FSI_Free_Count, n_clst - 1); /* Number of free clusters */
6326 st_dword(buf + FSI_Nxt_Free, 2); /* Last allocated cluster# */
6327 st_word(buf + BS_55AA, 0xAA55);
6328 disk_write(pdrv, buf, b_vol + 7, 1); /* Write backup FSINFO (VBR + 7) */
6329 disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */
6333 memset(buf, 0, sz_buf * ss);
6337 st_dword(buf + 0, 0xFFFFFFF8); /* FAT[0] */
6338 st_dword(buf + 4, 0xFFFFFFFF); /* FAT[1] */
6339 st_dword(buf + 8, 0x0FFFFFFF); /* FAT[2] (root directory at cluster# 2) */
6341 st_dword(buf + 0, (fsty == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* FAT[0] and FAT[1] */
6346 if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6347 memset(buf, 0, ss); /* Rest of FAT area is initially zero */
6356 if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
6380 if (disk_read(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Read the MBR */
6381 buf[MBR_Table + (ipart - 1) * SZ_PTE + PTE_System] = sys; /* Set system ID */
6382 … if (disk_write(pdrv, buf, 0, 1) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); /* Write it back to the MBR */
6387 res = create_partition(pdrv, lba, sys, buf);
6411 BYTE *buf = (BYTE*)work; local
6422 if (!buf) buf = ff_memalloc(FF_MAX_SS); /* Use heap memory for working buffer */
6424 if (!buf) return FR_NOT_ENOUGH_CORE;
6426 …res = create_partition(pdrv, ptbl, 0x07, buf); /* Create partitions (system ID is temporary settin…
6591 BYTE buf[SZ_PUTC_BUF]; /* Write buffer */ member
6666 st_word(&pb->buf[i], hs);
6670 st_word(&pb->buf[i], wc);
6674 pb->buf[i++] = (BYTE)(hs >> 8);
6675 pb->buf[i++] = (BYTE)hs;
6678 pb->buf[i++] = (BYTE)(wc >> 8);
6679 pb->buf[i++] = (BYTE)wc;
6684 pb->buf[i++] = (BYTE)(0xF0 | hs >> 8);
6685 pb->buf[i++] = (BYTE)(0x80 | (hs >> 2 & 0x3F));
6686 pb->buf[i++] = (BYTE)(0x80 | (hs & 3) << 4 | (wc >> 6 & 0x0F));
6687 pb->buf[i++] = (BYTE)(0x80 | (wc & 0x3F));
6690 pb->buf[i++] = (BYTE)wc;
6694 pb->buf[i++] = (BYTE)(0xC0 | wc >> 6);
6697 pb->buf[i++] = (BYTE)(0xE0 | wc >> 12);
6698 pb->buf[i++] = (BYTE)(0x80 | (wc >> 6 & 0x3F));
6700 pb->buf[i++] = (BYTE)(0x80 | (wc & 0x3F));
6708 pb->buf[i++] = (BYTE)(wc >> 8); nc++;
6710 pb->buf[i++] = (BYTE)wc;
6714 pb->buf[i++] = (BYTE)c;
6717 if (i >= (int)(sizeof pb->buf) - 4) { /* Write buffered characters to the file */
6718 f_write(pb->fp, pb->buf, (UINT)i, &n);
6733 && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK
6838 char* buf, /* Buffer to output the floating point string */ argument
6883 if (sign == '-') *buf++ = sign; /* Add a - if negative value */
6885 if (mag == -1) *buf++ = ds; /* Insert a decimal separator when get into fractional part */
6888 *buf++ = (char)('0' + digit); /* Put the digit */
6891 *buf++ = (char)fmt;
6893 exp = 0 - exp; *buf++ = '-';
6895 *buf++ = '+';
6897 *buf++ = (char)('0' + exp / 10);
6898 *buf++ = (char)('0' + exp % 10);
6903 if (sign) *buf++ = sign; /* Add sign if needed */
6905 *buf++ = *er++;
6908 *buf = 0; /* Term */