ALT Linux repos
Group :: System/Kernel and hardware
RPM: jfsutils
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: jfsutils-1.1.15-alt4.patch
Download
Download
COPYING | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++
ChangeLog | 14 +++
fsck/fsckbmap.c | 4 +-
fsck/fsckdtre.c | 6 +-
fsck/fsckimap.c | 18 ++-
fsck/fsckino.c | 3 +-
fsck/xchkdsk.c | 3 +-
fscklog/display.c | 2 +-
fscklog/fscklog.c | 6 +-
jfsutils.spec.in | 2 +-
libfs/devices.c | 7 +-
libfs/devices.h | 2 +
libfs/log_dump.c | 5 +-
libfs/log_map.c | 10 +-
libfs/logredo.c | 4 +-
libfs/open_by_label.c | 4 +-
logdump/helpers.c | 6 +-
mkfs/initmap.c | 2 +-
mkfs/mkfs.c | 7 +-
tune/tune.c | 4 +-
xpeek/alter.c | 2 +-
xpeek/directory.c | 2 +-
22 files changed, 410 insertions(+), 42 deletions(-)
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
index a20d216..7528bd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,18 @@
+2012-05-11 Dave Kleikamp <dave.kleikamp@oracle.com>
+ * fsck/fsckimap.c: print err message before re-assigning this_ag
+ * libfs/log_map.c: add sanity check before using agno as array index
+
+2011-06-20 Dave Kleikamp <dave.kleikamp@oracle.com>
+ * fsck/fsckimap.c: Allow agstart to be anywhere within AG
+
+2011-05-04 Dave Kleikamp <shaggy@kernel.org>
+ * libfs/logredo.c: check for non-zero return code from findLog()
+
+2011-03-07 Dave Kleikamp <shaggy@kernel.org>
+ * libfs/log_map.c: bMapInit: nbytes needs to be 64 bits
+
2011-03-04 Dave Kleikamp <shaggy@vnet.linux.ibm.com>
+ * COPYING: Add GPLv2 file to avoid automake's GPLv3 default
* configure.in: Bumped version to 1.1.15
* NEWS: likewise
* README: likewise
diff --git a/fsck/fsckbmap.c b/fsck/fsckbmap.c
index a95f2b6..0353d5e 100644
--- a/fsck/fsckbmap.c
+++ b/fsck/fsckbmap.c
@@ -388,7 +388,7 @@ int dmap_pwmap_rebuild(uint32_t * pmap_freeblks)
if (bdpr_rc == FSCK_OK) {
for (map_wordidx = 0; (map_wordidx < LPERDMAP); map_wordidx++) {
max_buddy =
- ujfs_maxbuddy((char *) &(wsp_bits[map_wordidx]));
+ ujfs_maxbuddy((unsigned char *) &(wsp_bits[map_wordidx]));
bmap_recptr->dmap_wsp_sleafs[map_wordidx] = max_buddy;
bmap_recptr->dmap_bufptr->wmap[map_wordidx] =
@@ -475,7 +475,7 @@ int dmap_pmap_verify(uint32_t * pmap_freeblks)
goto bdpv_exit;
for (map_wordidx = 0; (map_wordidx < LPERDMAP); map_wordidx++) {
- max_buddy = ujfs_maxbuddy((char *) &(wsp_bits[map_wordidx]));
+ max_buddy = ujfs_maxbuddy((unsigned char *) &(wsp_bits[map_wordidx]));
bmap_recptr->dmap_wsp_sleafs[map_wordidx] = max_buddy;
bitmask = 0x80000000u;
for (word_bitidx = 0; (word_bitidx < DBWORD); word_bitidx++) {
diff --git a/fsck/fsckdtre.c b/fsck/fsckdtre.c
index fcdc3e9..768c778 100644
--- a/fsck/fsckdtre.c
+++ b/fsck/fsckdtre.c
@@ -1638,7 +1638,7 @@ int dTree_key_extract_cautiously(struct fsck_Dtree_info *dtiptr,
while ((deck_rc == FSCK_OK) && (!inorecptr->ignore_alloc_blks)
&& (this_charidx < *key_length)) {
if (((unsigned short *) key_space)[this_charidx] ==
- (unsigned short) NULL) {
+ (unsigned short) 0) {
inorecptr->ignore_alloc_blks = 1;
} else {
this_charidx++;
@@ -1774,7 +1774,7 @@ int dTree_key_extract_record(struct fsck_Dtree_info *dtiptr,
while ((derk_rc == FSCK_OK) && (!inorecptr->ignore_alloc_blks)
&& (this_charidx < *key_length)) {
if (((unsigned short *) key_space)[this_charidx] ==
- (unsigned short) NULL) {
+ (unsigned short) 0) {
inorecptr->ignore_alloc_blks = 1;
} else {
this_charidx++;
@@ -3914,7 +3914,7 @@ int reconnect_fs_inodes()
msg_defs[fsck_dotext].msg_txt);
}
UTF8_String_To_Unicode_String(Uni_Name,
- ino_name,
+ (uint8_t *) ino_name,
JFS_NAME_MAX);
intermed_rc =
direntry_add(lsfn_inoptr, this_ext->inonum,
diff --git a/fsck/fsckimap.c b/fsck/fsckimap.c
index 2ceb4c8..2b6414f 100644
--- a/fsck/fsckimap.c
+++ b/fsck/fsckimap.c
@@ -998,7 +998,7 @@ int AIS_redundancy_check()
goto aisrc_exit;
secondary_bufptr = agg_recptr->ino_buf_ptr;
- tree_offset = (int32_t) &(((struct dinode *)0)->di_btroot);
+ tree_offset = (intptr_t) &(((struct dinode *)0)->di_btroot);
treesize =
sizeof (primary_inoptr->di_DASD) + sizeof (primary_inoptr->di_dxd) +
sizeof (primary_inoptr->di_inlinedata);
@@ -2751,6 +2751,8 @@ int iags_rebuild(int is_aggregate,
iagiptr->iagptr->iagnum = iag_idx;
this_ag =
iagiptr->iagptr->agstart / ((int64_t) sb_ptr->s_agsize);
+#if 0
+ /* Old kernels don't update agstart during resize */
if (iagiptr->iagptr->agstart != (this_ag * sb_ptr->s_agsize)) {
/* not a valid starting block for an AG */
this_ag = 0;
@@ -2758,13 +2760,15 @@ int iags_rebuild(int is_aggregate,
fsck_send_msg(fsck_BADIAGAGSTRTCRCTD,
fsck_ref_msg(msg_info_ptr->msg_mapowner),
iag_idx);
- } else if ((this_ag < 0) || (this_ag > MAXAG)) {
+ } else
+#endif
+ if ((this_ag < 0) || (this_ag > MAXAG)) {
/* not a valid starting block for an AG */
- this_ag = 0;
- iagiptr->iagptr->agstart = 0;
fsck_send_msg(fsck_BADIAGAGCRCTD,
fsck_ref_msg(msg_info_ptr->msg_mapowner),
iag_idx, (long long) this_ag);
+ this_ag = 0;
+ iagiptr->iagptr->agstart = 0;
}
/*
* count allocations and build maps for this iag
@@ -2879,6 +2883,8 @@ int iags_validation(int is_aggregate,
}
this_ag =
iagiptr->iagptr->agstart / ((int64_t) sb_ptr->s_agsize);
+#if 0
+ /* Old kernels don't update agstart during resize */
if (iagiptr->iagptr->agstart != (this_ag * sb_ptr->s_agsize)) {
/* not a valid starting block for an AG */
bad_agstrt_in_iag = -1;
@@ -2886,7 +2892,9 @@ int iags_validation(int is_aggregate,
fsck_send_msg(fsck_BADIAGAGSTRT,
fsck_ref_msg(msg_info_ptr->msg_mapowner),
iag_idx);
- } else if ((this_ag < 0) || (this_ag > MAXAG)) {
+ } else
+#endif
+ if ((this_ag < 0) || (this_ag > MAXAG)) {
/* not a valid starting block for an AG */
bad_agstrt_in_iag = -1;
errors_in_iag = -1;
diff --git a/fsck/fsckino.c b/fsck/fsckino.c
index 45984be..09cb907 100644
--- a/fsck/fsckino.c
+++ b/fsck/fsckino.c
@@ -1841,7 +1841,6 @@ int validate_record_fileset_inode(uint32_t inonum, uint32_t inoidx,
*ino_msg_info_ptr)
{
int vrfi_rc = FSCK_OK;
- int intermed_rc = FSCK_OK;
struct fsck_inode_record *inorecptr;
int8_t bad_size = 0;
int aggregate_inode = 0;
@@ -2034,7 +2033,7 @@ int validate_record_fileset_inode(uint32_t inonum, uint32_t inoidx,
}
if (!(inorecptr->ignore_alloc_blks)) {
/* the tree looks ok */
- intermed_rc = in_inode_data_check(inorecptr, ino_msg_info_ptr);
+ in_inode_data_check(inorecptr, ino_msg_info_ptr);
if (inorecptr->selected_to_rls) {
fsck_send_msg(fsck_BADKEYS,
fsck_ref_msg(ino_msg_info_ptr->msg_inotyp),
diff --git a/fsck/xchkdsk.c b/fsck/xchkdsk.c
index fcc2428..48facda 100644
--- a/fsck/xchkdsk.c
+++ b/fsck/xchkdsk.c
@@ -1429,7 +1429,6 @@ int report_problems_setup_repairs()
int initial_processing(int argc, char **argv)
{
int pi_rc = FSCK_OK;
- int iml_rc = FSCK_OK;
int64_t fsblk_offset_bak;
int64_t byte_offset_bak;
time_t Current_Time;
@@ -1438,7 +1437,7 @@ int initial_processing(int argc, char **argv)
/*
* Initiate fsck service logging
*/
- iml_rc = fscklog_start();
+ fscklog_start();
/*
* Log the beginning of the fsck session
diff --git a/fscklog/display.c b/fscklog/display.c
index a33d44f..e9af9ba 100644
--- a/fscklog/display.c
+++ b/fscklog/display.c
@@ -182,7 +182,7 @@ void dump_service_log()
} else {
/* the record looks ok */
msg_txt = &log_entry[log_entry_pos];
- printf(msg_txt);
+ fputs(msg_txt, stdout);
/*
* set up for the next record
*/
diff --git a/fscklog/fscklog.c b/fscklog/fscklog.c
index b6c6202..f2fbf99 100644
--- a/fscklog/fscklog.c
+++ b/fscklog/fscklog.c
@@ -243,17 +243,13 @@ int v_send_msg(int msg_num, const char *file_name, int line_number, ...) {
struct fsck_message *message = &msg_defs[msg_num];
char msg_string[max_log_entry_length - 4];
- char debug_detail[100];
va_list args;
va_start(args, line_number);
vsnprintf(msg_string, sizeof(msg_string), message->msg_txt, args);
va_end(args);
- sprintf(debug_detail, " [%s:%d]\n", basename(file_name), line_number);
-
- printf(msg_string);
- printf(debug_detail);
+ printf("%s [%s:%d]\n", msg_string, basename(file_name), line_number);
return 0;
}
diff --git a/jfsutils.spec.in b/jfsutils.spec.in
index ff2b63f..e3a768d 100644
--- a/jfsutils.spec.in
+++ b/jfsutils.spec.in
@@ -5,7 +5,7 @@ Group : System/Kernel
Summary : IBM JFS utility programs
-Copyright : GPL
+Copyright : GPL v2 or later
Packager : JFS/Linux team <shaggy@kernel.org>
URL : http://jfs.sourceforge.net/
diff --git a/libfs/devices.c b/libfs/devices.c
index f050464..b02f1ac 100644
--- a/libfs/devices.c
+++ b/libfs/devices.c
@@ -29,6 +29,11 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
+#include <inttypes.h>
+
+#if HAVE_SYS_SYSMACROS_H
+#include <sys/sysmacros.h>
+#endif
#ifdef HAVE_SYS_MOUNT_H
#ifdef HAVE_SYS_PARAM_H
@@ -438,7 +443,7 @@ int ujfs_rw_diskblocks(FILE *dev_ptr,
perror("ujfs_rw_diskblocks");
else
fprintf(stderr,
- "ujfs_rw_diskblocks: %s %zd of %d bytes at offset %lld\n",
+ "ujfs_rw_diskblocks: %s %zd of %d bytes at offset %" PRId64 "\n",
(mode == GET) ? "read" : "wrote",
Bytes_Transferred, disk_count, disk_offset);
diff --git a/libfs/devices.h b/libfs/devices.h
index fcaacbb..1839c02 100644
--- a/libfs/devices.h
+++ b/libfs/devices.h
@@ -18,6 +18,8 @@
#ifndef H_DEVICES
#define H_DEVICES
+#include <stdint.h>
+
#define GET 0
#define PUT 1
#define VRFY 2
diff --git a/libfs/log_dump.c b/libfs/log_dump.c
index 3783f54..dd138b6 100644
--- a/libfs/log_dump.c
+++ b/libfs/log_dump.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <fcntl.h>
#include <errno.h>
+#include <stdint.h>
#include "jfs_types.h"
#include "jfs_endian.h"
#include "jfs_filsys.h"
@@ -146,7 +147,7 @@ struct bufpool {
*
* log has its own 4 page buffer pool.
*/
-uint8_t afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
+char afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
/*
* Miscellaneous
@@ -649,7 +650,7 @@ void ldmp_xdump(char *saddr, int count)
hexchar = "0123456789ABCDEF";
prevbuf[0] = '\0';
- i = (int) saddr % 4;
+ i = (intptr_t) saddr % 4;
if (i != 0)
saddr = saddr - i;
diff --git a/libfs/log_map.c b/libfs/log_map.c
index 3206968..c1d5109 100644
--- a/libfs/log_map.c
+++ b/libfs/log_map.c
@@ -340,7 +340,8 @@ int bMapInit(int vol, /* index in vopen array */
caddr_t p0 = NULL;
xtpage_t *xp;
int i, j, k, w, pgidx;
- int32_t nbytes, npages, this_page;
+ int64_t nbytes;
+ int32_t npages, this_page;
uint32_t *pmap, mask;
pxd_t pxd;
int64_t xaddr;
@@ -1062,6 +1063,13 @@ int writeImap(int vol, /* index in vopen array */
iagfree = 0;
agno = BLKNOTOAG(iagp->agstart, vopen[vol].l2agsize);
+ if ((agno < 0) || (agno > MAXAG)) {
+ fsck_send_msg(fsck_BADIAGAGCRCTD,
+ fsck_ref_msg(fsck_fileset),
+ iagp->iagnum, (long long) agno);
+ iagp->agstart = 0;
+ agno = 0;
+ }
updateImapPage(vol, iagp, &numinos, &iagfree);
if (iagfree) { /* all inodes are free, then this iag should
diff --git a/libfs/logredo.c b/libfs/logredo.c
index eb897e8..5b01ad5 100644
--- a/libfs/logredo.c
+++ b/libfs/logredo.c
@@ -151,7 +151,7 @@ struct bufpool {
*
* log has its own 4 page buffer pool.
*/
-uint8_t afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
+char afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
/*
* Miscellaneous
@@ -496,7 +496,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
* validate that the log is not currently in use;
*/
rc = findLog(fp, &in_use);
- if (rc < 0) {
+ if (rc) {
fsck_send_msg(lrdo_DEVOPNREADERROR);
return (rc);
}
diff --git a/libfs/open_by_label.c b/libfs/open_by_label.c
index 664629b..5664492 100644
--- a/libfs/open_by_label.c
+++ b/libfs/open_by_label.c
@@ -69,7 +69,7 @@ FILE * open_check_label(char *device, uuid_t uuid, int is_label, int is_log,
ujfs_swap_logsuper(&logsup);
if (logsup.magic == LOGMAGIC) {
if (is_label) {
- if (!strncmp(uuid, logsup.label, 16))
+ if (!strncmp((const char *)uuid, logsup.label, 16))
return fp;
} else {
if (!uuid_compare(uuid, logsup.uuid))
@@ -81,7 +81,7 @@ FILE * open_check_label(char *device, uuid_t uuid, int is_label, int is_log,
ujfs_swap_superblock(&super);
if (!memcmp(super.s_magic, JFS_MAGIC, 4)) {
if (is_label) {
- if (!strncmp(uuid, super.s_label, 16))
+ if (!strncmp((const char *)uuid, super.s_label, 16))
return fp;
} else {
if (!uuid_compare(uuid, super.s_uuid))
diff --git a/logdump/helpers.c b/logdump/helpers.c
index a7e0c55..3f28600 100644
--- a/logdump/helpers.c
+++ b/logdump/helpers.c
@@ -86,17 +86,13 @@ int v_fsck_send_msg(int msg_num, const char *file_name, int line_number, ...) {
struct fsck_message *message = &msg_defs[msg_num];
char msg_string[max_log_entry_length - 4];
- char debug_detail[100];
va_list args;
va_start(args, line_number);
vsnprintf(msg_string, sizeof(msg_string), message->msg_txt, args);
va_end(args);
- sprintf(debug_detail, " [%s:%d]\n", file_name, line_number);
-
- printf(msg_string);
- printf(debug_detail);
+ printf("%s [%s:%d]\n", msg_string, file_name, line_number);
return 0;
}
diff --git a/mkfs/initmap.c b/mkfs/initmap.c
index 8695cf7..1d6c64d 100644
--- a/mkfs/initmap.c
+++ b/mkfs/initmap.c
@@ -732,7 +732,7 @@ static int dbAlloc(FILE *dev_ptr, int64_t xlen, int64_t * xaddr)
* Since we have not yet completed the block map
* initialization we will have to compute this on the-fly.
*/
- leafw = ujfs_maxbuddy((char *) &p1->wmap[word]);
+ leafw = ujfs_maxbuddy((unsigned char *) &p1->wmap[word]);
if (leafw < l2nb)
continue;
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c
index 3a1d628..c0fb64f 100644
--- a/mkfs/mkfs.c
+++ b/mkfs/mkfs.c
@@ -29,6 +29,7 @@
#include <stdio.h>
#include <time.h>
#include <ctype.h>
+#include <inttypes.h>
#include "jfs_endian.h"
#include "jfs_filsys.h"
#include "jfs_dinode.h"
@@ -598,7 +599,7 @@ void parse_journal_opts(const char *opts, int *ext_journal_opt,
/* see if device is specified by volume label */
} else if (strncmp(opts + 7, "LABEL=", 6) == 0) {
log_fd =
- open_by_label((char *) opts + 7 + 6, 1, 1,
+ open_by_label((unsigned char *) opts + 7 + 6, 1, 1,
journal_device, &in_use);
/*
* If successful, open_by_label returns a file descriptor
@@ -895,7 +896,7 @@ int main(int argc, char *argv[])
if (requested_blocks) {
if (requested_blocks > number_of_blocks) {
- printf("Requested blocks exceed number of blocks on device: %lld.\n",
+ printf("Requested blocks exceed number of blocks on device: %" PRId64 ".\n",
number_of_blocks);
fclose(dev_handle);
return EINVAL;
@@ -987,7 +988,7 @@ format_journal:
* external journal.
*/
if ((ext_journal_opt == create_journal_only)
- && volume_label) {
+ && volume_label[0]) {
label_ptr = volume_label;
}
rc = jfs_logform(fp, aggr_block_size,
diff --git a/tune/tune.c b/tune/tune.c
index 1604221..7d94164 100644
--- a/tune/tune.c
+++ b/tune/tune.c
@@ -89,11 +89,11 @@ void parse_journal_opts(const char *opts)
&in_use);
}
} else if (strncmp(opts + 7, "LABEL=", 6) == 0) {
- log_fd = open_by_label((char *) opts + 7 + 6, 1, 1,
+ log_fd = open_by_label((unsigned char *) opts + 7 + 6, 1, 1,
logdev, &in_use);
} else {
strcpy(logdev, ((char *) opts + 7));
- if (logdev)
+ if (logdev[0])
log_fd = fopen(logdev, "r");
else
journal_usage++;
diff --git a/xpeek/alter.c b/xpeek/alter.c
index 4fe6600..8eb2e33 100644
--- a/xpeek/alter.c
+++ b/xpeek/alter.c
@@ -84,7 +84,7 @@ void alter()
length = (offset + hex_length + bsize - 1) & ~(bsize - 1);
- buffer = (char *) malloc(length);
+ buffer = malloc(length);
if (!buffer) {
fputs("alter: malloc failure!\n", stderr);
return;
diff --git a/xpeek/directory.c b/xpeek/directory.c
index 9a30971..2ba0d34 100644
--- a/xpeek/directory.c
+++ b/xpeek/directory.c
@@ -49,7 +49,7 @@ char display_extent_page(int64_t);
void display_xtpage(xtpage_t *);
void strToUcs(UniChar *, char *, int);
-char UTF8_Buffer[8 * JFS_PATH_MAX];
+uint8_t UTF8_Buffer[8 * JFS_PATH_MAX];
void directory()
{