Changeset 3583 in kBuild
- Timestamp:
- Jan 6, 2023 1:36:50 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/install.c
r3389 r3583 138 138 int ignore_perm_errors; 139 139 int hard_link_files_when_possible; 140 int verbose_hard_link_refusal; 141 int verbose_hard_link_mode_mismatch; 140 142 int dos2unix; 141 143 } INSTALLINSTANCE; 142 144 typedef INSTALLINSTANCE *PINSTALLINSTANCE; 145 146 enum 147 { 148 kInstOpt_Help = 261, 149 kInstOpt_Version, 150 kInstOpt_Verbose, 151 kInstOpt_Quiet, 152 kInstOpt_IgnorePermErrors, 153 kInstOpt_NoIgnorePermErrors, 154 kInstOpt_HardLinkFilesWhenPossible, 155 kInstOpt_NoHardLinkFilesWhenPossible, 156 kInstOpt_Dos2Unix, 157 kInstOpt_Unix2Dos, 158 kInstOpt_VerboseHardLinkRefusal, 159 kInstOpt_QuietHardLinkRefusal, 160 kInstOpt_VerboseHardLinkModeMismatch, 161 kInstOpt_QuietHardLinkModeMismatch 162 }; 143 163 144 164 … … 148 168 static struct option long_options[] = 149 169 { 150 { "help", no_argument, 0, 261 }, 151 { "version", no_argument, 0, 262 }, 152 { "ignore-perm-errors", no_argument, 0, 263 }, 153 { "no-ignore-perm-errors", no_argument, 0, 264 }, 154 { "hard-link-files-when-possible", no_argument, 0, 265 }, 155 { "no-hard-link-files-when-possible", no_argument, 0, 266 }, 156 { "dos2unix", no_argument, 0, 267 }, 157 { "unix2dos", no_argument, 0, 268 }, 170 { "help", no_argument, 0, kInstOpt_Help }, 171 { "version", no_argument, 0, kInstOpt_Version }, 172 { "quiet", no_argument, 0, kInstOpt_Quiet }, 173 { "ignore-perm-errors", no_argument, 0, kInstOpt_IgnorePermErrors }, 174 { "no-ignore-perm-errors", no_argument, 0, kInstOpt_NoIgnorePermErrors }, 175 { "hard-link-files-when-possible", no_argument, 0, kInstOpt_HardLinkFilesWhenPossible }, 176 { "no-hard-link-files-when-possible", no_argument, 0, kInstOpt_NoHardLinkFilesWhenPossible }, 177 { "verbose-hard-link-refusal", no_argument, 0, kInstOpt_VerboseHardLinkRefusal }, 178 { "quiet-hard-link-refusal", no_argument, 0, kInstOpt_QuietHardLinkRefusal }, 179 { "verbose-hard-link-mode-mismatch", no_argument, 0, kInstOpt_VerboseHardLinkModeMismatch }, 180 { "quiet-hard-link-mode-mismatch", no_argument, 0, kInstOpt_QuietHardLinkModeMismatch }, 181 { "dos2unix", no_argument, 0, kInstOpt_Dos2Unix }, 182 { "unix2dos", no_argument, 0, kInstOpt_Unix2Dos }, 183 #if 1 /* GNU coreutils compatibility: */ 184 { "compare", no_argument, 0, 'C' }, 185 { "directory", no_argument, 0, 'd' }, 186 { "group", required_argument, 0, 'g' }, 187 { "mode", required_argument, 0, 'm' }, 188 { "owner", required_argument, 0, 'o' }, 189 { "strip", no_argument, 0, 's' }, 190 { "suffix", required_argument, 0, 'S' }, 191 { "verbose", no_argument, 0, 'v' }, 192 #endif 158 193 { 0, 0, 0, 0 }, 159 194 }; … … 204 239 This.ignore_perm_errors = geteuid() != 0; 205 240 This.hard_link_files_when_possible = 0; 241 This.verbose_hard_link_refusal = 0; 242 This.verbose_hard_link_mode_mismatch = 0; 206 243 This.dos2unix = 0; 207 244 … … 257 294 case 'S': 258 295 This.safecopy = 1; 296 This.verbose_hard_link_refusal = 0; 259 297 break; 260 298 case 's': 261 299 This.dostrip = 1; 300 This.verbose_hard_link_refusal = 0; 262 301 break; 263 302 case 'v': 303 case kInstOpt_Verbose: 264 304 This.verbose = 1; 265 305 break; 266 case 261: 306 case kInstOpt_Quiet: 307 This.verbose = 0; 308 break; 309 case kInstOpt_Help: 267 310 usage(pCtx, 0); 268 311 return 0; 269 case 262:312 case kInstOpt_Version: 270 313 return kbuild_version(argv[0]); 271 case 263:314 case kInstOpt_IgnorePermErrors: 272 315 This.ignore_perm_errors = 1; 273 316 break; 274 case 264:317 case kInstOpt_NoIgnorePermErrors: 275 318 This.ignore_perm_errors = 0; 276 319 break; 277 case 265:320 case kInstOpt_HardLinkFilesWhenPossible: 278 321 This.hard_link_files_when_possible = 1; 279 322 break; 280 case 266:323 case kInstOpt_NoHardLinkFilesWhenPossible: 281 324 This.hard_link_files_when_possible = 0; 282 325 break; 283 case 267: 326 case kInstOpt_VerboseHardLinkRefusal: 327 This.verbose_hard_link_refusal = 1; 328 break; 329 case kInstOpt_QuietHardLinkRefusal: 330 This.verbose_hard_link_refusal = 0; 331 break; 332 case kInstOpt_VerboseHardLinkModeMismatch: 333 This.verbose_hard_link_mode_mismatch = 1; 334 break; 335 case kInstOpt_QuietHardLinkModeMismatch: 336 This.verbose_hard_link_mode_mismatch = 0; 337 break; 338 case kInstOpt_Dos2Unix: 284 339 This.dos2unix = 1; 285 break; 286 case 268: 340 This.verbose_hard_link_refusal = 0; 341 break; 342 case kInstOpt_Unix2Dos: 287 343 This.dos2unix = -1; 344 This.verbose_hard_link_refusal = 0; 288 345 break; 289 346 case '?': … … 514 571 } else if (pThis->mode != (from_sb.st_mode & ALLPERMS)) { 515 572 # endif 516 kmk_builtin_ctx_printf(pThis->pCtx, 0, 517 "install: warning: Not hard linking, mode differs: 0%03o, desires 0%03o\n" 518 "install: src path '%s'\n" 519 "install: dst path '%s'\n", 520 (from_sb.st_mode & ALLPERMS), pThis->mode, from_name, to_name); 573 if ( pThis->verbose_hard_link_mode_mismatch 574 || pThis->verbose_hard_link_refusal) 575 kmk_builtin_ctx_printf(pThis->pCtx, 0, 576 "install: warning: Not hard linking, mode differs: 0%03o, desires 0%03o\n" 577 "install: src path '%s'\n" 578 "install: dst path '%s'\n", 579 (from_sb.st_mode & ALLPERMS), pThis->mode, from_name, to_name); 521 580 why_not = NULL; 522 581 } else if (pThis->uid != (uid_t)-1 && pThis->uid != from_sb.st_uid) { … … 546 605 } 547 606 #endif 548 if ( pThis->verbose && why_not)607 if (why_not && pThis->verbose_hard_link_refusal) 549 608 kmk_builtin_ctx_printf(pThis->pCtx, 0, "install: not hard linking '%s' to '%s' because: %s\n", 550 609 to_name, from_name, why_not); … … 1123 1182 kmk_builtin_ctx_printf(pCtx, fIsErr, 1124 1183 "usage: %s [-bCcpSsv] [--[no-]hard-link-files-when-possible]\n" 1125 " [--[no-]ignore-perm-errors] [-B suffix] [-f flags] [-g group]\n" 1126 " [-m mode] [-o owner] [--dos2unix|--unix2dos] file1 file2\n" 1184 " [--verbose-hard-link-refusal] [--verbose-hard-link-mode-mismatch]\n" 1185 " [--[no-]ignore-perm-errors] [-B suffix] [-f flags] [-g group]\n" 1186 " [-m mode] [-o owner] [--dos2unix|--unix2dos] file1 file2\n" 1127 1187 " or: %s [-bCcpSsv] [--[no-]ignore-perm-errors] [-B suffix] [-f flags]\n" 1128 " 1188 " [-g group] [-m mode] [-o owner] file1 ... fileN directory\n" 1129 1189 " or: %s -d [-v] [-g group] [-m mode] [-o owner] directory ...\n" 1130 1190 " or: %s --help\n"
Note:
See TracChangeset
for help on using the changeset viewer.