diff --git a/apsl-2.0.txt b/apsl-2.0.txt new file mode 100644 index 0000000..fe81a60 --- /dev/null +++ b/apsl-2.0.txt @@ -0,0 +1,367 @@ +APPLE PUBLIC SOURCE LICENSE +Version 2.0 - August 6, 2003 + +Please read this License carefully before downloading this software. +By downloading or using this software, you are agreeing to be bound by +the terms of this License. If you do not or cannot agree to the terms +of this License, please do not download or use the software. + +1. General; Definitions. This License applies to any program or other +work which Apple Computer, Inc. ("Apple") makes publicly available and +which contains a notice placed by Apple identifying such program or +work as "Original Code" and stating that it is subject to the terms of +this Apple Public Source License version 2.0 ("License"). As used in +this License: + +1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is +the grantor of rights, (i) claims of patents that are now or hereafter +acquired, owned by or assigned to Apple and (ii) that cover subject +matter contained in the Original Code, but only to the extent +necessary to use, reproduce and/or distribute the Original Code +without infringement; and (b) in the case where You are the grantor of +rights, (i) claims of patents that are now or hereafter acquired, +owned by or assigned to You and (ii) that cover subject matter in Your +Modifications, taken alone or in combination with Original Code. + +1.2 "Contributor" means any person or entity that creates or +contributes to the creation of Modifications. + +1.3 "Covered Code" means the Original Code, Modifications, the +combination of Original Code and any Modifications, and/or any +respective portions thereof. + +1.4 "Externally Deploy" means: (a) to sublicense, distribute or +otherwise make Covered Code available, directly or indirectly, to +anyone other than You; and/or (b) to use Covered Code, alone or as +part of a Larger Work, in any way to provide a service, including but +not limited to delivery of content, through electronic communication +with a client other than You. + +1.5 "Larger Work" means a work which combines Covered Code or portions +thereof with code not governed by the terms of this License. + +1.6 "Modifications" mean any addition to, deletion from, and/or change +to, the substance and/or structure of the Original Code, any previous +Modifications, the combination of Original Code and any previous +Modifications, and/or any respective portions thereof. When code is +released as a series of files, a Modification is: (a) any addition to +or deletion from the contents of a file containing Covered Code; +and/or (b) any new file or other representation of computer program +statements that contains any part of Covered Code. + +1.7 "Original Code" means (a) the Source Code of a program or other +work as originally made available by Apple under this License, +including the Source Code of any updates or upgrades to such programs +or works made available by Apple under this License, and that has been +expressly identified by Apple as such in the header file(s) of such +work; and (b) the object code compiled from such Source Code and +originally made available by Apple under this License. + +1.8 "Source Code" means the human readable form of a program or other +work that is suitable for making modifications to it, including all +modules it contains, plus any associated interface definition files, +scripts used to control compilation and installation of an executable +(object code). + +1.9 "You" or "Your" means an individual or a legal entity exercising +rights under this License. For legal entities, "You" or "Your" +includes any entity which controls, is controlled by, or is under +common control with, You, where "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of fifty percent +(50%) or more of the outstanding shares or beneficial ownership of +such entity. + +2. Permitted Uses; Conditions & Restrictions. Subject to the terms +and conditions of this License, Apple hereby grants You, effective on +the date You accept this License and download the Original Code, a +world-wide, royalty-free, non-exclusive license, to the extent of +Apple's Applicable Patent Rights and copyrights covering the Original +Code, to do the following: + +2.1 Unmodified Code. You may use, reproduce, display, perform, +internally distribute within Your organization, and Externally Deploy +verbatim, unmodified copies of the Original Code, for commercial or +non-commercial purposes, provided that in each instance: + +(a) You must retain and reproduce in all copies of Original Code the +copyright and other proprietary notices and disclaimers of Apple as +they appear in the Original Code, and keep intact all notices in the +Original Code that refer to this License; and + +(b) You must include a copy of this License with every copy of Source +Code of Covered Code and documentation You distribute or Externally +Deploy, and You may not offer or impose any terms on such Source Code +that alter or restrict this License or the recipients' rights +hereunder, except as permitted under Section 6. + +2.2 Modified Code. You may modify Covered Code and use, reproduce, +display, perform, internally distribute within Your organization, and +Externally Deploy Your Modifications and Covered Code, for commercial +or non-commercial purposes, provided that in each instance You also +meet all of these conditions: + +(a) You must satisfy all the conditions of Section 2.1 with respect to +the Source Code of the Covered Code; + +(b) You must duplicate, to the extent it does not already exist, the +notice in Exhibit A in each file of the Source Code of all Your +Modifications, and cause the modified files to carry prominent notices +stating that You changed the files and the date of any change; and + +(c) If You Externally Deploy Your Modifications, You must make +Source Code of all Your Externally Deployed Modifications either +available to those to whom You have Externally Deployed Your +Modifications, or publicly available. Source Code of Your Externally +Deployed Modifications must be released under the terms set forth in +this License, including the license grants set forth in Section 3 +below, for as long as you Externally Deploy the Covered Code or twelve +(12) months from the date of initial External Deployment, whichever is +longer. You should preferably distribute the Source Code of Your +Externally Deployed Modifications electronically (e.g. download from a +web site). + +2.3 Distribution of Executable Versions. In addition, if You +Externally Deploy Covered Code (Original Code and/or Modifications) in +object code, executable form only, You must include a prominent +notice, in the code itself as well as in related documentation, +stating that Source Code of the Covered Code is available under the +terms of this License with information on how and where to obtain such +Source Code. + +2.4 Third Party Rights. You expressly acknowledge and agree that +although Apple and each Contributor grants the licenses to their +respective portions of the Covered Code set forth herein, no +assurances are provided by Apple or any Contributor that the Covered +Code does not infringe the patent or other intellectual property +rights of any other entity. Apple and each Contributor disclaim any +liability to You for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a +condition to exercising the rights and licenses granted hereunder, You +hereby assume sole responsibility to secure any other intellectual +property rights needed, if any. For example, if a third party patent +license is required to allow You to distribute the Covered Code, it is +Your responsibility to acquire that license before distributing the +Covered Code. + +3. Your Grants. In consideration of, and as a condition to, the +licenses granted to You under this License, You hereby grant to any +person or entity receiving or distributing Covered Code under this +License a non-exclusive, royalty-free, perpetual, irrevocable license, +under Your Applicable Patent Rights and other intellectual property +rights (other than patent) owned or controlled by You, to use, +reproduce, display, perform, modify, sublicense, distribute and +Externally Deploy Your Modifications of the same scope and extent as +Apple's licenses under Sections 2.1 and 2.2 above. + +4. Larger Works. You may create a Larger Work by combining Covered +Code with other code not governed by the terms of this License and +distribute the Larger Work as a single product. In each such instance, +You must make sure the requirements of this License are fulfilled for +the Covered Code or any portion thereof. + +5. Limitations on Patent License. Except as expressly stated in +Section 2, no other patent rights, express or implied, are granted by +Apple herein. Modifications and/or Larger Works may require additional +patent licenses from Apple which Apple may grant in its sole +discretion. + +6. Additional Terms. You may choose to offer, and to charge a fee for, +warranty, support, indemnity or liability obligations and/or other +rights consistent with the scope of the license granted herein +("Additional Terms") to one or more recipients of Covered Code. +However, You may do so only on Your own behalf and as Your sole +responsibility, and not on behalf of Apple or any Contributor. You +must obtain the recipient's agreement that any such Additional Terms +are offered by You alone, and You hereby agree to indemnify, defend +and hold Apple and every Contributor harmless for any liability +incurred by or claims asserted against Apple or such Contributor by +reason of any such Additional Terms. + +7. Versions of the License. Apple may publish revised and/or new +versions of this License from time to time. Each version will be given +a distinguishing version number. Once Original Code has been published +under a particular version of this License, You may continue to use it +under the terms of that version. You may also choose to use such +Original Code under the terms of any subsequent version of this +License published by Apple. No one other than Apple has the right to +modify the terms applicable to Covered Code created under this +License. + +8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in +part pre-release, untested, or not fully tested works. The Covered +Code may contain errors that could cause failures or loss of data, and +may be incomplete or contain inaccuracies. You expressly acknowledge +and agree that use of the Covered Code, or any portion thereof, is at +Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND +WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND +APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE +PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM +ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF +MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR +PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST +INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE +FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, +THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR +ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO +ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE +AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. +You acknowledge that the Covered Code is not intended for use in the +operation of nuclear facilities, aircraft navigation, communication +systems, or air traffic control machines in which case the failure of +the Covered Code could lead to death, personal injury, or severe +physical or environmental damage. + +9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO +EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING +TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR +ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, +TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF +APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY +REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF +INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY +TO YOU. In no event shall Apple's total liability to You for all +damages (other than as may be required by applicable law) under this +License exceed the amount of fifty dollars ($50.00). + +10. Trademarks. This License does not grant any rights to use the +trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS", +"QuickTime", "QuickTime Streaming Server" or any other trademarks, +service marks, logos or trade names belonging to Apple (collectively +"Apple Marks") or to any trademark, service mark, logo or trade name +belonging to any Contributor. You agree not to use any Apple Marks in +or as part of the name of products derived from the Original Code or +to endorse or promote products derived from the Original Code other +than as expressly permitted by and in strict compliance at all times +with Apple's third party trademark usage guidelines which are posted +at http://www.apple.com/legal/guidelinesfor3rdparties.html. + +11. Ownership. Subject to the licenses granted under this License, +each Contributor retains all rights, title and interest in and to any +Modifications made by such Contributor. Apple retains all rights, +title and interest in and to the Original Code and any Modifications +made by or on behalf of Apple ("Apple Modifications"), and such Apple +Modifications will not be automatically subject to this License. Apple +may, at its sole discretion, choose to license such Apple +Modifications under this License, or on different terms from those +contained in this License or may choose not to license them at all. + +12. Termination. + +12.1 Termination. This License and the rights granted hereunder will +terminate: + +(a) automatically without notice from Apple if You fail to comply with +any term(s) of this License and fail to cure such breach within 30 +days of becoming aware of such breach; + +(b) immediately in the event of the circumstances described in Section +13.5(b); or + +(c) automatically without notice from Apple if You, at any time during +the term of this License, commence an action for patent infringement +against Apple; provided that Apple did not first commence +an action for patent infringement against You in that instance. + +12.2 Effect of Termination. Upon termination, You agree to immediately +stop any further use, reproduction, modification, sublicensing and +distribution of the Covered Code. All sublicenses to the Covered Code +which have been properly granted prior to termination shall survive +any termination of this License. Provisions which, by their nature, +should remain in effect beyond the termination of this License shall +survive, including but not limited to Sections 3, 5, 8, 9, 10, 11, +12.2 and 13. No party will be liable to any other for compensation, +indemnity or damages of any sort solely as a result of terminating +this License in accordance with its terms, and termination of this +License will be without prejudice to any other right or remedy of +any party. + +13. Miscellaneous. + +13.1 Government End Users. The Covered Code is a "commercial item" as +defined in FAR 2.101. Government software and technical data rights in +the Covered Code include only those rights customarily provided to the +public as defined in this License. This customary commercial license +in technical data and software is provided in accordance with FAR +12.211 (Technical Data) and 12.212 (Computer Software) and, for +Department of Defense purchases, DFAR 252.227-7015 (Technical Data -- +Commercial Items) and 227.7202-3 (Rights in Commercial Computer +Software or Computer Software Documentation). Accordingly, all U.S. +Government End Users acquire Covered Code with only those rights set +forth herein. + +13.2 Relationship of Parties. This License will not be construed as +creating an agency, partnership, joint venture or any other form of +legal association between or among You, Apple or any Contributor, and +You will not represent to the contrary, whether expressly, by +implication, appearance or otherwise. + +13.3 Independent Development. Nothing in this License will impair +Apple's right to acquire, license, develop, have others develop for +it, market and/or distribute technology or products that perform the +same or similar functions as, or otherwise compete with, +Modifications, Larger Works, technology or products that You may +develop, produce, market or distribute. + +13.4 Waiver; Construction. Failure by Apple or any Contributor to +enforce any provision of this License will not be deemed a waiver of +future enforcement of that or any other provision. Any law or +regulation which provides that the language of a contract shall be +construed against the drafter will not apply to this License. + +13.5 Severability. (a) If for any reason a court of competent +jurisdiction finds any provision of this License, or portion thereof, +to be unenforceable, that provision of the License will be enforced to +the maximum extent permissible so as to effect the economic benefits +and intent of the parties, and the remainder of this License will +continue in full force and effect. (b) Notwithstanding the foregoing, +if applicable law prohibits or restricts You from fully and/or +specifically complying with Sections 2 and/or 3 or prevents the +enforceability of either of those Sections, this License will +immediately terminate and You must immediately discontinue any use of +the Covered Code and destroy all copies of it that are in your +possession or control. + +13.6 Dispute Resolution. Any litigation or other dispute resolution +between You and Apple relating to this License shall take place in the +Northern District of California, and You and Apple hereby consent to +the personal jurisdiction of, and venue in, the state and federal +courts within that District with respect to this License. The +application of the United Nations Convention on Contracts for the +International Sale of Goods is expressly excluded. + +13.7 Entire Agreement; Governing Law. This License constitutes the +entire agreement between the parties with respect to the subject +matter hereof. This License shall be governed by the laws of the +United States and the State of California, except that body of +California law concerning conflicts of law. + +Where You are located in the province of Quebec, Canada, the following +clause applies: The parties hereby confirm that they have requested +that this License and all related documents be drafted in English. Les +parties ont exige que le present contrat et tous les documents +connexes soient rediges en anglais. + +EXHIBIT A. + +"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights +Reserved. + +This file contains Original Code and/or Modifications of Original Code +as defined in and that are subject to the Apple Public Source License +Version 2.0 (the 'License'). You may not use this file except in +compliance with the License. Please obtain a copy of the License at +http://www.opensource.apple.com/apsl/ and read it before using this +file. + +The Original Code and all software distributed under the License are +distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, +INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. +Please see the License for the specific language governing rights and +limitations under the License." diff --git a/diskdev_cmds-540.1.linux3.tar.gz b/diskdev_cmds-540.1.linux3.tar.gz new file mode 100644 index 0000000..e3887b8 Binary files /dev/null and b/diskdev_cmds-540.1.linux3.tar.gz differ diff --git a/hfsplus-tools-learn-to-stdarg.patch b/hfsplus-tools-learn-to-stdarg.patch new file mode 100644 index 0000000..683ed7a --- /dev/null +++ b/hfsplus-tools-learn-to-stdarg.patch @@ -0,0 +1,120 @@ +diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c +--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c.jx 2012-02-01 12:17:19.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c 2014-06-18 13:44:45.125620007 -0400 +@@ -296,11 +296,8 @@ static volatile int keep_going = 1; + #undef printf + + // prototype +-void print_to_mem(int type, const char *fmt, const char *str, va_list ap); +- +-#define DO_VPRINT 1 // types for print_to_mem +-#define DO_STR 2 +- ++void vprint_to_mem(const char *fmt, va_list ap); ++void print_to_mem(const char *fmt, ...); + + static void * + fsck_printing_thread(void *arg) +@@ -547,8 +544,8 @@ setup_logging(void) + cur_in_mem = in_mem_log; + + t = time(NULL); +- print_to_mem(DO_STR, "\n%s: ", cdevname ? cdevname : "UNKNOWN-DEV", NULL); +- print_to_mem(DO_STR, "fsck_hfs run at %s", ctime(&t), NULL); ++ print_to_mem("\n%s: ", cdevname ? cdevname : "UNKNOWN-DEV"); ++ print_to_mem("fsck_hfs run at %s", ctime(&t)); + + if (live_fsck && log_file) { + pthread_cond_init(&mem_buf_cond, NULL); +@@ -576,26 +573,20 @@ setup_logging(void) + + + void +-print_to_mem(int type, const char *fmt, const char *str, va_list ap) ++vprint_to_mem(const char *fmt, va_list ap) + { + int ret; + size_t size_remaining; + va_list ap_copy; + +- if (type == DO_VPRINT) { +- va_copy(ap_copy, ap); +- } ++ va_copy(ap_copy, ap); + + if (live_fsck) { + pthread_mutex_lock(&mem_buf_lock); + } + + size_remaining = in_mem_size - (ptrdiff_t)(cur_in_mem - in_mem_log); +- if (type == DO_VPRINT) { +- ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap); +- } else { +- ret = snprintf(cur_in_mem, size_remaining, fmt, str); +- } ++ ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap); + if (ret > size_remaining) { + char *new_log; + size_t amt; +@@ -619,11 +610,7 @@ print_to_mem(int type, const char *fmt, + cur_in_mem = new_log + (cur_in_mem - in_mem_log); + in_mem_log = new_log; + size_remaining = in_mem_size - (ptrdiff_t)(cur_in_mem - new_log); +- if (type == DO_VPRINT) { +- ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap_copy); +- } else { +- ret = snprintf(cur_in_mem, size_remaining, fmt, str); +- } ++ ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap_copy); + if (ret <= size_remaining) { + cur_in_mem += ret; + } +@@ -636,11 +623,18 @@ print_to_mem(int type, const char *fmt, + pthread_mutex_unlock(&mem_buf_lock); + } + done: +- if (type == DO_VPRINT) { +- va_end(ap_copy); +- } ++ va_end(ap_copy); + } + ++void ++print_to_mem(const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start(ap, fmt); ++ vprint_to_mem(fmt, ap); ++ va_end(ap); ++} + + static int need_prefix=1; + +@@ -662,7 +656,7 @@ static int need_prefix=1; + LOG_PREFIX \ + vfprintf(log_file, fmt, ap); \ + } else { \ +- print_to_mem(DO_VPRINT, fmt, NULL, ap); \ ++ vprint_to_mem(fmt, ap); \ + } + + #define FLOG(fmt, str) \ +@@ -670,7 +664,7 @@ static int need_prefix=1; + LOG_PREFIX; \ + fprintf(log_file, fmt, str); \ + } else { \ +- print_to_mem(DO_STR, fmt, str, NULL); \ ++ print_to_mem(fmt, str); \ + } + + +@@ -800,7 +794,7 @@ vplog(const char *fmt, va_list ap) + LOG_PREFIX; + vfprintf(log_file, fmt, ap); + } else { +- print_to_mem(DO_VPRINT, fmt, NULL, ap); ++ vprint_to_mem(fmt, ap); + } + } + diff --git a/hfsplus-tools-no-blocks.patch b/hfsplus-tools-no-blocks.patch new file mode 100644 index 0000000..2017055 --- /dev/null +++ b/hfsplus-tools-no-blocks.patch @@ -0,0 +1,147 @@ +diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/dfalib/SControl.c.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/dfalib/SControl.c +--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/dfalib/SControl.c.jx 2012-02-02 17:16:56.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/dfalib/SControl.c 2014-06-18 13:01:42.716781467 -0400 +@@ -200,6 +200,22 @@ isMinorError(int msg, int *counts) + } + } + ++static int *msgCounts = NULL; ++static jmp_buf envBuf; ++ ++static fsck_block_status_t ++fsckAfterCallback(fsck_ctx_t c, int msgNum, va_list args) ++{ ++ if (abs(msgNum) > E_FirstError && abs(msgNum) < E_LastError) { ++ if (isMinorError(abs(msgNum), msgCounts) == 1) ++ return fsckBlockContinue; ++ longjmp(envBuf, 1); ++ return fsckBlockAbort; ++ } else { ++ return fsckBlockContinue; ++ } ++} ++ + /*------------------------------------------------------------------------------ + + External +@@ -207,7 +223,6 @@ External + + ------------------------------------------------------------------------------*/ + +-static jmp_buf envBuf; + int + CheckHFS( const char *rdevnode, int fsReadRef, int fsWriteRef, int checkLevel, + int repairLevel, fsck_ctx_t fsckContext, int lostAndFoundMode, +@@ -222,7 +237,6 @@ CheckHFS( const char *rdevnode, int fsRe + int isJournaled = 0; + Boolean autoRepair; + Boolean exitEarly = 0; +- __block int *msgCounts = NULL; + Boolean majorErrors = 0; + + if (checkLevel == kMajorCheck) { +@@ -292,16 +306,7 @@ CheckHFS( const char *rdevnode, int fsRe + * the message in question corresponds to a major or a minor error. If it's + * major, we longjmp just above, which causes us to exit out early. + */ +- fsckSetBlock(fsckContext, fsckPhaseAfterMessage, (fsckBlock_t) ^(fsck_ctx_t c, int msgNum, va_list args) { +- if (abs(msgNum) > E_FirstError && abs(msgNum) < E_LastError) { +- if (isMinorError(abs(msgNum), msgCounts) == 1) +- return fsckBlockContinue; +- longjmp(envBuf, 1); +- return fsckBlockAbort; +- } else { +- return fsckBlockContinue; +- } +- }); ++ fsckSetBlock(fsckContext, fsckPhaseAfterMessage, fsckAfterCallback); + } + } + DoAgain: +diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.c.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.c +--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.c.jx 2012-02-02 17:42:58.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.c 2014-06-18 12:57:01.110952333 -0400 +@@ -29,7 +29,6 @@ + #include + #include + #include +-#include + + #include "fsck_messages.h" + #include "fsck_keys.h" +@@ -287,20 +286,10 @@ fsckSetBlock(fsck_ctx_t c, fsck_block_ph + if (c != NULL) { + switch (phase) { + case fsckPhaseBeforeMessage: +- if (ctx->preMessage) { +- Block_release(ctx->preMessage); +- ctx->preMessage = NULL; +- } +- if (bp) +- ctx->preMessage = (fsckBlock_t)Block_copy(bp); ++ ctx->preMessage = bp; + break; + case fsckPhaseAfterMessage: +- if (ctx->postMessage) { +- Block_release(ctx->postMessage); +- ctx->postMessage = NULL; +- } +- if (bp) +- ctx->postMessage = (fsckBlock_t)Block_copy(bp); ++ ctx->postMessage = bp; + break; + case fsckPhaseNone: + /* Just here for compiler warnings */ +@@ -591,12 +580,6 @@ fsckDestroy(fsck_ctx_t c) + if (ctx->flags & cfFromFD) { + fclose(ctx->fp); + } +- if (ctx->preMessage) { +- Block_release(ctx->preMessage); +- } +- if (ctx->postMessage) { +- Block_release(ctx->postMessage); +- } + + free(ctx); + return; +diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.h.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.h +--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.h.jx 2012-02-02 17:54:40.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/fsck_messages.h 2014-06-18 12:31:48.602094998 -0400 +@@ -139,7 +139,7 @@ typedef enum fsck_block_phase_type fsck_ + * the third is a va_list of the arguments for the message. + */ + +-typedef fsck_block_status_t (^fsckBlock_t)(fsck_ctx_t, int, va_list); ++typedef fsck_block_status_t (*fsckBlock_t)(fsck_ctx_t, int, va_list); + + extern fsckBlock_t fsckGetBlock(fsck_ctx_t, fsck_block_phase_t); + extern void fsckSetBlock(fsck_ctx_t, fsck_block_phase_t, fsckBlock_t); +diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/Makefile.lnx.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/Makefile.lnx +--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/Makefile.lnx.jx 2012-02-03 11:25:21.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/Makefile.lnx 2014-06-18 12:52:03.146015370 -0400 +@@ -4,7 +4,7 @@ OFILES = $(CFILES:.c=.o) + all: fsck_hfs + + fsck_hfs: $(OFILES) dfalib/libdfa.a +- $(CC) $(CFLAGS) $(LDFLAGS) $(OFILES) dfalib/libdfa.a -o fsck_hfs -lBlocksRunTime -lpthread ++ $(CC) $(CFLAGS) $(LDFLAGS) $(OFILES) dfalib/libdfa.a -o fsck_hfs -lpthread + + dfalib/libdfa.a: FORCE + $(MAKE) -C dfalib -f Makefile.lnx libdfa.a +diff -up diskdev_cmds-540.1.linux3/Makefile.jx diskdev_cmds-540.1.linux3/Makefile +--- diskdev_cmds-540.1.linux3/Makefile.jx 2012-02-16 15:00:18.000000000 -0500 ++++ diskdev_cmds-540.1.linux3/Makefile 2014-06-18 12:42:59.015463500 -0400 +@@ -1,9 +1,8 @@ + VERSION=540.1.linux3 + +-CC := clang +-CFLAGS := -g3 -Wall -fblocks -I$(PWD)/BlocksRunTime -I$(PWD)/include -DDEBUG_BUILD=0 -D_FILE_OFFSET_BITS=64 -D LINUX=1 -D BSD=1 -D VERSION=\"$(VERSION)\" +-LDFLAGS := -Wl,--build-id -L$(PWD)/BlocksRunTime +-SUBDIRS := BlocksRunTime newfs_hfs.tproj fsck_hfs.tproj ++CFLAGS += -I$(PWD)/include -DDEBUG_BUILD=0 -D_FILE_OFFSET_BITS=64 -D LINUX=1 -D BSD=1 -D VERSION=\"$(VERSION)\" ++LDFLAGS := -Wl,--build-id ++SUBDIRS := newfs_hfs.tproj fsck_hfs.tproj + + all clean: + for d in $(SUBDIRS); do $(MAKE) -C $$d -f Makefile.lnx $@; done diff --git a/hfsplus-tools.spec b/hfsplus-tools.spec new file mode 100644 index 0000000..2667aa2 --- /dev/null +++ b/hfsplus-tools.spec @@ -0,0 +1,65 @@ +Name: hfsplus-tools$ +Version: 540.1.linux3$ +Release: 17$ +Summary: Tools to create/check Apple HFS+ filesystems$ +License: APSL 2.0$ +URL: http://gentoo-wiki.com/HOWTO_hfsplus$ +Source0: http://cavan.codon.org.uk/~mjg59/diskdev_cmds/diskdev_cmds-%{version}.tar.gz$ +Source1: http://www.opensource.org/licenses/apsl-2.0.txt$ +Patch0: hfsplus-tools-no-blocks.patch$ +Patch1: hfsplus-tools-learn-to-stdarg.patch$ +$ +BuildRequires: openssl-devel, libuuid-devel$ +Conflicts: hfsplusutils$ +$ +%define _exec_prefix /$ +$ +%description$ +HFS+, HFS Plus, or Mac OS Extended are names for a file system developed by Apple Computer to replace$ +their Hierarchical File System (HFS). In addition to being the default file system on modern Apple$ +computers, HFS+ is one of two formats, FAT being the other, that are supported by the iPod hard-disk$ +based music player. Unlike FAT, HFS+ supports UNIX style file permissions, which makes it useful for$ +serving and sharing files in a secured manner.$ +$ +%package help$ +Summary: man files for %{name}$ +Requires: man$ +$ +%description help$ +This package includes man files for %{name}.$ +$ +%prep$ +%autosetup -n hfsplus-mkfs-%{version} -n diskdev_cmds-%{version} -p1$ +find . -type f -name '*.[ch]' -exec chmod -c -x {} +$ +cp %{SOURCE1} .$ +$ +%build$ +export CFLAGS="%{optflags}"$ +%make_build -f Makefile$ +$ +%install$ +install -d $RPM_BUILD_ROOT/%{_sbindir}$ +cp newfs_hfs.tproj/newfs_hfs $RPM_BUILD_ROOT/%{_sbindir}/mkfs.hfsplus$ +cp fsck_hfs.tproj/fsck_hfs $RPM_BUILD_ROOT/%{_sbindir}/fsck.hfsplus$ +$ +install -d $RPM_BUILD_ROOT/%{_mandir}/man8$ +cat fsck_hfs.tproj/fsck_hfs.8 | sed -e 's/[F|f]sck_hfs/fsck.hfsplus/g' > $RPM_BUILD_ROOT/%{_mandir}/man8/fsck.hfsplus.8$ +cat newfs_hfs.tproj/newfs_hfs.8 | sed -e 's/[N|n]ewfs_hfs/mkfs.hfsplus/g' > $RPM_BUILD_ROOT/%{_mandir}/man8/mkfs.hfsplus.8$ +$ +cd $RPM_BUILD_ROOT/%{_sbindir}$ +ln -s fsck.hfsplus fsck.hfs$ +cd $RPM_BUILD_ROOT/%{_mandir}/man8$ +ln -s fsck.hfsplus.8 fsck.hfs.8$ +$ +%files$ +%doc apsl-2.0.txt$ +%{_sbindir}/mkfs.hfsplus$ +%{_sbindir}/fsck.hfsplus$ +%{_sbindir}/fsck.hfs$ +$ +%files help$ +%{_mandir}/man*/*$ +$ +%changelog$ +* Fri Dec 13 2019 openEuler Buildteam - 540.1.linux3-17$ +- Package init$