/** * change_label - change the current label on a device * @dev: device to change the label on * @mnt_flags: mount flags of the device or 0 if not mounted * @mnt_point: mount point of the device or NULL * @label: the new label * * Change the label on the device @dev to @label. */ static int change_label(ntfs_volume *vol, char *label) { ntfschar *new_label = NULL; int label_len; int result = 0; label_len = ntfs_mbstoucs(label, &new_label); if (label_len == -1) { ntfs_log_perror("Unable to convert label string to Unicode"); return 1; } else if (label_len*sizeof(ntfschar) > 0x100) { ntfs_log_warning("New label is too long. Maximum %u characters " "allowed. Truncating %u excess characters.\n", (unsigned)(0x100 / sizeof(ntfschar)), (unsigned)(label_len - (0x100 / sizeof(ntfschar)))); label_len = 0x100 / sizeof(ntfschar); label[label_len] = const_cpu_to_le16(0); } if(!opts.noaction) result = ntfs_volume_rename(vol, new_label, label_len) ? 1 : 0; free(new_label); return result; }
/** * change_label - change the current label on a device * @dev: device to change the label on * @mnt_flags: mount flags of the device or 0 if not mounted * @mnt_point: mount point of the device or NULL * @label: the new label * * Change the label on the device @dev to @label. */ static int change_label(ntfs_volume *vol, unsigned long mnt_flags, char *label, BOOL force) { ntfschar *new_label = NULL; int label_len; int result = 0; //XXX significant? if (mnt_flags & NTFS_MF_MOUNTED) { /* If not the root fs or mounted read/write, refuse change. */ if (!(mnt_flags & NTFS_MF_ISROOT) || !(mnt_flags & NTFS_MF_READONLY)) { if (!force) { ntfs_log_error("Refusing to change label on " "read-%s mounted device %s.\n", mnt_flags & NTFS_MF_READONLY ? "only" : "write", opts.device); return 1; } } } label_len = ntfs_mbstoucs(label, &new_label); if (label_len == -1) { ntfs_log_perror("Unable to convert label string to Unicode"); return 1; } else if (label_len*sizeof(ntfschar) > 0x100) { ntfs_log_warning("New label is too long. Maximum %u characters " "allowed. Truncating %u excess characters.\n", (unsigned)(0x100 / sizeof(ntfschar)), (unsigned)(label_len - (0x100 / sizeof(ntfschar)))); label_len = 0x100 / sizeof(ntfschar); label[label_len] = const_cpu_to_le16(0); } if(!opts.noaction) result = ntfs_volume_rename(vol, new_label, label_len) ? 1 : 0; free(new_label); return result; }