[Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings
Steven Whitehouse
swhiteho at redhat.com
Tue Jul 5 14:56:19 UTC 2011
Hi,
On Tue, 2011-07-05 at 11:41 -0300, Carlos Maiolino wrote:
> This patch modify the strings of gfs2_convert to be
> able to receive translations.
> ---
> gfs2/convert/gfs2_convert.c | 206 ++++++++++++++++++++++---------------------
> 1 files changed, 107 insertions(+), 99 deletions(-)
>
> diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
> index b47bbb7..7f6135f 100644
> --- a/gfs2/convert/gfs2_convert.c
> +++ b/gfs2/convert/gfs2_convert.c
> @@ -541,15 +541,15 @@ static int get_inode_metablocks(struct gfs2_sbd *sbp, struct gfs2_inode *ip, str
> /* Add dinode block to the list */
> blk = malloc(sizeof(struct blocklist));
> if (!blk) {
> - log_crit("Error: Can't allocate memory for indirect block fix\n");
> + log_crit(_("Error: Can't allocate memory for indirect block fix\n"));
> return -1;
> }
This is ok for now, but we should replace messages like this with a call
to strerror in the future, since that is already translated for us. Also
we should be recording the position in the code with a file/line number
so that we can then use the same message in all "out of memory"
situations.
> memset(blk, 0, sizeof(*blk));
> blk->block = dibh->b_blocknr;
> blk->ptrbuf = malloc(bufsize);
> if (!blk->ptrbuf) {
> - log_crit("Error: Can't allocate memory"
> - " for file conversion.\n");
> + log_crit(_("Error: Can't allocate memory"
> + " for file conversion.\n"));
> free(blk);
> return -1;
> }
> @@ -576,13 +576,14 @@ static int get_inode_metablocks(struct gfs2_sbd *sbp, struct gfs2_inode *ip, str
>
> newblk = malloc(sizeof(struct blocklist));
> if (!newblk) {
> - log_crit("Error: Can't allocate memory for indirect block fix.\n");
> + log_crit(_("Error: Can't allocate memory for indirect block fix.\n"));
> return -1;
> }
> memset(newblk, 0, sizeof(*newblk));
> newblk->ptrbuf = malloc(bufsize);
> if (!newblk->ptrbuf) {
> - log_crit("Error: Can't allocate memory for file conversion.\n");
> + /* FIXME: This message should be different, to not conflit with the above file conversion */
> + log_crit(_("Error: Can't allocate memory for file conversion.\n"));
> free(newblk);
> return -1;
> }
> @@ -655,6 +656,7 @@ static int fix_ind_jdata(struct gfs2_sbd *sbp, struct gfs2_inode *ip, uint32_t d
> uint32_t gfs2_hgt, uint64_t dinode_size, struct blocklist *blk,
> struct blocklist *blocks)
> {
> + /*FIXME: Messages here should be different, to not conflit with messages in get_inode_metablocks */
> struct blocklist *newblk;
> unsigned int len, bufsize;
> uint64_t *ptr1, block;
> @@ -675,13 +677,13 @@ static int fix_ind_jdata(struct gfs2_sbd *sbp, struct gfs2_inode *ip, uint32_t d
>
> newblk = malloc(sizeof(struct blocklist));
> if (!newblk) {
> - log_crit("Error: Can't allocate memory for indirect block fix.\n");
> + log_crit(_("Error: Can't allocate memory for indirect block fix.\n"));
> return -1;
> }
> memset(newblk, 0, sizeof(*newblk));
> newblk->ptrbuf = malloc(bufsize);
> if (!newblk->ptrbuf) {
> - log_crit("Error: Can't allocate memory for file conversion.\n");
> + log_crit(_("Error: Can't allocate memory for file conversion.\n"));
> free(newblk);
> return -1;
> }
> @@ -821,7 +823,7 @@ static int fix_cdpn_symlink(struct gfs2_sbd *sbp, struct gfs2_buffer_head *bh, s
> /* Save the symlink di_addr. We'll find the parent di_addr later */
> fix = malloc(sizeof(struct inode_dir_block));
> if (!fix) {
> - log_crit("Error: out of memory.\n");
> + log_crit(_("Error: out of memory.\n"));
> return -1;
> }
> memset(fix, 0, sizeof(struct inode_dir_block));
> @@ -855,7 +857,8 @@ static int fix_xattr(struct gfs2_sbd *sbp, struct gfs2_buffer_head *bh, struct g
> len = sbp->bsize - sizeof(struct gfs_indirect);
> buf = malloc(len);
> if (!buf) {
> - log_crit("Error: out of memory.\n");
> + /*FIXME: Same message as fix_cdpn_symlink */
> + log_crit(_("Error: out of memory.\n"));
> return -1;
> }
> old_hdr_sz = sizeof(struct gfs_indirect);
> @@ -896,7 +899,8 @@ static int adjust_inode(struct gfs2_sbd *sbp, struct gfs2_buffer_head *bh)
> /* Add this directory to the list of dirs to fix later. */
> fixdir = malloc(sizeof(struct inode_block));
> if (!fixdir) {
> - log_crit("Error: out of memory.\n");
> + /*FIXME: Same message as fix_cdpn_symlink */
> + log_crit(_("Error: out of memory.\n"));
> return -1;
> }
> memset(fixdir, 0, sizeof(struct inode_block));
> @@ -990,7 +994,7 @@ static int inode_renumber(struct gfs2_sbd *sbp, uint64_t root_inode_addr, osi_li
> int error = 0;
> int rgs_processed = 0;
>
> - log_notice("Converting inodes.\n");
> + log_notice(_("Converting inodes.\n"));
> sbp->md.next_inum = 1; /* starting inode numbering */
> gettimeofday(&tv, NULL);
> seconds = tv.tv_sec;
> @@ -1008,7 +1012,7 @@ static int inode_renumber(struct gfs2_sbd *sbp, uint64_t root_inode_addr, osi_li
> /* doesn't think we hung. (This may take a long time). */
> if (tv.tv_sec - seconds) {
> seconds = tv.tv_sec;
> - log_notice("\r%llu inodes from %d rgs converted.",
> + log_notice(_("\r%llu inodes from %d rgs converted."),
We shouldn't be adding \r into messages as that will be flagged up when
the strings are generated, and formatting is, in general, not
translatable.
> (unsigned long long)sbp->md.next_inum,
> rgs_processed);
> fflush(stdout);
> @@ -1063,7 +1067,7 @@ static int inode_renumber(struct gfs2_sbd *sbp, uint64_t root_inode_addr, osi_li
> first = 0;
> } /* while 1 */
> } /* for all rgs */
> - log_notice("\r%llu inodes from %d rgs converted.",
> + log_notice(_("\r%llu inodes from %d rgs converted."),
> (unsigned long long)sbp->md.next_inum, rgs_processed);
> fflush(stdout);
> return 0;
> @@ -1104,7 +1108,7 @@ static int process_dirent_info(struct gfs2_inode *dip, struct gfs2_sbd *sbp,
>
> error = gfs2_dirent_first(dip, bh, &dent);
> if (error != IS_LEAF && error != IS_DINODE) {
> - log_crit("Error retrieving directory.\n");
> + log_crit(_("Error retrieving directory.\n"));
> return -1;
> }
> error = 0;
> @@ -1129,7 +1133,7 @@ static int process_dirent_info(struct gfs2_inode *dip, struct gfs2_sbd *sbp,
> dirents_fixed++;
> if (tv.tv_sec - seconds) {
> seconds = tv.tv_sec;
> - log_notice("\r%llu directories, %llu dirents fixed.",
> + log_notice(_("\r%llu directories, %llu dirents fixed."),
> (unsigned long long)dirs_fixed,
> (unsigned long long)dirents_fixed);
> fflush(stdout);
> @@ -1140,7 +1144,7 @@ static int process_dirent_info(struct gfs2_inode *dip, struct gfs2_sbd *sbp,
> if (inum.no_formal_ino) { /* if not a sentinel (placeholder) */
> error = fetch_inum(sbp, inum.no_addr, &inum, NULL);
> if (error) {
> - log_crit("Error retrieving inode 0x%llx\n",
> + log_crit(_("Error retrieving inode 0x%llx\n"),
> (unsigned long long)inum.no_addr);
> break;
> }
> @@ -1234,7 +1238,7 @@ static int fix_one_directory_exhash(struct gfs2_sbd *sbp, struct gfs2_inode *dip
> if (!error) /* end of file */
> return 0; /* success */
> else if (error != sizeof(uint64_t)) {
> - log_crit("fix_one_directory_exhash: error reading directory.\n");
> + log_crit(_("fix_one_directory_exhash: error reading directory.\n"));
> return -1;
> }
> else {
> @@ -1250,7 +1254,7 @@ static int fix_one_directory_exhash(struct gfs2_sbd *sbp, struct gfs2_inode *dip
> /* read the leaf buffer in */
> error = gfs2_get_leaf(dip, leaf_block, &bh_leaf);
> if (error) {
> - log_crit("Error reading leaf %llx\n",
> + log_crit(_("Error reading leaf %llx\n"),
> (unsigned long long)leaf_block);
> break;
> }
> @@ -1278,14 +1282,14 @@ static int process_directory(struct gfs2_sbd *sbp, uint64_t dirblock, uint64_t d
> /* fix the directory: either exhash (leaves) or linear (stuffed) */
> if (dip->i_di.di_flags & GFS2_DIF_EXHASH) {
> if (fix_one_directory_exhash(sbp, dip, dentmod)) {
> - log_crit("Error fixing exhash directory.\n");
> + log_crit(_("Error fixing exhash directory.\n"));
> inode_put(&dip);
> return -1;
> }
> } else {
> error = process_dirent_info(dip, sbp, dip->i_bh, dip->i_di.di_entries, dentmod);
> if (error && error != -EISDIR) {
> - log_crit("Error fixing linear directory.\n");
> + log_crit(_("Error fixing linear directory.\n"));
> inode_put(&dip);
> return -1;
> }
> @@ -1312,7 +1316,7 @@ static int fix_directory_info(struct gfs2_sbd *sbp, osi_list_t *dir_to_fix)
> dirents_fixed = 0;
> gettimeofday(&tv, NULL);
> seconds = tv.tv_sec;
> - log_notice("\nFixing file and directory information.\n");
> + log_notice(_("\nFixing file and directory information.\n"));
> fflush(stdout);
> tmp = NULL;
> /* for every directory in the list */
> @@ -1327,7 +1331,7 @@ static int fix_directory_info(struct gfs2_sbd *sbp, osi_list_t *dir_to_fix)
> dir_iblk = (struct inode_block *)fix;
> dirblock = dir_iblk->di_addr; /* addr of dir inode */
> if (process_directory(sbp, dirblock, 0)) {
> - log_crit("Error processing directory\n");
> + log_crit(_("Error processing directory\n"));
> return -1;
> }
> }
> @@ -1363,13 +1367,13 @@ static int fix_cdpn_symlinks(struct gfs2_sbd *sbp, osi_list_t *cdpn_to_fix)
> /* convert symlink to empty dir */
> error = fetch_inum(sbp, l_fix->di_addr, &fix, &eablk);
> if (error) {
> - log_crit("Error retrieving inode at block %llx\n",
> + log_crit(_("Error retrieving inode at block %llx\n"),
> (unsigned long long)l_fix->di_addr);
> break;
> }
> error = fetch_inum(sbp, l_fix->di_paddr, &dir, NULL);
> if (error) {
> - log_crit("Error retrieving inode at block %llx\n",
> + log_crit(_("Error retrieving inode at block %llx\n"),
> (unsigned long long)l_fix->di_paddr);
> break;
> }
> @@ -1385,7 +1389,7 @@ static int fix_cdpn_symlinks(struct gfs2_sbd *sbp, osi_list_t *cdpn_to_fix)
> /* fix the parent directory dirent entry for this inode */
> error = process_directory(sbp, l_fix->di_paddr, l_fix->di_addr);
> if (error) {
> - log_crit("Error trying to fix cdpn dentry\n");
> + log_crit(_("Error trying to fix cdpn dentry\n"));
> break;
> }
> free(l_fix);
> @@ -1419,17 +1423,17 @@ static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
> unsigned int tmp_mode = 0;
>
> if(ip->i_di.di_size % sizeof(struct gfs1_jindex) != 0){
> - log_crit("The size reported in the journal index"
> + log_crit(_("The size reported in the journal index"
> " inode is not a\n"
> - "\tmultiple of the size of a journal index.\n");
> + "\tmultiple of the size of a journal index.\n"));
> return -1;
> }
> if(!(sd_jindex = (struct gfs1_jindex *)malloc(ip->i_di.di_size))) {
> - log_crit("Unable to allocate journal index\n");
> + log_crit(_("Unable to allocate journal index\n"));
> return -1;
> }
> if(!memset(sd_jindex, 0, ip->i_di.di_size)) {
> - log_crit("Unable to zero journal index\n");
> + log_crit(_("Unable to zero journal index\n"));
> return -1;
> }
> /* ugly hack
> @@ -1448,8 +1452,8 @@ static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
> if(!error)
> break;
> if (error != sizeof(struct gfs1_jindex)){
> - log_crit("An error occurred while reading the"
> - " journal index file.\n");
> + log_crit(_("An error occurred while reading the"
> + " journal index file.\n"));
> goto fail;
> }
> journ = sd_jindex + j;
> @@ -1458,7 +1462,7 @@ static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
> }
> ip->i_di.di_mode = tmp_mode;
> if(j * sizeof(struct gfs1_jindex) != ip->i_di.di_size){
> - log_crit("journal inode size invalid\n");
> + log_crit(_("journal inode size invalid\n"));
> goto fail;
> }
> sdp->md.journals = sdp->orig_journals = j;
> @@ -1507,7 +1511,7 @@ static int init(struct gfs2_sbd *sbp)
> sbp->bsize = sbp->sd_sb.sb_bsize;
> osi_list_init(&sbp->rglist);
> if (compute_constants(sbp)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
>
> @@ -1529,13 +1533,13 @@ static int init(struct gfs2_sbd *sbp)
> brelse(bh);
> if (compute_heightsize(sbp, sbp->sd_heightsize, &sbp->sd_max_height,
> sbp->bsize, sbp->sd_diptrs, sbp->sd_inptrs)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
>
> if (compute_heightsize(sbp, sbp->sd_jheightsize, &sbp->sd_max_jheight,
> sbp->sd_jbsize, sbp->sd_diptrs, sbp->sd_inptrs)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
> /* -------------------------------------------------------- */
> @@ -1546,13 +1550,13 @@ static int init(struct gfs2_sbd *sbp)
> memset(gfs2_heightsize, 0, sizeof(gfs2_heightsize));
> if (compute_heightsize(sbp, gfs2_heightsize, &gfs2_max_height,
> sbp->bsize, sbp->sd_diptrs, gfs2_inptrs)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
> memset(gfs2_jheightsize, 0, sizeof(gfs2_jheightsize));
> if (compute_heightsize(sbp, gfs2_jheightsize, &gfs2_max_jheight,
> sbp->sd_jbsize, sbp->sd_diptrs, gfs2_inptrs)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
>
> @@ -1563,7 +1567,7 @@ static int init(struct gfs2_sbd *sbp)
> sbp->sd_sb.sb_header.mh_type != GFS_METATYPE_SB ||
> sbp->sd_sb.sb_header.mh_format != GFS_FORMAT_SB ||
> sbp->sd_sb.sb_multihost_format != GFS_FORMAT_MULTI) {
> - log_crit("Error: %s does not look like a gfs1 filesystem.\n",
> + log_crit(_("Error: %s does not look like a gfs1 filesystem.\n"),
> device);
> close(sbp->device_fd);
> exit(-1);
> @@ -1585,16 +1589,16 @@ static int init(struct gfs2_sbd *sbp)
> /* look like a directory, temporarily. */
> sbp->md.riinode->i_di.di_mode &= ~S_IFMT;
> sbp->md.riinode->i_di.di_mode |= S_IFDIR;
> - printf("Examining file system");
> + printf(_("Examining file system"));
> if (gfs1_ri_update(sbp, 0, &rgcount, 0)){
> - log_crit("Unable to fill in resource group information.\n");
> + log_crit(_("Unable to fill in resource group information.\n"));
> return -1;
> }
> printf("\n");
> fflush(stdout);
> inode_put(&sbp->md.riinode);
> inode_put(&sbp->md.jiinode);
> - log_debug("%d rgs found.\n", rgcount);
> + log_debug(_("%d rgs found.\n"), rgcount);
> return 0;
> }/* fill_super_block */
>
> @@ -1603,14 +1607,14 @@ static int init(struct gfs2_sbd *sbp)
> /* ------------------------------------------------------------------------- */
> static void give_warning(void)
> {
> - printf("This program will convert a gfs1 filesystem to a " \
> - "gfs2 filesystem.\n");
> - printf("WARNING: This can't be undone. It is strongly advised " \
> - "that you:\n\n");
> - printf(" 1. Back up your entire filesystem first.\n");
> - printf(" 2. Run gfs_fsck first to ensure filesystem integrity.\n");
> - printf(" 3. Make sure the filesystem is NOT mounted from any node.\n");
> - printf(" 4. Make sure you have the latest software versions.\n");
> + printf(_("This program will convert a gfs1 filesystem to a " \
> + "gfs2 filesystem.\n"));
> + printf(_("WARNING: This can't be undone. It is strongly advised " \
> + "that you:\n\n"));
> + printf(_(" 1. Back up your entire filesystem first.\n"));
> + printf(_(" 2. Run gfs_fsck first to ensure filesystem integrity.\n"));
> + printf(_(" 3. Make sure the filesystem is NOT mounted from any node.\n"));
> + printf(_(" 4. Make sure you have the latest software versions.\n"));
This can all be one big multiline string. It will make it easier to
translate. Using \n is ok, even if \r is not.
> }/* give_warning */
>
> /* ------------------------------------------------------------------------- */
> @@ -1618,7 +1622,7 @@ static void give_warning(void)
> /* ------------------------------------------------------------------------- */
> static void version(void)
> {
> - log_notice("gfs2_convert version %s (built %s %s)\n", VERSION,
> + log_notice(_("gfs2_convert version %s (built %s %s)\n"), VERSION,
> __DATE__, __TIME__);
> log_notice("%s\n\n", REDHAT_COPYRIGHT);
> }
> @@ -1629,15 +1633,15 @@ static void version(void)
> static void usage(const char *name)
> {
> give_warning();
> - printf("\nUsage:\n");
> - printf("%s [-hnqvVy] <device>\n\n", name);
> + printf(_("\nUsage:\n"));
> + printf(_("%s [-hnqvVy] <device>\n\n"), name);
> printf("Flags:\n");
> - printf("\th - print this help message\n");
> - printf("\tn - assume 'no' to all questions\n");
> - printf("\tq - quieter output\n");
> - printf("\tv - more verbose output\n");
> - printf("\tV - print version information\n");
> - printf("\ty - assume 'yes' to all questions\n");
> + printf(_("\th - print this help message\n"));
> + printf(_("\tn - assume 'no' to all questions\n"));
> + printf(_("\tq - quieter output\n"));
> + printf(_("\tv - more verbose output\n"));
> + printf(_("\tV - print version information\n"));
> + printf(_("\ty - assume 'yes' to all questions\n"));
> }/* usage */
Likewise, this can also be a single string.
>
> /* ------------------------------------------------------------------------- */
> @@ -1677,7 +1681,7 @@ static void process_parameters(int argc, char **argv, struct gfs2_options *opts)
> opts->yes = 1;
> break;
> default:
> - fprintf(stderr,"Parameter not understood: %c\n", c);
> + fprintf(stderr,_("Parameter not understood: %c\n"), c);
> usage(argv[0]);
> exit(0);
> }
> @@ -1686,11 +1690,11 @@ static void process_parameters(int argc, char **argv, struct gfs2_options *opts)
> strcpy(device, argv[optind]);
> opts->device = device;
> if(!opts->device) {
> - fprintf(stderr, "Please use '-h' for usage.\n");
> + fprintf(stderr, _("Please use '-h' for usage.\n"));
> exit(1);
> }
> } else {
> - fprintf(stderr, "No device specified. Use '-h' for usage.\n");
> + fprintf(stderr, _("No device specified. Use '-h' for usage.\n"));
> exit(1);
> }
> } /* process_parameters */
> @@ -1740,7 +1744,7 @@ static int journ_space_to_rg(struct gfs2_sbd *sdp)
> mh.mh_magic = GFS2_MAGIC;
> mh.mh_type = GFS2_METATYPE_RB;
> mh.mh_format = GFS2_FORMAT_RB;
> - log_notice("Converting journal space to rg space.\n");
> + log_notice(_("Converting journal space to rg space.\n"));
> /* Go through each journal, converting them one by one */
> for (j = 0; j < sdp->orig_journals; j++) { /* for each journal */
> uint64_t size;
> @@ -1760,18 +1764,18 @@ static int journ_space_to_rg(struct gfs2_sbd *sdp)
> (rgd->ri.ri_addr > rgdhigh->ri.ri_addr)))
> rgdhigh = rgd;
> } /* for each rg */
> - log_info("Addr 0x%llx comes after rg at addr 0x%llx\n",
> + log_info(_("Addr 0x%llx comes after rg at addr 0x%llx\n"),
> (unsigned long long)jndx->ji_addr,
> (unsigned long long)rgdhigh->ri.ri_addr);
> if (!rgdhigh) { /* if we somehow didn't find one. */
> - log_crit("Error: No suitable rg found for journal.\n");
> + log_crit(_("Error: No suitable rg found for journal.\n"));
> return -1;
> }
> /* Allocate a new rgd entry which includes rg and ri. */
> /* convert the gfs1 rgrp into a new gfs2 rgrp */
> rgd = malloc(sizeof(struct rgrp_list));
> if (!rgd) {
> - log_crit("Error: unable to allocate memory for rg conversion.\n");
> + log_crit(_("Error: unable to allocate memory for rg conversion.\n"));
> return -1;
> }
> memset(rgd, 0, sizeof(struct rgrp_list));
> @@ -1808,7 +1812,7 @@ static int journ_space_to_rg(struct gfs2_sbd *sdp)
> memset(rgd->bh[x]->b_data, 0, sdp->bsize);
> }
> if (gfs2_compute_bitstructs(sdp, rgd)) {
> - log_crit("gfs2_convert: Error converting bitmaps.\n");
> + log_crit(_("gfs2_convert: Error converting bitmaps.\n"));
> exit(-1);
> }
> convert_bitmaps(sdp, rgd);
> @@ -1839,7 +1843,7 @@ static void update_inode_file(struct gfs2_sbd *sdp)
> if (count != sizeof(uint64_t))
> die("update_inode_file\n");
>
> - log_debug("\nNext Inum: %llu\n", (unsigned long long)sdp->md.next_inum);
> + log_debug(_("\nNext Inum: %llu\n"), (unsigned long long)sdp->md.next_inum);
> }/* update_inode_file */
>
> /* ------------------------------------------------------------------------- */
> @@ -1869,7 +1873,7 @@ static void remove_obsolete_gfs1(struct gfs2_sbd *sbp)
> {
> struct gfs2_inum inum;
>
> - log_notice("Removing obsolete GFS1 file system structures.\n");
> + log_notice(_("Removing obsolete GFS1 file system structures.\n"));
> fflush(stdout);
> /* Delete the old gfs1 Journal index: */
> gfs2_inum_in(&inum, (char *)&raw_gfs1_ondisk_sb.sb_jindex_di);
> @@ -1906,7 +1910,7 @@ static int conv_build_jindex(struct gfs2_sbd *sdp)
> for (j = 0; j < sdp->md.journals; j++) {
> char name[256];
>
> - printf("Writing journal #%d...", j + 1);
> + printf(_("Writing journal #%d..."), j + 1);
> fflush(stdout);
> sprintf(name, "journal%u", j);
> sdp->md.journal[j] = createi(sdp->md.jiinode, name, S_IFREG |
> @@ -1914,7 +1918,7 @@ static int conv_build_jindex(struct gfs2_sbd *sdp)
> write_journal(sdp, j,
> sdp->jsize << 20 >> sdp->sd_sb.sb_bsize_shift);
> inode_put(&sdp->md.journal[j]);
> - printf("done.\n");
> + printf(_("done.\n"));
> fflush(stdout);
> }
>
> @@ -2032,7 +2036,7 @@ static void copy_quotas(struct gfs2_sbd *sdp)
>
> err = gfs2_lookupi(sdp->master_dir, "quota", 5, &nq_ip);
> if (err)
> - die("Couldn't lookup new quota file: %d\n", err);
> + die(_("Couldn't lookup new quota file: %d\n"), err);
>
> gfs2_inum_in(&inum, (char *)&raw_gfs1_ondisk_sb.sb_quota_di);
> oq_ip = inode_read(sdp, inum.no_addr);
> @@ -2079,17 +2083,20 @@ static int __attribute__((format(printf, 3, 4))) gfs2_query(int *setonabort,
> printf("\n");
> fflush(NULL);
> if (response == 0x3) { /* if interrupted, by ctrl-c */
> - response = generic_interrupt("Question", "response",
> +
> + /*This is ok to translate if nobody changes the (a/c) option.
> + * Should we proceed with this translation */
> + response = generic_interrupt(_("Question"), _("response"),
> NULL,
> - "Do you want to abort " \
> - "or continue (a/c)?",
> + _("Do you want to abort " \
> + "or continue (a/c)?"),
> "ac");
Again on a longer term basis, this needs to be fixed up so that the
question can be translated and we can parse the response even if the
translation doesn't use a/c. The glibc messages stuff can help here I
suspect.
> if (response == 'a') {
> ret = 0;
> *setonabort = 1;
> break;
> }
> - printf("Continuing.\n");
> + printf(_("Continuing.\n"));
> } else if(tolower(response) == 'y') {
> ret = 1;
> break;
> @@ -2097,7 +2104,7 @@ static int __attribute__((format(printf, 3, 4))) gfs2_query(int *setonabort,
> ret = 0;
> break;
> } else {
> - printf("Bad response %d, please type 'y' or 'n'.\n",
> + printf(_("Bad response %d, please type 'y' or 'n'.\n"),
> response);
> }
> }
> @@ -2131,9 +2138,9 @@ int main(int argc, char **argv)
>
> give_warning();
> if (!gfs2_query(&do_abort, &opts,
> - "Convert %s from GFS1 to GFS2? (y/n)",
> + _("Convert %s from GFS1 to GFS2? (y/n)"),
> device)) {
> - log_crit("%s not converted.\n", device);
> + log_crit(_("%s not converted.\n"), device);
> close(sb2.device_fd);
> exit(0);
> }
> @@ -2142,12 +2149,12 @@ int main(int argc, char **argv)
> /* Convert incore gfs1 sb to gfs2 sb */
> /* ---------------------------------------------- */
> if (!error) {
> - log_notice("Converting resource groups.");
> + log_notice(_("Converting resource groups."));
> fflush(stdout);
> error = convert_rgs(&sb2);
> log_notice("\n");
> if (error)
> - log_crit("%s: Unable to convert resource groups.\n",
> + log_crit(_("%s: Unable to convert resource groups.\n"),
> device);
> fsync(sb2.device_fd); /* write the buffers to disk */
> }
> @@ -2155,10 +2162,11 @@ int main(int argc, char **argv)
> /* Renumber the inodes consecutively. */
> /* ---------------------------------------------- */
> if (!error) {
> + /* Add a string notifying inode converstion start? */
> error = inode_renumber(&sb2, sb2.sd_sb.sb_root_dir.no_addr,
> (osi_list_t *)&cdpns_to_fix);
> if (error)
> - log_crit("\n%s: Error renumbering inodes.\n", device);
> + log_crit(_("\n%s: Error renumbering inodes.\n"), device);
> fsync(sb2.device_fd); /* write the buffers to disk */
> }
> /* ---------------------------------------------- */
> @@ -2166,32 +2174,32 @@ int main(int argc, char **argv)
> /* ---------------------------------------------- */
> if (!error) {
> error = fix_directory_info(&sb2, (osi_list_t *)&dirs_to_fix);
> - log_notice("\r%llu directories, %llu dirents fixed.",
> + log_notice(_("\r%llu directories, %llu dirents fixed."),
> (unsigned long long)dirs_fixed,
> (unsigned long long)dirents_fixed);
> fflush(stdout);
> if (error)
> - log_crit("\n%s: Error fixing directories.\n", device);
> + log_crit(_("\n%s: Error fixing directories.\n"), device);
> }
> /* ---------------------------------------------- */
> /* Convert cdpn symlinks to empty dirs */
> /* ---------------------------------------------- */
> if (!error) {
> error = fix_cdpn_symlinks(&sb2, (osi_list_t *)&cdpns_to_fix);
> - log_notice("\r%llu cdpn symlinks moved to empty directories.",
> + log_notice(_("\r%llu cdpn symlinks moved to empty directories."),
> (unsigned long long)cdpns_fixed);
> fflush(stdout);
> if (error)
> - log_crit("\n%s: Error fixing cdpn symlinks.\n", device);
> + log_crit(_("\n%s: Error fixing cdpn symlinks.\n"), device);
> }
> /* ---------------------------------------------- */
> /* Convert journal space to rg space */
> /* ---------------------------------------------- */
> if (!error) {
> - log_notice("\nConverting journals.\n");
> + log_notice(_("\nConverting journals.\n"));
> error = journ_space_to_rg(&sb2);
> if (error)
> - log_crit("%s: Error converting journal space.\n", device);
> + log_crit(_("%s: Error converting journal space.\n"), device);
> fsync(sb2.device_fd); /* write the buffers to disk */
> }
> /* ---------------------------------------------- */
> @@ -2201,7 +2209,7 @@ int main(int argc, char **argv)
> int jreduce = 0;
> /* Now we've got to treat it as a gfs2 file system */
> if (compute_constants(&sb2)) {
> - log_crit("Error: Bad constants (1)\n");
> + log_crit(_("Error: Bad constants (1)\n"));
> exit(-1);
> }
>
> @@ -2212,36 +2220,36 @@ int main(int argc, char **argv)
> jreduce = 1;
> }
> if (jreduce)
> - log_notice("Reduced journal size to %u MB to accommodate "
> - "GFS2 file system structures.\n", sb2.jsize);
> + log_notice(_("Reduced journal size to %u MB to accommodate "
> + "GFS2 file system structures.\n"), sb2.jsize);
> /* Build the master subdirectory. */
> build_master(&sb2); /* Does not do inode_put */
> sb2.sd_sb.sb_master_dir = sb2.master_dir->i_di.di_num;
> /* Build empty journal index file. */
> error = conv_build_jindex(&sb2);
> if (error) {
> - log_crit("Error: could not build jindex: %s\n", strerror(error));
> + log_crit(_("Error: could not build jindex: %s\n"), strerror(error));
> exit(-1);
> }
> - log_notice("Building GFS2 file system structures.\n");
> + log_notice(_("Building GFS2 file system structures.\n"));
> /* Build the per-node directories */
> error = build_per_node(&sb2);
> if (error) {
> - log_crit("Error building per-node directories: %s\n",
> + log_crit(_("Error building per-node directories: %s\n"),
> strerror(error));
> exit(-1);
> }
> /* Create the empty inode number file */
> error = build_inum(&sb2); /* Does not do inode_put */
> if (error) {
> - log_crit("Error building inum inode: %s\n",
> + log_crit(_("Error building inum inode: %s\n"),
> strerror(error));
> exit(-1);
> }
> /* Create the statfs file */
> error = build_statfs(&sb2); /* Does not do inode_put */
> if (error) {
> - log_crit("Error building statfs inode: %s\n",
> + log_crit(_("Error building statfs inode: %s\n"),
> strerror(error));
> exit(-1);
> }
> @@ -2249,14 +2257,14 @@ int main(int argc, char **argv)
> /* Create the resource group index file */
> error = build_rindex(&sb2);
> if (error) {
> - log_crit("Error building rindex inode: %s\n",
> + log_crit(_("Error building rindex inode: %s\n"),
> strerror(error));
> exit(-1);
> }
> /* Create the quota file */
> error = build_quota(&sb2);
> if (error) {
> - log_crit("Error building quota inode: %s\n",
> + log_crit(_("Error building quota inode: %s\n"),
> strerror(error));
> exit(-1);
> }
> @@ -2284,7 +2292,7 @@ int main(int argc, char **argv)
>
> /* Now free all the in memory */
> gfs2_rgrp_free(&sb2.rglist);
> - log_notice("Committing changes to disk.\n");
> + log_notice(_("Committing changes to disk.\n"));
> fflush(stdout);
> /* Set filesystem type in superblock to gfs2. We do this at the */
> /* end because if the tool is interrupted in the middle, we want */
> @@ -2300,7 +2308,7 @@ int main(int argc, char **argv)
> if (error)
> perror(device);
> else
> - log_notice("%s: filesystem converted successfully to gfs2.\n",
> + log_notice(_("%s: filesystem converted successfully to gfs2.\n"),
> device);
> }
> close(sb2.device_fd);
Otherwise, it all looks good,
Steve.
More information about the Cluster-devel
mailing list