* [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support
@ 2011-07-05 14:41 Carlos Maiolino
2011-07-05 14:41 ` [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings Carlos Maiolino
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Carlos Maiolino @ 2011-07-05 14:41 UTC (permalink / raw)
To: cluster-devel.redhat.com
Add the headers and macros needed to i18n support into gfs2_convert.
---
gfs2/convert/gfs2_convert.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
index 20cca80..b47bbb7 100644
--- a/gfs2/convert/gfs2_convert.c
+++ b/gfs2/convert/gfs2_convert.c
@@ -23,6 +23,9 @@
#include <sys/time.h>
#include <errno.h>
#include <ctype.h>
+#include <libintl.h>
+#include <locale.h>
+#define _(String) gettext(String)
#include <linux/types.h>
#include <linux/gfs2_ondisk.h>
@@ -2112,6 +2115,10 @@ int main(int argc, char **argv)
struct gfs2_buffer_head *bh;
struct gfs2_options opts;
+ /* Set i18n support to gfs2_convert */
+ setlocale(LC_ALL, "");
+ textdomain("gfs2-utils");
+
version();
process_parameters(argc, argv, &opts);
error = init(&sb2);
--
1.7.5.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings
2011-07-05 14:41 [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Carlos Maiolino
@ 2011-07-05 14:41 ` Carlos Maiolino
2011-07-05 14:56 ` Steven Whitehouse
2011-07-05 14:41 ` [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list Carlos Maiolino
2011-07-05 14:56 ` [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Steven Whitehouse
2 siblings, 1 reply; 6+ messages in thread
From: Carlos Maiolino @ 2011-07-05 14:41 UTC (permalink / raw)
To: cluster-devel.redhat.com
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;
}
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."),
(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"));
}/* 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 */
/* ------------------------------------------------------------------------- */
@@ -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");
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);
--
1.7.5.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list
2011-07-05 14:41 [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Carlos Maiolino
2011-07-05 14:41 ` [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings Carlos Maiolino
@ 2011-07-05 14:41 ` Carlos Maiolino
2011-07-05 14:56 ` Steven Whitehouse
2011-07-05 14:56 ` [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Steven Whitehouse
2 siblings, 1 reply; 6+ messages in thread
From: Carlos Maiolino @ 2011-07-05 14:41 UTC (permalink / raw)
To: cluster-devel.redhat.com
Added gfs2_convert files to the translatable files list
of the gfs2-utils i18n support
---
po/POTFILES.in | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 88d2198..b7f8269 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -35,3 +35,6 @@ gfs2/mkfs/main_mkfs.c
#tune tool
gfs2/tune/main.c
gfs2/tune/super.c
+
+#convert tool
+gfs2/convert/gfs2_convert.c
--
1.7.5.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings
2011-07-05 14:41 ` [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings Carlos Maiolino
@ 2011-07-05 14:56 ` Steven Whitehouse
0 siblings, 0 replies; 6+ messages in thread
From: Steven Whitehouse @ 2011-07-05 14:56 UTC (permalink / raw)
To: cluster-devel.redhat.com
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.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list
2011-07-05 14:41 ` [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list Carlos Maiolino
@ 2011-07-05 14:56 ` Steven Whitehouse
0 siblings, 0 replies; 6+ messages in thread
From: Steven Whitehouse @ 2011-07-05 14:56 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
On Tue, 2011-07-05 at 11:41 -0300, Carlos Maiolino wrote:
> Added gfs2_convert files to the translatable files list
> of the gfs2-utils i18n support
> ---
> po/POTFILES.in | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index 88d2198..b7f8269 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -35,3 +35,6 @@ gfs2/mkfs/main_mkfs.c
> #tune tool
> gfs2/tune/main.c
> gfs2/tune/super.c
> +
> +#convert tool
> +gfs2/convert/gfs2_convert.c
looks good to me,
Steve.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support
2011-07-05 14:41 [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Carlos Maiolino
2011-07-05 14:41 ` [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings Carlos Maiolino
2011-07-05 14:41 ` [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list Carlos Maiolino
@ 2011-07-05 14:56 ` Steven Whitehouse
2 siblings, 0 replies; 6+ messages in thread
From: Steven Whitehouse @ 2011-07-05 14:56 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
Also looks good,
Steve.
On Tue, 2011-07-05 at 11:41 -0300, Carlos Maiolino wrote:
> Add the headers and macros needed to i18n support into gfs2_convert.
> ---
> gfs2/convert/gfs2_convert.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
> index 20cca80..b47bbb7 100644
> --- a/gfs2/convert/gfs2_convert.c
> +++ b/gfs2/convert/gfs2_convert.c
> @@ -23,6 +23,9 @@
> #include <sys/time.h>
> #include <errno.h>
> #include <ctype.h>
> +#include <libintl.h>
> +#include <locale.h>
> +#define _(String) gettext(String)
>
> #include <linux/types.h>
> #include <linux/gfs2_ondisk.h>
> @@ -2112,6 +2115,10 @@ int main(int argc, char **argv)
> struct gfs2_buffer_head *bh;
> struct gfs2_options opts;
>
> + /* Set i18n support to gfs2_convert */
> + setlocale(LC_ALL, "");
> + textdomain("gfs2-utils");
> +
> version();
> process_parameters(argc, argv, &opts);
> error = init(&sb2);
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-07-05 14:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-05 14:41 [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Carlos Maiolino
2011-07-05 14:41 ` [Cluster-devel] [PATCH 2/3] gfs2_convert: set translatable strings Carlos Maiolino
2011-07-05 14:56 ` Steven Whitehouse
2011-07-05 14:41 ` [Cluster-devel] [PATCH 3/3] i18n support: Add gfs2_convert to translatable list Carlos Maiolino
2011-07-05 14:56 ` Steven Whitehouse
2011-07-05 14:56 ` [Cluster-devel] [PATCH 1/3] gfs2_convert: Add i18n support Steven Whitehouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).