[Linux-NTFS-cvs] CVS: linux-ntfs/ntfstools mkntfs.c,1.73,1.74 ntfsfix.c,1.29,1.30 ntfslabel.c,1.10,1
Development moved to https://sourceforge.net/projects/ntfs-3g/
Brought to you by:
antona,
cha0smaster
From: Anton A. <an...@us...> - 2002-04-28 19:39:17
|
Changes by: antona Update of /cvsroot/linux-ntfs/linux-ntfs/ntfstools In directory usw-pr-cvs1:/tmp/cvs-serv24579/ntfstools Modified Files: mkntfs.c ntfsfix.c ntfslabel.c Log Message: Update library, new APIs ntfs_attr_find_vcn(), misc fixes and cleanups, make all the utilities compile, fix bugs I noticed in ntfslabel and it now works properly. Index: mkntfs.c =================================================================== RCS file: /cvsroot/linux-ntfs/linux-ntfs/ntfstools/mkntfs.c,v retrieving revision 1.73 retrieving revision 1.74 diff -U2 -r1.73 -r1.74 --- mkntfs.c 23 Apr 2002 23:27:33 -0000 1.73 +++ mkntfs.c 27 Apr 2002 19:49:10 -0000 1.74 @@ -120,5 +120,4 @@ /* Need these global so mkntfs_exit can access them. */ -int f; struct flock flk; char *buf = NULL; @@ -145,5 +144,5 @@ g or G for GB, or t or T for TB */ int index_block_size; /* in bytes. */ - int mft_size; /* The smaller of 16kB & one cluster. */ + int mft_size; /* The bigger of 16kB & one cluster. */ long long mft_lcn; /* lcn of $MFT, $DATA attribute. */ long long mftmirr_lcn; /* lcn of $MFTMirr, $DATA. */ @@ -420,5 +419,5 @@ /** - * ucstos - convert ASCII string to unicode-character string + * stoucs - convert ASCII string to unicode-character string * @dest: points to buffer to receive the converted string * @src: points to string to convert @@ -1313,5 +1312,5 @@ } else { a->compression_unit = 0; - bw = ntfs_rlwrite(f, rl, val, val_len, &inited_size); + bw = ntfs_rlwrite(vol->fd, rl, val, val_len, &inited_size); if (bw != val_len) Eprintf("Error writing non-resident attribute value." @@ -1493,5 +1492,5 @@ } else { a->compression_unit = 0; - bw = ntfs_rlwrite(f, rl, val, val_len, NULL); + bw = ntfs_rlwrite(vol->fd, rl, val, val_len, NULL); if (bw != val_len) Eprintf("Error writing non-resident attribute value." @@ -2441,7 +2440,4 @@ } - - - void init_options() { @@ -2586,15 +2582,15 @@ if (vol->upcase) free(vol->upcase); - if (vol) - free(vol); flk.l_type = F_UNLCK; - err = fcntl(f, F_SETLK, &flk); + err = fcntl(vol->fd, F_SETLK, &flk); if (err == -1) Eprintf("Warning: Could not unlock %s: %s\n", vol->dev_name, strerror(errno)); - err = close(f); + err = close(vol->fd); if (err == -1) Eprintf("Warning: Could not close %s: %s\n", vol->dev_name, strerror(errno)); + if (vol) + free(vol); } @@ -2743,6 +2739,6 @@ } else i = O_RDWR; - f = open(vol->dev_name, i); - if (f == -1) + vol->fd = open(vol->dev_name, i); + if (vol->fd == -1) err_exit("Could not open %s: %s\n", vol->dev_name, strerror(errno)); @@ -2755,10 +2751,10 @@ flk.l_whence = SEEK_SET; flk.l_start = flk.l_len = 0LL; - err = fcntl(f, F_SETLK, &flk); + err = fcntl(vol->fd, F_SETLK, &flk); if (err == -1) { Eprintf("Could not lock %s for %s: %s\n", vol->dev_name, opt.no_action ? "reading" : "writing", strerror(errno)); - err = close(f); + err = close(vol->fd); if (err == -1) Eprintf("Warning: Could not close %s: %s\n", @@ -2779,5 +2775,5 @@ int _sect_size = 0; - if (ioctl(f, BLKSSZGET, &_sect_size) >= 0) + if (ioctl(vol->fd, BLKSSZGET, &_sect_size) >= 0) opt.sector_size = _sect_size; else @@ -2800,5 +2796,5 @@ /* If user didn't specify the number of sectors, determine it now. */ if (!opt.nr_sectors) { - opt.nr_sectors = get_device_size(f, opt.sector_size); + opt.nr_sectors = get_device_size(vol->fd, opt.sector_size); if (opt.nr_sectors <= 0) err_exit("get_device_size(%s) failed. Please specify " @@ -3118,5 +3114,5 @@ fflush(stdout); } - bw = mkntfs_write(f, buf, vol->cluster_size); + bw = mkntfs_write(vol->fd, buf, vol->cluster_size); if (bw != vol->cluster_size) { if (bw != -1 || errno != EIO) @@ -3140,5 +3136,5 @@ position / progress_inc); /* Seek to next cluster. */ - lseek(f, ((off_t)position + 1) * + lseek(vol->fd, ((off_t)position + 1) * vol->cluster_size, SEEK_SET); } @@ -3148,5 +3144,5 @@ opt.sector_size; for (i = 0; i < position; i++) { - bw = mkntfs_write(f, buf, opt.sector_size); + bw = mkntfs_write(vol->fd, buf, opt.sector_size); if (bw != opt.sector_size) { if (bw != -1 || errno != EIO) @@ -3160,5 +3156,5 @@ "file $Boot.\n"); /* Seek to next sector. */ - lseek(f, opt.sector_size, SEEK_CUR); + lseek(vol->fd, opt.sector_size, SEEK_CUR); } } @@ -3466,8 +3462,8 @@ * last sector. */ - if (lseek(f, (opt.nr_sectors + 1) * opt.sector_size - i, SEEK_SET) == - (off_t)-1) + if (lseek(vol->fd, (opt.nr_sectors + 1) * opt.sector_size - i, + SEEK_SET) == (off_t)-1) goto bb_err; - bw = mkntfs_write(f, buf2, i); + bw = mkntfs_write(vol->fd, buf2, i); free(buf2); buf2 = NULL; @@ -3607,5 +3603,5 @@ err_exit("ntfs_pre_write_mst_fixup() failed while syncing " "root directory index block.\n"); - lw = ntfs_rlwrite(f, rl_index, (char*)index_block, i, NULL); + lw = ntfs_rlwrite(vol->fd, rl_index, (char*)index_block, i, NULL); if (lw != i) err_exit("Error writing $INDEX_ALLOCATION.\n"); @@ -3628,6 +3624,6 @@ if (!rl) err_exit("ntfs_decompress_mapping_pairs() failed\n"); - lw = ntfs_rlwrite(f, rl, lcn_bitmap, lcn_bitmap_byte_size, - NULL); + lw = ntfs_rlwrite(vol->fd, rl, lcn_bitmap, + lcn_bitmap_byte_size, NULL); if (lw != lcn_bitmap_byte_size) err_exit("%s\n", lw == -1 ? strerror(errno) : @@ -3644,8 +3640,9 @@ Vprintf("Syncing $MFT.\n"); pos = opt.mft_lcn * vol->cluster_size; - lw = vol->mft_record_size; + lw = 1; for (i = 0; i < opt.mft_size / vol->mft_record_size; i++) { if (!opt.no_action) - lw = ntfs_mst_pwrite(f, pos, 1, vol->mft_record_size, + lw = ntfs_mst_pwrite(vol->fd, pos, 1, + vol->mft_record_size, buf + i * vol->mft_record_size); if (lw != 1) @@ -3656,5 +3653,5 @@ Vprintf("Updating $MFTMirr.\n"); pos = opt.mftmirr_lcn * vol->cluster_size; - lw = vol->mft_record_size; + lw = 1; for (i = 0; i < rl_mftmirr[0].length * vol->cluster_size / vol->mft_record_size; i++) { @@ -3673,5 +3670,6 @@ *usnp = cpu_to_le16(usn); if (!opt.no_action) - lw = ntfs_mst_pwrite(f, pos, 1, vol->mft_record_size, + lw = ntfs_mst_pwrite(vol->fd, pos, 1, + vol->mft_record_size, buf + i * vol->mft_record_size); if (lw != 1) @@ -3681,5 +3679,5 @@ } Vprintf("Syncing device.\n"); - if (fdatasync(f) == -1) + if (fdatasync(vol->fd) == -1) err_exit("Syncing device. FAILED: %s", strerror(errno)); Qprintf("mkntfs completed successfully. Have a nice day.\n"); Index: ntfsfix.c =================================================================== RCS file: /cvsroot/linux-ntfs/linux-ntfs/ntfstools/ntfsfix.c,v retrieving revision 1.29 retrieving revision 1.30 diff -U2 -r1.29 -r1.30 --- ntfsfix.c 21 Apr 2002 01:26:39 -0000 1.29 +++ ntfsfix.c 27 Apr 2002 19:49:10 -0000 1.30 @@ -218,12 +218,12 @@ printf("Comparing $MftMirr to $Mft... "); for (i = 0, ebits = 0; i < 4; ++i) { - if (memcmp(b1+i*mrs, b2+i*mrs, - get_mft_record_data_size((MFT_RECORD*)(b1 + - i * mrs)))) { + if (memcmp(b1 + i * mrs, b2 + i * mrs, + ntfs_get_mft_record_data_size((MFT_RECORD*)(b1 + + i * mrs)))) { ebits |= 1 << i; #ifdef DEBUG printf("in memcmp: i = %x, count = 0x%x\n", i, - get_mft_record_data_size((MFT_RECORD*)(b1 - + i * mrs))); + ntfs_get_mft_record_data_size( + (MFT_RECORD*)(b1 + i * mrs))); #endif } Index: ntfslabel.c =================================================================== RCS file: /cvsroot/linux-ntfs/linux-ntfs/ntfstools/ntfslabel.c,v retrieving revision 1.10 retrieving revision 1.11 diff -U2 -r1.10 -r1.11 --- ntfslabel.c 25 Apr 2002 18:31:20 -0000 1.10 +++ ntfslabel.c 27 Apr 2002 19:49:10 -0000 1.11 @@ -126,4 +126,6 @@ } +int stoucs(uchar_t * dest, const char *src, int maxlen); + /** * change_label - change the current label on a device @@ -133,9 +135,8 @@ * change_label will first verify the device is a valid block * device, and will exit with error INVALID_BLOCK_DEVICE if -r * it is not. it will also verify the device is not currently + * it is not. it will also verify the device is not currently * mounted and exit with error NTFS_MF_MOUNTED if it is - **/ -void -change_label(const char *dev, const char *label) + */ +void change_label(const char *dev, const char *label) { @@ -209,7 +210,7 @@ } - - stoucs(new_label,label,label_len); - label_len = sizeof(uchar_t) * label_len; + new_label = malloc((label_len + 1) * sizeof(uchar_t)); + label_len = stoucs(new_label,label,(label_len + 1) * + sizeof(uchar_t)) * sizeof(uchar_t); if (resize_resident_attribute_value(mrec, a, label_len)) { @@ -218,6 +219,6 @@ } - printf("%s\n",label); - memcpy((char*)a + le16_to_cpu(a->value_offset), label, min(le32_to_cpu(a->value_length), label_len)); + memcpy((char*)a + le16_to_cpu(a->value_offset), new_label, + min(le32_to_cpu(a->value_length), label_len)); @@ -246,8 +247,4 @@ exit(1); } - - - - } @@ -265,6 +262,5 @@ /* New attribute length and mft record bytes used. */ - new_alen = (le32_to_cpu(a->length) - le32_to_cpu(a->value_length) + - new_vsize + 7) & ~7; + new_alen = (le16_to_cpu(a->value_offset) + new_vsize + 7) & ~7; new_muse = le32_to_cpu(m->bytes_in_use) - le32_to_cpu(a->length) + new_alen; @@ -308,2 +304,3 @@ return i; } + |