Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37729796
en ru br
ALT Linux repos
S:1.1.15-alt4
5.0: 1.1.13-alt1
4.1: 1.1.12-alt1
4.0: 1.1.12-alt1
+updates:1.1.12-alt1

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


 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()
 {
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin