diff options
Diffstat (limited to 'winsup/utils')
-rw-r--r-- | winsup/utils/ChangeLog | 2452 | ||||
-rw-r--r-- | winsup/utils/Makefile.in | 180 | ||||
-rw-r--r-- | winsup/utils/cygcheck.cc | 2183 |
3 files changed, 0 insertions, 4815 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog deleted file mode 100644 index abab8df7cb9..00000000000 --- a/winsup/utils/ChangeLog +++ /dev/null @@ -1,2452 +0,0 @@ -2008-08-04 Christopher Faylor <me+cygwin@cgf.cx> - - * cygcheck.cc (load_cygwin): Duplicate argv list since it disappears - when cygwin1.dll is unloaded. - -2008-07-30 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> - - * Makefile.in: Link cygcheck with -lntdll even without mingw-zlib. - -2008-07-27 Christopher Faylor <me+cygwin@cgf.cx> - - * cygcheck.cc (load_cygwin): Free the cygwin dll after we're done with - it. - -2008-07-25 Christopher Faylor <me+cygwin@cgf.cx> - - * mount.cc: Remove non-unix-like options (-x,-t,b) throughout. - (oopts): Use boolean constants for slightly increased clarity. - - * configure.in: Remove apparently unneeded program_transfer_name code. - * configure: Regenerate. - -2008-07-24 Corinna Vinschen <corinna@vinschen.de> - - * utils.sgml: Remove useless text. - -2008-07-23 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): Fix test for duplicate domain/machine request. - * mkpasswd.c (main): Ditto. - -2008-07-23 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Rework to allow per-domain/per-machine id_offset. - Add -b option to skip builtin groups. - (main): Simplify code. - * mkpasswd.c: Rework to allow per-domain/per-machine id_offset. - (main): Simplify code. - * utils.sgml: Explain changed mkgroup/mkpasswd -d/-D/-l/-L options. - Add mkgroup -b option. - -2008-07-23 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Consolidate variable names. - (enum_unix_groups): New function. - (print_special): Use LookupAccountSidW instead of LookupAccountSidA. - (current_group): Ditto. - (usage): Add -U option. - (longopts): Add --unix option. - (opts): Add -U option. - (main): Handle -U option. Call enum_unix_groups if set. - * mkpasswd.c: Consolidate variable names. - (current_user): Use LookupAccountSidW instead of LookupAccountSidA. - (enum_unix_users): New function. - (usage): Add -U option. - (longopts): Add --unix option. - (opts): Add -U option. - (main): Handle -U option. Call enum_unix_groups if set. - * utils.sgml: Add -U option text to mkgroup and mkpasswd description. - -2008-07-22 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (enum_groups): Create full qualified groupname using - domain or servername, depending on printing domain or machine accounts. - * mkpasswd.c (enum_users): Ditto for users. - -2008-07-22 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): Remove special root group code. Only print - SYSTEM group in case of printing local machine or local domain groups. - -2008-07-22 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (cygcheck.exe): Link against ntdll. - * bloda.cc: Use statically linked functions throughout. - * cygpath.cc: Drop 9x considerations. - * mkgroup.c: Revamp. Redefine -l and -d options to take optional - machine and domain parameters. Redefine -c to work always, using - token information. Add -L, -D, -C to create unique groupnames in - domain\group syntax. Add -S option to define domain\group separator - char. Ignore -u and -s options. - * mkpasswd.c: Revamp. Redefine -l and -d options to take optional - machine and domain parameters. Redefine -c to work always, using - token information. Add -L, -D, -C to create unique usernames in - domain\user syntax. Add -S option to define domain\user separator - char. Ignore -g and -s options. Prefer to take homedir from $HOME - over $HOMEDRIVE/$HOMEPATH. - * path.cc (oopts): Add "acl", "noacl", "posix=0" and "posix=1" options. - (getmntent): Accomodate throughout. - * ps.cc: Fix copyright dates. - * utils.sgml: Fix text for mkgroup and mkpasswd. - -2008-07-17 Corinna Vinschen <corinna@vinschen.de> - - * mount.cc (do_mount): Remove MOUNT_ENC code. - (oopts): Remove "managed" option. - (mount_commands): Drop "managed" handling. - * path.cc (oopts): Remove "managed" option. - (getmntent): Remove MOUNT_ENC code. - -2008-07-17 Corinna Vinschen <corinna@vinschen.de> - - * utils.sgml: Add id's to all examples. - -2008-07-09 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Use statically linked functions throughout, except for - DsGetDcNameW. Reformat. Convert to use WCHAR for names throughout. - Use defines instead of constants throughout. - (MAX_SID_LEN): Define. - (load_netapi): Just load DsGetDcNameW pointer. - (psx_dir): Remove. - (uni2ansi): Remove. - (enum_local_users): Take server name and use in Net... call. - (DBGSID): Define datastructure. - (MAX_BUILTIN_SIDS): Define. - (builtin_sid_list): Define global sid list. - (builtin_sid_cnt): Define counter for global sid list. - (enum_local_groups): Take server name and use in Net... and Lookup... - calls. Take offset argument. Use MAX_PREFERRED_LENGTH in call to - NetLocalGroupEnum. Check for duplicate builtin groups. - (enum_users): Take server name and use in Net... call. - (usage): Change text slightly. - (print_version): Fix copyright. - (main): Call enum_local_groups for domains as well. - * mkpasswd.c: Use statically linked functions throughout, except for - DsGetDcNameW. Reformat. Convert to use WCHAR for names throughout. - Use defines instead of constants throughout. - (MAX_SID_LEN): Define. - (load_netapi): Just load DsGetDcNameW pointer. - (uni2ansi): Use wcstombs. - (current_user): Replace "unused_by_nt/2000/xp" by - just "unused". - (enum_users): Ditto. - (print_version): Fix copyright. - -2008-05-22 Corinna Vinschen <corinna@vinschen.de> - - * setfacl.c (setfacl): Change from void to int. Return 2 in case of - error. - (main): Return with error code from setfacl. - -2008-05-15 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (CYGWIN_BINS): Remove ipcrm and ipcs. - * ipcrm.c: Remove. - * ipcs.c: Remove. - -2008-03-23 Corinna Vinschen <corinna@vinschen.de> - - * mount.cc (usage): Mark -s and -u as ignored. - (print_version): Simplify printing copyright dates. - (main): Remove default_flag. Dont set flags on -s and -u options. - (mount_commands): Drop handling -s and -u options. - -2008-03-22 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Fix multiple Cygwin DLL test. - * path.cc: Fetch mount points from fstab files instead of from - registry. Use adapted functions copied from Cygwin DLL. - (mnt_t): Drop issys member. Define as "mnt_t" instead of "struct mnt_t" - subsequently. - (max_mount_entry): New variable. - (unconvert_slashes): Move to earlier location in file. Make inline. - (find2): Remove. - (get_cygdrive0): Remove. - (get_cygdrive): Remove. - (skip_ws): New function. - (find_ws): Ditto. - (conv_fstab_spaces): Ditto. - (read_flags): Ditto. - (from_fstab_line): Ditto. - (get_user): Ditto. - (from_fstab): Ditto. - (mnt_sort): Ditto. - (read_mounts): Drop old registry code. Fetch - "Software\Cygwin\Setup\rootdir" value from HKCU or HKLM key. Use - rootdir extracted from module path as fallback. Call from_fstab for - nouser and user mount points. - (setmntent): Check max_mount_entry to test if read_mounts must be - called. - (getmntent): Use MOUNT_SYSTEM flag instead of mnt_t's issys member. - -2008-03-16 Brian Dessent <brian@dessent.net> - - * path.cc: Include malloc.h for alloca. - (is_symlink): Rewrite. Just read the whole file in memory rather - than by parts. Account for an ITEMIDLIST if present, as well as - the new style of Cygwin shortcut supporting targets > MAX_PATH. - -2008-03-12 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc (do_sysfolders): Use cygwin_conv_path. - (do_pathconv): Use cygwin_conv_path and cygwin_conv_path_list. - * dumper.cc (main): Use cygwin_conv_path. Allocate target path - dynamically. - * mkpasswd.c (current_user): Use cygwin_conv_path. - (enum_users): Ditto. - * ps.cc (NT_MAX_PATH): Define. - (main): Use cygwin_conv_path. - * regtool.cc (find_key): Ditto. Allocate target path dynamically. - (cmd_save): Ditto. - -2008-03-11 Brian Dessent <brian@dessent.net> - - * cygcheck.cc (find_app_on_path): Make buffer SYMLINK_MAX + 1 - chars. - -2008-03-11 Brian Dessent <brian@dessent.net> - - * cygcheck.cc (dirname): New static function. - (find_app_on_path): Use SYMLINK_MAX. Resolve symlink relative - to link's location. Adjust to the fact that cygpath already - normalizes its return value. - * path.cc (rel_vconcat): Add cwd parameter, and use it instead - of calling GetCurrentDirectory() if possible. Rename throughout. - (vcygpath): Rename from cygpath and accept cwd and va_list. Pass - cwd on to rel_vconcat(). - (cygpath_rel): New front end for vcygpath. - (cygpath): Ditto. - * path.h (cygpath_rel): Declare. - (SYMLINK_MAX): Define to 4095. - -2008-03-09 Brian Dessent <brian@dessent.net> - - * Makefile.in (install): Don't install the testsuite. - -2008-03-08 Brian Dessent <brian@dessent.net> - - * Makefile.in: Add a 'check' target that builds and runs - testsuite.exe from path-testsuite.o and testsuite.o. - * path.cc: Include testsuite.h. - (struct mnt): Change to a mnt_t typedef and don't define - mount_table when TESTSUITE is defined. - (find2): Don't include when TESTSUITE is defined to avoid warning. - (get_cygdrive0): Ditto. - (get_cygdrive): Ditto. - (read_mounts): Provide empty implementation when TESTSUITE is - defined. - (vconcat): Use the isslash macro. - (unconvert_slashes): New helper to convert to backslashses. - (rel_vconcat): Handle relative paths more gracefully. - (cygpath): Skip a leading "./" sequence. Avoid double-slashes. - Normalize final output to backslashes and remove redundant path - sequences. - * testsuite.cc: New file implementing testsuite driver. - * testsuite.h: New header implementing harness mount table and - series of tests. - -2008-03-08 Brian Dessent <brian@dessent.net> - - * Makefile.in: Reorganize considerably, using GNU make's - static pattern rules and target-specific variables. - -2008-02-28 Corinna Vinschen <corinna@vinschen.de> - - * mkpasswd.c (main): Simplify generating SYSTEM entry. Add entries - for LocalService and NetworkService accounts. Change comments. - -2008-01-13 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Always try to get a OSVERSIONINFOEX - first. Load kernel32.dll earlier. Make osname a buffer. Simplify - Non-NT code. Use GetProductInfo in Vista/2008 case. Clean up - non-Vista version info. Exit early if not on NT. - -2007-12-29 Dave Korn <dave.korn@artimi.com> - - * bloda.cc (enum bad_app): Add BYTEMOBILE. - (dodgy_app_detects[]): Add FILENAME entry to detect bmnet.dll. - (big_list_of_dodgy_apps[]): Add description for BYTEMOBILE. - -2007-12-20 Brian Dessent <brian@dessent.net> - - * Makefile.in (cygcheck.exe): Don't link to ntdll. - * bloda.cc (pNtQuerySystemInformation): Add. - (pRtlAnsiStringToUnicodeString): Add. - (get_process_list): Use function pointers for NT functions. - (dump_dodgy_apps): Skip dodgy app check on non-NT platforms. - Use GetProcAddress for NT-specific functions. - -2007-12-07 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (opts): Add missing 'W'. - -2007-12-06 Corinna Vinschen <corinna@vinschen.de> - - * ps.cc: Include limits.h. - (main): Set file name buffer size to PATH_MAX. Use progname or - progname_long member of struct external_pinfo dependent of the value of - the struct's version member. - -2007-08-31 Dave Korn <dave.korn@artimi.com> - - * mkgroup.c (enum_groups): Use MAX_PREFERRED_LENGTH in netgroupenum - call so that it will automatically size returned buffer sufficiently. - -2007-08-03 Dave Korn <dave.korn@artimi.com> - - * Makefile.in (cygcheck.exe): Add bloda.o as prerequisite, adjusting - dependency-filtering $(wordlist ...) call appropriately. Link ntdll. - (bloda.o): New rule to build bloda.o - * cygcheck.cc (dump_sysinfo): Call bloda function dump_dodgy_apps(). - * bloda.cc: New file implements detection of applications from the - Big List Of Dodgy Apps. - -2007-07-24 Corinna Vinschen <corinna@vinschen.de> - - * COPYING.dumper: New file. - * dumper.cc: Change license to plain GPLv2 + later. - * dumper.h: Ditto. - * parse_pe.cc: Ditto. - -2007-07-23 Christopher Faylor <me+cygwin@cgf.cx> - - * strace.cc (create_child): Don't convert a path from cygwin format - unless it has a slash. - -2007-07-09 Christopher Faylor <me+cygwin@cgf.cx> - - * strace.cc (usage): Add missing description for -q. - -2007-07-09 Christopher Faylor <me+cygwin@cgf.cx> - - * Makefile.in (kill.exe): Remove reliance on libiberty. - * kill.cc (strsigno): New function patterned after libiberty but using - newly exported cygwin array. - -2007-06-03 Christopher Faylor <me+cygwin@cgf.cx> - - * cygcheck.cc (pathlike): New class. - (paths): Redefine as type pathlike. - (display_error): Declare a few different ways to allow more flexible - usage throughout. - (display_error_fmt): New function for those cases where C++ just isn't - enough. - (add_path): Rewrite to allocate pathlike paths. Always tack on a - trailing slash since that's what everyone who uses it wants. NULL - terminate the path list. Register "it's a system path" field. - (init_path): Call add_path with info regarding whether path is a system - path or not. - (pathlike::check_existence): Move into pathlike class. Accept file and - extension arguments to build up path on the fly. Modify other - arguments. - (find_on_path): Constify return value and appropriate arguments. - Eliminate short-circuit for fully-qualified paths. Simplify loop which - iterates over path. - (already_did): Constify argument. - (track_down): Ditto. Regularize some error messages. - (find_app_on_path): Ditto. - (cygcheck): Constify argument. Use 20th century string handling - functions. - (dump_sysinfo): Remove odd inclusion of '\\bin' "Just in case". - Accommodate change of paths to pathlike. - * path.cc (isslash): Rename from SLASH_P and use throughout. - (rel_vconcat): Front-end to vconcat which prepends cwd to path before - passing along for conversion to native windows. - (cygpath): Remove "./" test. Call rel_vconcat if filename appears to - be relative. - -2007-05-29 Pedro Alves <pedro_alves@portugalmail.pt> - - * dumper.cc (dumper::prepare_core_dump): Record a phdr for each section. - -2007-05-29 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc (do_options): Allow outputflag combined with other - basic flags. Only check options_from_file_flag if reading options - from command line. - (main): Check for NULL argz vector. Don't free argz vector prematurely. - Don't force flag combination in !options_from_file_flag case. - -2007-05-23 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc: Include argz.h. - (options_from_file_flag): Move from main to global static variable. - (mode_flag): Ditto. - (do_sysfolders): Rename from dowin and accommodate throughout. - Don't exit from here. - (do_pathconv): Rename from doit and accommodate throughout. - (print_version): Change copyright. - (do_options): New function, centralizing option processing. - Rework checking options for correctness. - (action): New function, centralizing calling worker functions. - (main): Simplify. Move option processing to do_options. Move calling - worker functions to action. Rework getting arguments from files. - -2007-03-30 Mark Mitchell <mark@codesourcery.com> - - * utils/cygpath.cc (get_long_path_name_w32impl): Close handles returned - by FindFirstFile. - -2007-03-30 Christopher Faylor <me@cgf.cx> - - * mount.cc (main): Turn dos file warnings off since we know what we're - doing. - -2007-02-22 Corinna Vinschen <corinna@vinschen.de> - - * ipcs.c (_POSIX2_LINE_MAX): Drop definition. - -2007-02-20 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Add "not supported" to osname on 9x - machines. Drop "not supported" for Vista. Drop "Longhorn" text - for now. - -2007-01-09 Christian Franke <franke@computer.org> - - * cygpath.cc (usage): Add -O and -F, remove tabs. - (get_special_folder): New function. - (get_user_folder): New function. - (dowin): Add -O and -F, better -D, -P error handling. - (main): Add -O and -F. - * utils.sgml (cygpath): Document -O and -F. - -2006-12-21 Corinna Vinschen <corinna@vinschen.de> - - * dumper.cc: Include ansidecl.h before including bfd.h to woraround - a problem with the order in which system include files are included. - -2006-12-11 Christopher Faylor <me@cgf.cx> - - * dumper.cc: Add an include to accommodate new include/elf usage. - -2006-12-10 Christopher Faylor <me+cygwin@cgf.cx> - - * mount.cc (do_mount): Avoid unnecessary cygwin_conv_to_win32_path and - pass POSIX path directly - this avoids a cygwin DLL warning. - -2006-10-21 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (key_type): Drop. - (REG_AUTO): Define. - (value_type): Replace key_type. Use REG_xxx values directly. - Accomodate change throughout. - (longopts): Add --dword, --dword-le, --none, --qword and --hex options. - (opts): Add -d, -D, -n, -Q and -x options. - (types): Array to convert REG_xxx into strings. - (hex): New variable to keep value of --hex option. - (usage): Accomodate new options. Print only the necessary by default. - Only be verbose in case of -h/--help option. - (cmd_list): Use key separator from -K option when printing. - Print value type when verbose option is given. Handle so far not - handled REG_xxx types. - (cmd_set): Avoid SEGV due to missing argument. Handle so far not - handled REG_xxx types. - (cmd_get): Handle --binary option type agnostic. Handle so far not - handled REG_xxx types. - (main): Handle new options. - -2006-10-19 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (longopts): Add --wow32 option. - (opts): Add -W option. - (usage): Add text for --wow32/-W option. - (main): Handle --wow32/-W option. - * utils.sgml: Document the new -W option. - -2006-10-16 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (KEY_WOW64_64KEY): Drop definition. Instead define - WINVER to 0x0502 before including windows.h. - -2006-10-16 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (KEY_WOW64_64KEY): Define. - (longopts): Add --wow64 option. - (opts): Add -w option. - (wow64): New variable to control usage of KEY_WOW64_64KEY access flag. - (usage): Add text for --wow64/-w option. - (print_version): Fix copyright. - (find_key): Use wow64 value in calls to RegOpenKeyEx and RegCreateKeyEx. - (cmd_add): Use wow64 value in call to RegCreateKeyEx. - (regDeleteKeyEx): New function pointer to load RegDeleteKeyEx function - dynamically. - (cmd_remove): Load and use regDeleteKeyEx when wow64 is set. - (main): Handle --wow64/-w option. - * utils.sgml: Document the new -w option. - -2006-10-05 Igor Peshansky <pechtcha@cs.nyu.edu> - - * cygcheck.cc (get_word, get_dword): Move to path.cc. - (LINK_EXTENSION): New macro. - (check_existence): New static function. - (find_on_path): Check for symbolic links if asked. - (dll_info): New error handling. - (track_down): Only call dll_info() for executables, display - an error for symlinks, and print magic number for others. - (find_app_on_path): New static function. - (cygcheck, dump_sysinfo): Call find_app_on_path() instead of - find_on_path(). - * path.cc (cmp_shortcut_header): New static function. - (get_word, get_dword): Moved from cygcheck.cc. - (EXE_MAGIC, SHORTCUT_MAGIC, SYMLINK_COOKIE, SYMLINK_MAGIC): New - macros. - (is_exe, is_symlink, readlink): New functions. - * path.h (is_exe, is_symlink, readlink): Declare. - (get_word, get_dword): Ditto. - -2006-09-12 Christopher Faylor <cgf@timesys.com> - - * Makefile.in: Fix -ntdll typo. - -2006-09-11 Eric Blake <ebb9@byu.net> - - * cygcheck.cc (main): Restore POSIXLY_CORRECT before displaying user's - environment. - -2006-08-03 Corinna Vinschen <corinna@vinschen.de> - - * path.cc (vconcat): Don't convert backslahes to slashes. - (cygpath): Return native path with all backslashes. - -2006-08-02 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (cygpath.exe): Add rule to link cygpath against ntdll.dll. - * cygpath.cc: Include DDK headers. - (RtlAllocateUnicodeString): New static inline function. - (get_device_name): New static function to evaluate DOS path from - native NT path. - (get_device_paths): New function to do the same for path lists. - (doit): Call get_device_paths/get_device_name where appropriate. - -2006-07-30 Ilya Bobir <ilya@po4ta.com> - - * cygpath.cc (get_long_name): Fallback to get_long_path_name_w32impl. - -2006-07-27 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.c (get_long_name): Cover the case that GetLongPathName - doesn't return valid information for non-existant files. Just return - incoming filename in that case. - -2006-07-03 Kazuhiro Fujieda <fujieda@jaist.ac.jp> - - * Makefile.in: Build setmetamode.exe. - * setmetamode.c: New file. - -2006-05-24 Christopher Faylor <cgf@timesys.com> - - * configure.in: Update to newer autoconf. - (thanks to Steve Ellcey) - * configure: Regenerate. - * aclocal.m4: New file. - -2006-05-24 Christopher Faylor <cgf@timesys.com> - - * strace.cc (proc_child): Propagate return code from child process. - (dostrace): Ditto. - (main): Ditto. - -2006-03-03 Christian Franke <franke@computer.org> - - * regtool.cc (options): Add 'binary'. - (usage): Document 'load|unload|save' and '-b'. - (find_key): Add 'options' parameter, add load/unload. - (cmd_set): Add KT_BINARY case. - (cmd_get): Add hex output in KT_BINARY case. - (cmd_load): New function. - (cmd_unload): New function. - (set_privilege): New function. - (cmd_save): New function. - (commands): Add load, unload and save. - (main): Add '-b' - * utils.sgml (regtool): Document it. - -2006-02-17 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc (get_long_name): Load GetLongPathNameA instead of incorrect - GetLongPathName. - (doit): Create mixed filename after converting to short or long pathname - respectively. - -2006-02-17 Jerry D. Hedden <jerry@hedden.us> - - * ps.cc (main): Set aflag if -p option is given. - -2006-02-16 Jerry D. Hedden <jerry@hedden.us> - - * ps.cc (longopts): Add --process option. - (opts): Add -p option. - (usage): Mention -p/--process option. - (main): Handle -p option. - * utils.sgml: Describe -p/--process option. - -2006-02-15 Igor Peshansky <pechtcha@cs.nyu.edu> - - * regtool.cc (usage): Clarify help for "-K". - -2006-02-08 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (find_on_path): Update copyright text. - -2006-02-08 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (find_on_path): Create copy of rv on successful access - check, since rv can be reused in subsequent calls. - -2006-01-19 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (common_paths): Add "patch". - -2006-01-19 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (init_paths): Record first_nonsys_path. - (find_on_path): Start on first nonsys path when !search_sysdirs. - -2006-01-18 Christopher Faylor <cgf@timesys.com> - - * Makefile.in (sysconfdir): Remove unneeded variable. - - * mkgroup.c: Replace ` with ' throughout. - * mkpasswd.c: Ditto. - * setfacl.c: Ditto. - * ssp.c: Ditto. - -2006-01-18 Dave Korn <dave.korn@artimi.com> - - * cygpath.cc (dowin): Remove stray debugging printf statement. - -2006-01-17 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in: Replace etcdir with sysconfdir. - -2006-01-13 Brian Dessent <brian@dessent.net> - - * Makefile.in (cygcheck.exe): Do not link against libwininet.a. - * cygcheck.cc (pInternetCloseHandle): Define global function pointer. - (display_internet_error): Use it. - (package_grep): Attempt to load wininet.dll at runtime. Call WinInet - API through function pointers throughout. - -2006-01-13 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Convert k32 to HMODULE. - -2006-01-13 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Convert osname to const and remove casts - in subsequent assignments. Recognize Longhorn/Vista and report as not - yet supported. Recognize when running under WOW64 and report native - CPU type. Slightly rearrange \n printing. - -2006-01-12 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc: Replace ` with ' throughout. - -2006-01-05 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (dump_sysinfo): Report the failing drive to prevent - having to guess. - -2005-12-29 Christopher Faylor <cgf@timesys.com> - - * strace.cc (nprocesses): Make static global. - (quiet): New variable. - (strace_active): Ditto. - (add_child): Increment nprocesses here. Don't add a child if it is - already added (windows bug?). Report on child if not quiet. - (get_child): Just return NULL if child not found. - (remove_child): Report on child if not quiet. - (attach_process): Don't complain if given a windows process. Use - windows pid in error. - (handle_output_debug_string): Issue error if trying to manipulate a process that we don't know about. - Handle _STRACE_CHILD_PID - attach to reported child when we get this. - (proc_child): Move nprocesses to file scope. - Report on exceptions. - (longopts): Implement "--quiet". - (opts): Implement "-q". - (main): Manipulate quiet flag. - * utils.sgml (strace): Add words describing '-q'. - -2005-12-29 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (common_apps): Add crontab, vi, vim. - -2005-12-19 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * dump_setup.cc (package_find): Fix is_alias computation for "/usr/lib". - -2005-12-14 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (common_apps): Add a few more binaries to look for. - -2005-12-05 Christopher Faylor <cgf@timesys.com> - - * strace.cc (show_usecs): Renamed from 'usecs'. - (main): Use show_usecs rather than usecs. Toggle delta if '-u' is - specified. - (handle_output_debug_string): Avoid printing microsecond timestamp if - show_usecs == 0. - * utils.sgml (strace): Add words to describe '-u'. - -2005-11-22 Brian Dessent <brian@dessent.net> - - * Makefile.in: Link cygcheck with libwininet.a. - * cygcheck.cc: Add includes. - (grep_packages): New global variable. - (display_internet_error): New function. - (safe_chars): New global variable. - (base_url): Ditto. - (package_grep): New function. - (usage): Reword --help output for clarity. Document new argument. - (longopts): Add 'package-query' option. - (opts): Add 'p' option, reorder to be consistent with 'longopts'. - (main): Accommodate new option. - * utils.sgml (cygcheck): Update --help output. Document new -p option. - -2005-09-22 Corinna Vinschen <corinna@vinschen.de> - - Align error message handling to mkpasswd's error messages throughout. - * mkgroup.c (print_win_error): Create macro calling ... - (_print_win_error): ... this function created from former - print_win_error. Move up in source. - (PDOMAIN_CONTROLLER_INFOW): Define return type of DsGetDcNameW. - (dsgetdcname): New function pointer for DsGetDcNameW. - (load_netapi): Get DsGetDcNameW address. - (main): If DsGetDcNameW is available, use it. - * mkpasswd.c (PDOMAIN_CONTROLLER_INFOW): Define return type of - DsGetDcNameW. - (dsgetdcname): New function pointer for DsGetDcNameW. - (load_netapi): Get DsGetDcNameW address. - (main): If DsGetDcNameW is available, use it. Rename local variable - domain_name_specified to domain_specified as in mkgroup.c. - -2005-09-08 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * regtool.cc: Extend copyright-years. - (print_version): Ditto. - (cmd_list): Don't depend on terminating '\0' being present on - string-values. - (cmd_get): Don't attempt to read more than present, but keep - extra space for terminating '\0'. Really output REG_BINARY. - Don't leak memory. - (cmd_set): Include trailing '\0' in string's length. - -2005-08-18 Corinna Vinschen <corinna@vinschen.de> - - * passwd.c (longopts): Add --logonserver option. - (opts): Add -d option. - (GetPW): Add server parameter which is given to Net functions. - (ChangePW): Ditto. - (PrintPW): Ditto. - (SetModals): Ditto. - (usage): Add description for -d/--logonserver option. - (main): Add option handling for -d/--logonserver. Use LOGONSERVER - environment variable content for server to contact, unless - -d/--logonserver option is given. If both is missing, use NULL. - -2005-08-16 Brian Dessent <brian@dessent.net> - - * cygcheck.cc (dump_sysinfo_services): Properly null-terminate 'buf'. - Avoid extraneous cygrunsrv invocation if 'verbose' is true. - -2005-08-03 Corinna Vinschen <corinna@vinschen.de> - - * mount.cc (longopts): Fix typo which disallows --options option. - -2005-07-19 Christopher Faylor <cgf@timesys.com> - Eric Blake <ebb9@byu.net> - - * cygcheck.cc (find_on_path): Perform .exe magic on non-PATH search. - -2005-07-05 Eric Blake <ebb9@byu.net> - - * cygcheck.cc (track_down, cygcheck): Return true on success. - (main): Reflect cygcheck failures in exit status. - -2005-06-14 Corinna Vinschen <corinna@vinschen.de> - - * parse_pe.c (exclusion::sort_and_check): Remove crude cast. - -2005-05-30 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Recognize XP Media Center and Tablet PC - Editions. Change .NET to 2003 throughout. Recognize 2003 Web Server - and Datacenter Server. Report when running in terminal server session. - -2005-05-27 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (load_cygwin): Make half-hearted attempt to work with - older DLLs. - * strace.cc (load_cygwin): Ditto. - -2005-05-22 Brian Dessent <brian@dessent.net> - - * cygcheck.cc (dump_sysinfo_services): Add new function that uses - new cygrunsrv options to dump service info. - (dump_sysinfo): Call dump_sysinfo_services if running under NT. - Change 'Cygnus' to 'Cygwin' in output. - -2005-05-20 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (load_cygwin): Remove debugging statement. - -2005-05-20 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (dump_sysinfo): Don't attempt to use path if it is not - set. - (nuke): Fix off by one error in allocation of environment variable. - (load_cygwin): Always set PATH even if cygwin environment is empty. - -2005-05-16 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (cygwin_internal): Define as a "C" function. - * strace.cc (cygwin_internal): Ditto. - - * cygpath.cc (print_version): Update copyright. - -2005-05-15 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (load_cygwin): Avoid calling putenv with a NULL path. - -2005-05-15 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (load_cygwin): Don't touch $PATH for now. - (print_version): Fix copyright. - * strace.cc (print_version): Ditto. - -2005-05-13 Christopher Faylor <cgf@timesys.com> - - * mount.cc (mount_commands): Display "-X" option when appropriate. - -2005-05-08 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (nuke): New function. - (load_cygwin): New function. - (main): Use load_cygwin to load argv/envp from cygwin environment, if - appropriate. - -2005-05-08 Christopher Faylor <cgf@timesys.com> - - * strace.cc (attach_process): Don't call load_cygwin(). Assume that - it's already happened. - (dotoggle): Ditto. - (main): Set argv from cygwin environment, if it exists. - -2005-05-01 Christopher Faylor <cgf@timesys.com> - - * mount.cc (usage): Clarify action of -m option. - -2005-04-29 Dave Korn <dave.korn@artimi.com> - - * path.cc (getmntent): Add previously-omitted 'noexec' and 'managed' - flags to mnt_opts string if present in mount flags. - -2005-04-20 Brian Dessent <brian@dessent.net> - - * utils.sgml (mount): Clarify setting cygdrive prefix for user - and system-wide. - -2005-03-24 Brian Dessent <brian@dessent.net> - - * cygcheck.cc (init_paths): Use full path instead of "." for the - current directory. Do not add "." if present in $PATH. - (dump_sysinfo): Skip placeholder first value of paths[]. - -2005-03-07 Christopher Faylor <cgf@timesys.com> - - * kill.cc (getsig): Rectify bug introduced by 2005-02-26 change. Don't - pad signal name with spaces. - -2005-03-07 Corinna Vinschen <corinna@vinschen.de> - - * strace.cc (handle_output_debug_string): Fix compiler warning. - -2005-03-06 Christopher Faylor <cgf@timesys.com> - - * cygpath.cc (usage): Pass in one more copy of program_name to printf - to avoid a SEGV. - -2005-02-27 Christopher Faylor <cgf@timesys.com> - - * regtool.cc (opts): The argument to 'K' is not optional. - (main): Revert previous change. Just let getopt deal with missing - argument. - -2005-02-27 Christopher Faylor <cgf@timesys.com> - - * regtool.cc (main): Avoid a SEGV when nothing follows -K. - -2005-02-26 Christopher Faylor <cgf@timesys.com> - - * kill.cc (getsig): Avoid buffer overflow when generating a signal name. - - * strace.cc (handle_output_debug_string): Make error a little more specific. - -2005-02-23 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygpath.cc (usage): Clarify help output to indicate acceptance - of multiple file names as arguments. - -2005-01-16 Christopher Faylor <cgf@timesys.com> - - * ps.cc (main): Eliminate use of PID_ZOMBIE. - * strace.cc (main): Recognize new option for displaying hex value of - strace type. - (handle_output_debug_string): Prepend output with hex value of strace - message if -H is specified. - -2005-01-11 Pierre Humblet <pierre.humblet@ieee.org> - - * mkpasswd.c (print_win_error): Transform into macro. - (_print_win_error): Upgrade former print_win_error by - printing the line. - (current_user): Call _print_win_error. - (enum_users): Print name in case of lookup failure. - (enum_local_groups): Ditto. - -2004-11-18 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (eprintf): New function. - -2004-11-16 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (find_on_path): Clear show_error and/or print_failed - parameters to display_error. - (rva_to_offset): Ditto. - (dll_info): Ditto. - (track_down): Ditto. - -2004-11-13 Pierre Humblet <pierre.humblet@ieee.org> - - * kill.cc (forcekill): Do not pass negative pids to - cygwin_internal. Check if sig == 0. Improve error messages. - (main): Make pid a long long and distinguish between pids, gpids - (i.e. negative pids) and Win9x pids. - -2004-11-11 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc: Change "keyeprint" to "display_error" throughout. - -2004-11-11 Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (main): Allow a '-l' without an additional argument. - -2004-11-11 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (keyeprint): New optional parameters: show_error and - print_failed. - -2004-10-31 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (get_dword): Fix errormessage. - (cygwin_info): Ditto. - (track_down): Ditto. - (check_keys): Ditto. - -2004-10-27 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Warn about missing or multiple cygwin1 - dlls. - -2004-10-25 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Add leading newline before legend for - drive-list. - -2004-10-22 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): In legend for drive-list: Add ``ram'' and - ``unk''. Use single puts. Add leading newline. Line up equal-signs. - -2004-10-20 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Allow for larger drives in drive-list. - Change ``Used'' to ``Free'' in helptext-title for drive-list. - -2004-10-18 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (pretty_id): Don't let i become negative. Fix - printf-format. - -2004-10-17 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (pretty_id): Allocate space for ')' in uid and guid. - -2004-10-17 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (pretty_id): Allocate space for trailing '\0' in uid and - guid. - -2004-10-15 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - Christopher Faylor <cgf@timesys.com> - - * cygcheck.cc (pretty_id): Don't exit on id error. Fix size - calculations. - -2004-10-14 Christopher Faylor <cgf@timesys.com> - Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (pretty_id): Correct column calculations. Abort if id is - acting funny. - -2004-10-10 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (add_path): Don't leak memory when path is already in - ``paths''. - -2004-10-10 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Warn about trailing (back)slash on mount - entries. - -2004-10-10 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Don't warn about empty path components, - just display ``.''. - -2004-10-06 Corinna Vinschen <corinna@vinschen.de> - - * strace.cc (_impure_ptr): Remove. - -2004-10-06 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (dump_sysinfo): Warn about empty path components. - -2004-10-04 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * cygcheck.cc (pretty_id): Close pipe. - -2004-09-23 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * dump_setup.cc (dump_setup): Remove unneeded strlen when check_files - is not set. - -2004-09-22 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - Corinna Vinschen <corinna@vinschen.de> - - * dump_setup.cc (dump_setup): Avoid trailing spaces on package-list. - -2004-09-15 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl> - - * getfacl.c (main): Correct layout when nopt is set. - -2004-07-12 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * mkgroup.cc (netapibufferallocate,netgroupgetinfo): New function - pointers. - (load_netapi): Load NetApiBufferAllocate and NetGroupGetInfo. - (enum_local_groups,enum_groups): Add disp_groupname parameter. - Load info for disp_groupname if specified. - (usage): Add description of "-g/--group" option. - (longopts,opts): Add "-g/--group" option. - (main): Process "-g/--group" option. - * utils.sgml (mkgroup): Add description of "-g/--group" option - -2004-06-15 Alan Modra <amodra@bigpond.net.au> - - * dumper.cc (dumper::prepare_core_dump): Use bfd_get_section_size - instead of _raw_size. - (dumper::write_core_dump): Likewise. - * parse_pe.cc (select_data_section): Likewise. - -2004-05-29 John Paul Wallington <jpw@gnu.org> - - * ssp.c (usage): Add missing linefeed. - -2004-05-27 Christopher Faylor <cgf@alum.bu.edu> - - * kill.cc (listsig): Fix "kill -l" segv. NSIG includes Signal 0, so we - need to avoid calling strtosigno with NSIG - 1. - -2004-03-21 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (dump_sysinfo): Remove "Win95/NT" from output. - -2004-03-15 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc (usage): Don't issue helpful message if -i is used. - (from Igor Pechtchanski) - -2004-03-13 Rob Siklos <rob2@siklos.ca> - - * kill.cc (get_debug_priv): New function. - (forcekill): Call get_debug_priv before trying to kill process. - -2004-02-24 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc (long_options): Add "mode" option. - (options): Ditto. - (usage): Report on new option. - (report_mode): New function. - (main): Implement -M option. - -2004-02-20 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (build_dumper): Detect missing iconv library. - - * cygpath.cc (dowin): Report on filename conversion errors. - (doit): Ditto. - - * strace.cc (main): Use symbolic constant for _STRACE_ALL when setting - mask. - -2004-02-14 Corinna Vinschen <corinna@vinschen.de> - - * ssp.c (opts): Add leading '+' to force posixly correct behaviour. - -2004-02-11 Corinna Vinschen <corinna@vinschen.de> - - * strace.cc (opts): Add leading '+' to force posixly correct - behaviour. - (main): Revert POSIXLY_CORRECT manipulations. - -2004-02-10 Christopher Faylor <cgf@redhat.com> - - * strace.cc (main): Guard against previous setting of POSIXLY_CORRECT. - -2004-02-10 Christopher Faylor <cgf@redhat.com> - - * strace.cc: Update copyrights. - * cygcheck.cc: Update copyrights. - -2004-02-10 Christopher Faylor <cgf@redhat.com> - - * strace.cc (main): Ensure POSIXLY_CORRECT argument ordering. - * cygcheck.cc (main): Ditto. - -2004-01-23 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (pretty_id): Make more robust in absence of id.exe. - -2004-01-22 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc (dowin): Revert accidental checkin from November. - -2003-11-26 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): Print "root" group with local admins group sid - and gid 0. - -2003-11-19 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in: Add rules to build ipcrm and ipcs. - * ipcrm.c: New file. - * ipcs.c: New file. - -2003-11-14 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Avoid compiler warnings throughout. - * mkpasswd.c: Ditto. - * passwd.c: Ditto. - -2003-11-07 Mark Blackburn <marklist@fangorn.ca> - - * cygpath.cc (main): Allow multiple pathnames on command line. - -2003-11-04 Corinna Vinschen <corinna@vinschen.de> - - * passwd.c (PrintPW): Turn around meaning printed for "Password not - required" option to be in line with Windows meaning. - (main): Use more appropriate 1008 option when calling - NetUserSetInfo to change flag values. - -2003-11-04 Corinna Vinschen <corinna@vinschen.de> - - * passwd.c (UF_LOCKOUT): Remove (defined in lmaccess.h). - (version): Bump version number to 1.5. - (longopts): Add -c, -C, -e, -E, -p, -P options. - (opts): Ditto. - (PrintPW): Print values of UF_PASSWD_CANT_CHANGE and - UF_DONT_EXPIRE_PASSWD flags. Slightly reformat output. Don't suppress - correct system password settings just because the account has admin - privileges. - (usage): Define as "noreturn" function. Restructure and rephrase - output. Accommodate new options. - (print_version): Fix copyright dates. - (main): Accommodate new options for setting UF_PASSWD_CANT_CHANGE, - UF_DONT_EXPIRE_PASSWD and UF_PASSWD_NOTREQD settings. - -2003-10-17 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (pretty_id): Don't exec if `id' program is not found. - -2003-09-20 Christopher Faylor <cgf@redhat.com> - - * kill.cc (main): Allow negative pids (indicates process groups). - -2003-09-17 Christopher Faylor <cgf@redhat.com> - - * parse_pe.cc (exclusion::sort_and_check): Make error message a little - more explicit and ignore (hopefully) harmless region overlap. - -2003-09-13 Christopher Faylor <cgf@redhat.com> - - * kill.c (forcekill): Wait for process to terminate even if - TerminateProcess says it failed. - -2003-09-11 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Tweak mingw libz.a detection to make it more reliably - detect when libz.a is not available. - -2003-09-11 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * cygcheck.cc (dump_only): New global variable. - (usage): Add "--dump-only" option, fix "--verbose" line. - (longopts, opts): Add "--dump-only" option. - (main): Process the "--dump-only" flag. Add new semantic check. - Pass dump_only information to dump_setup(). - -2003-09-11 Corinna Vinschen <corinna@vinschen.de> - - * getfacl (main): Remove extern declaration of optind. - * setfacl (main): Remove extern declaration of optarg and optind. - -2003-09-10 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (cygcheck.o): Use MINGW_CXX for compilation. - * cygcheck.cc: Just include <getopt.h> rather than cygwin version. - (pretty_id): Avoid compiler warnings. - * cygpath.cc (usage): Ditto. - -2003-09-10 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (MINGW_CXX): Define and use for mingw-compiled files. - * path.cc: Include more path info in cygwin-specific includes since the - cygwin directory is no longer included by default. - -2003-09-10 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: More fixups to adjust for the fact that mingw_getopt.o - is no longer built. - -2003-09-10 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Remove references to getopt since it is now part of - mingwex. - -2003-09-08 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Rename libz.h -> zlib.h. - -2003-09-07 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Detect existence of mingw zlib headers and libraries. - Build cygcheck without package checking if they are unavailable. - * dump_setup.cc: Generate dummy zlib macros when zlib is not available. - (open_package_list): Use zlib functions to uncompress package lists. - Return gzFile rather than FILE *. - (check_package_files): Change fp to gzFile to accommodate zlib - functions. Use gzgets to read from package file. Use gzclose to close - the handle. - (package_list): Ditto. - (package_find): Ditto. - -2003-09-05 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * dump_setup.cc (check_package_files): Don't fail on empty package. - -2003-09-01 AJ Reins <reinsaj@yahoo.com> - - * mount.cc (mount_commands): Ensure user mode is actually user mode and - not the default system mode. - -2003-08-31 Christopher Faylor <cgf@redhat.com> - - * kill.cc (forcekill): Silence some compiler warnings. - -2003-08-31 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Oops. Put the '...' in the right place. - -2003-08-31 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Display "..." when not-verbose. - - * kill.cc (forcekill): Default to entered pid when pinfo fails. Issue - some warnings when things don't work. - -2003-08-17 David Rothenberger <daveroth@acm.org> - - * dump_setup.cc (check_package_files): Strip leading / and ./ from - package file names. - -2003-08-16 David Rothenberger <daveroth@acm.org> - - * dump_setup.cc (package_find): Don't stop searching on missing - file list. - (package_list): Ditto. - -2003-08-16 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * dump_setup.cc: (package_list): Make output terse unless - verbose requested. Fix formatting. - (package_find): Ditto. - -2003-08-15 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (main): Fix some formatting and help text printing. - -2003-08-15 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * cygcheck.cc (find_package,list_package): New global - variables. - (usage): Add "--find-package" and "--list-package" options, - reformat output. - (longopts, opts): Add "--find-package" and "--list-package" - options. - (main): Process the "--find-package" and "--list-package" - flags. Add new semantic checks. Add calls to find_package() - and list_package(). - * dump_setup.cc: Fix header comment. - (match_argv): Change return type to int to distinguish - between real matches and default ones. - (open_package_list): New static function. - (check_package_files): Factor out opening the package list - file into open_package_list(). - (get_packages): New static function. - (dump_setup): Factor out getting a list of packages into - get_packages(). - (package_list, package_find): New global functions. - -2003-08-15 Corinna Vinschen <corinna@vinschen.de> - - * regtool.cc (usage): Add missing linefeed. Move example to --help - text. Fix forward slash description. - -2003-08-13 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * dump_setup.cc (check_package_files): Fix extra '/' in filename. - Resize command buffer. Fix buffer overflow bug. - -2003-08-09 Igor Pechtchanski <pechtcha@cs.nyu.edu> - Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc (dump_setup): Check for the existence of the package - list file. Rework slightly to use static buffer for popen commands. - -2003-08-07 Igor Pechtchanski <pechtcha@cs.nyu.edu> - Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc (version_len): New static variable. - (could_not_access,directory_exists): New static function. - (file_exists): Ditto. - (check_package_files): Ditto. - (dump_setup): Check the contents of each package if check_files is true - and output the result in the "Status" column. Flush output after each - package. - -2003-08-07 Igor Pechtchanski <pechtcha@cs.nyu.edu> - Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc (dump_setup): Remove redundant null check. Add - informative message if package info not found. - -2003-07-26 Christopher Faylor <cgf@redhat.com> - - * mount.cc (do_mount): Issue warning when using managed mount option on - non-empty directory. - -2003-07-25 Christopher Faylor <cgf@redhat.com> - - * configure.in: Use 'install-sh -c'. - * configure: Regenerate. - -2003-07-25 Christopher Faylor <cgf@redhat.com> - - * configure.in: Always use install-sh. - * configure: Regenerate. - -2003-07-03 Christopher Faylor <cgf@redhat.com> - - * mount.cc (struct opt): Remove posix option. - -2003-07-03 Christopher Faylor <cgf@redhat.com> - - * mount.cc (longopts): Add long "options" keyword. - (opts): Add -o option. - (usage): Display -o option. - (struct opt): New. - (concat3): New function. - (main): Handle -o flag. - -2003-06-12 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (pretty_id): Rework slightly to not rely on spaces. - -2003-06-12 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc: Throughout, always return error when GetShortPathName - returns 0. - -2003-04-26 Joshua Daniel Franklin <joshuadfranklin at yahoo dot com> - - * mkpasswd.c (usage) Remove extra newline from description output. - -2003-04-26 Joshua Daniel Franklin <joshuadfranklin at yahoo dot com> - - * cygcheck.cc (usage) Add description output. - * cygpath.cc (usage) Add description output. - * dumper.cc (usage) Add newline to description output. - * kill.cc (usage) Add description output. - * mkgroup.c (usage) Grammatical change to description output. - * mkpasswd.c (usage) Grammatical change to description output. - * mount.cc (usage) Add description output. - * passwd.c (usage) Add description output. - * ps.cc (usage) Add description output. - * regtool.cc (usage) Add description output. - * setfacl.c (usage) Remove extra newline from description output. - * ssp.c (usage) Add description output. - * strace.cc (usage) Add description output. - * umount.cc (usage) Add description output. - -2003-04-10 Pierre Humblet <pierre.humblet@ieee.org> - - * mkpasswd.c (current_user): print uid and gid as unsigned. - (enum_users): Ditto. Do not free servername. - (usage): Update to allow several domains and improve -p. - (main): On Win9x limit uids to 1000. Only print specials - when -l is specified. Add a loop to allow several domains - and free servername in the loop. - * mkgroup.c (enum_groups): Do not free servername. - (usage): Update to allow several domains. Change uid to gid. - (main): Only print specials when -l is specified. Add a - loop to allow several domains and free servername in the loop. - -2003-03-24 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (dump_sysinfo): Ensure that CYGWIN environment variable - is correctly set. - -2003-03-09 Corinna Vinschen <corinna@vinschen.de> - - * getfacl.c (username): Fix ambiguous printf calls. - (groupname): Ditto. - (main): Ditto. - -2003-03-04 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (strace.exe): Include mingw_getopt.o in link line. - * cygcheck.cc (print_version): Update copyright. - * strace.cc (print_version): Ditto. - (main): Allow cygwin paths for -o option. - (create_child): Allow cygwin path as argv[0]. - * path.cc (path.cc): Allow UNC paths. - -2003-03-01 Pierre Humblet <pierre.humblet@ieee.org> - - * mkpasswd.cc (main): On Win95, output both a default line and a - line for the current user (if known) with a pseudorandom uid. If - the -u switch is given, produce a line for the specified user. - * mkgroup.cc (main): On Win95 change the group name from "unknown" to - "all". - -2003-02-28 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (cygcheck.o): Fix so that actual mingw include files are - used. - * cygcheck.cc (find_on_path): Translate from cygwin path when qualified - path name found. - (pretty_id): New function. Dump output of id command. - (dump_sysinfo): Call pretty_id for CYGWIN=ntsec and CYGWIN=nontsec cases. - -2003-02-12 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc (doit): Allocate more space for non-path filename. - -2003-02-07 Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc (compar): Use case insensitive comparisons. - (dump_setup): Calculate package_len based on already used "len". Don't - bother with version_len. - -2003-02-07 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * dump_setup.cc (dump_setup): Compute the longest package name - and align columns properly. - -2003-02-06 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (common_apps): Add some more apps. - * path.cc (get_cygdrive): Correctly set system flag. - -2003-01-22 Corinna Vinschen <corinna@vinschen.de> - - * Makefile.in (ALL_LDFLAGS): Remove newlib/libm from tools paths. - (MINGW_LDFLAGS): Remove in favor of definition from Makefile.common. - -2003-01-15 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Fix copyright date. - * mkpasswd.c: Ditto. - * setfacl.c: Ditto. - -2003-01-09 Pierre Humblet <pierre.humblet@ieee.org> - - * setfacl.c (usage): Remove double ":" for mask and other. - -2003-01-07 Pierre Humblet <pierre.humblet@ieee.org> - - * mkpasswd.c (current_user): Create. - (usage): Reorganize to support Win95/98/ME. - (main): Add option for -c. Reorganize to parse options for - Win95/98/ME and to call current_user. Add username in gecos field - on Win95/98/ME. - * mkgroup.c (enum_groups): Print gid with %u. - (print_win_error): Create from passwd.cc. - (current_group): Create. - (usage): Reorganize to support Win95/98/ME. - (main): Add option for -c. Reorganize to parse options for - Win95/98/ME and to call current_group. - -2002-12-14 Pierre Humblet <pierre.humblet@ieee.org> - - * setfacl.c (main): Place a single : after other and mask. - * getfacl.c (getaclentry): Allow both : and :: for other and mask. - (main): Remove extraneous break. - -2002-11-25 Corinna Vinschen <corinna@vinschen.de> - - * mkpasswd.c (main): Set pw_passwd field to '*' on 9x/Me. - -2002-11-24 Corinna Vinschen <corinna@vinschen.de> - - * setfacl.c (getperm): Set only `other' permission bits. - (getaclentry): Set a_id to -1 by default. - -2002-11-24 Corinna Vinschen <corinna@vinschen.de> - - * getfacl.c (permstr): Use `other' permission bits for requesting - ace permissions. - -2002-11-08 Corinna Vinschen <corinna@vinschen.de> - - * setfacl.c (usage): Add missing LF. - -2002-10-30 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc (get_long_path_name_w32impl): Define similarly to - GetLongPathName. - (get_long_name): Correctly prototype GetLongPathName. - (get_long_paths): Implement using get_long_name to cut down on code - duplication. - (doit): Do various things to make path output work predictably. - -2002-10-19 Christopher Faylor <cgf@redhat.com> - - * mount.cc (usage): Correctly report default mode. - * strace.cc (main): Use strtoul as appropriate. - -2002-09-29 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc (close_arg): Remove unused static. - * mkgroup.c (enum_local_users): Avoid compiler warning. - (enum_users): Ditto. - * mkpasswd.c: Ditto throughout. - * ssp.c: Ditto throughout. - -2002-09-18 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc: Include sys/time.h rather than time.h to avoid a - compiler error. - -2002-09-17 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc: Reorder includes to avoid compiler error. - -2002-09-15 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygcheck.cc (print_version) Add final newline. - * getfacl.c (print_version) Add final newline. - * kill.cc (print_version) Add final newline. - * mkgroup.c (print_version) Add final newline. - * mkpasswd.c (print_version) Add final newline. - * mount.cc (print_version) Add final newline. - * passwd.c (print_version) Add final newline. - * ps.cc (print_version) Add final newline. - * regtool.cc (print_version) Add final newline. - * setfacl.c (print_version) Add final newline. - * ssp.c (print_version) Add final newline. - * strace.cc (print_version) Add final newline. - * umount.cc (print_version) Add final newline. - -2002-09-12 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * cygpath.cc (options) New global variable. - (main) Make short options global for easier change. - (print_version) Add a missing newline. - -2002-08-07 Igor Pechtchanski <pechtcha@cs.nyu.edu> - - * regtool.cc (find_key): Add support for custom key separator. - (usage): Document it. - -2002-08-02 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): Don't print an entry for "Everyone". - * mkpasswd.c (print_special): Set pw_gid to 544 for SYSTEM user. - (main): Don't print an entry for "Everyone". - -2002-07-06 Christopher Faylor <cgf@redhat.com> - - * configure.in: Check for libiconv.a. - * configure: Regenerate. - * Makefile.in: Add libiconv.a to libraries required for dumper.exe. - -2002-07-06 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Use MINGW stuff from Makefile.common. - -2002-07-01 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Add function pointers for functions from advapi32.dll. - (load_netapi): Load used functions from advapi32.dll. - (main): Use function pointers instead of statically linked functions - from advapi32.dll. - -2002-07-01 Christopher Faylor <cgf@redhat.com> - - * mount.cc (main): Ensure that mount_already_exists() also gets default - flag that is passed to do_mount. - -2002-06-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygpath.cc (long_options): Add "dos" and "mixed", correct "close", - "file" and "type" to use NULL flag. - (usage): Clean up usage output (more), accomodate new options. - (main): Add --dos and --mixed options; accomodate all output forms in - --type. Make UNIXy output default. - -2002-06-18 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygpath.cc (usage): Clean up usage output. - (dowin): Correct output of -t mixed for -ADHPSW options. - -2002-06-14 Corinna Vinschen <corinna@vinschen.de> - - * passwd.c: Rearrange includes to avoid unnecessary warnings. - (GetPW): Add parameter to (dis)allow printing of Windows username. - Use defines instead of numerical constants where possible. - Try avoiding impersonation problem. Rearrange to print Windows - username only if it's different from Cygwin username. - (ChangePW): Use defines instead of numerical constants where possible. - (main): Call GetPW with additional parameter. Change error text. - -2002-06-14 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * passwd.c (GetPW): Handle case of user-edited /etc/passwd - with cygwin_internal (CW_EXTRACT_DOMAIN_AND_USER, ...). - -2002-06-09 Christopher Faylor <cgf@redhat.com> - - * path.cc (cygpath): Change MOUNT_AUTO to MOUNT_CYGDRIVE. - (getmntent): Ditto. - -2002-06-09 Christopher Faylor <cgf@redhat.com> - - * mount.cc (main): Use default system/user flag for cygdrive stuff, - too. - (change_cygdrive_prefix): Change MOUNT_AUTO to MOUNT_CYGDRIVE. - * umount.cc (remove_cygdrive_prefix): Ditto. - (main): Use default system/user flag for cygdrive stuff, too. - -2002-06-08 Christopher Faylor <cgf@redhat.com> - - * mount.cc (opts): Remove '-i' option. - (usage): Ditto. - (main): Ditto. - (longopts): Remove --import-old-mounts option. - -2002-06-07 David Peterson <chief@mail.idrive.com> - Christopher Faylor <cgf@redhat.com> - - * cygpath.cc: Add option to output windows paths in different formats: - "dos" and "mixed". - (main): Process options. - (doit): Check new options flags. - -2002-06-06 Egor Duda <deo@logos-m.ru> - - * regtool.cc (Fail): Be more verbose. - (find_key): Add support for remote registry access. - (usage): Document it. - * utils.sgml: Document it. - -2002-06-06 Christopher Faylor <cgf@redhat.com> - - * strace.cc (main): Make toggle a local variable. - -2002-06-07 Conrad Scott <conrad.scott@dsl.pipex.com> - - * strace.cc (toggle): New global variable. - (error): Use exit instead of ExitProcess so that stdio buffers get - flushed. - (create_child): Remove command line error checking. - (dostrace): Ditto. - (dotoggle): New function. - (usage): Add entry for new option -T|--toggle. Alphabetize. - (longopts): Add new option -T|--toggle. - (opts): Ditto. - (main): Handle new -T|--toggle option. Move all command line checking - here from other functions. - * utils.sgml: Update section for strace. - -2002-06-05 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * strace.cc (version): New global variable. - (usage): Accommodate stdout output. - (print_version): New function. - -2002-06-03 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * ssp.c (version): New global variable. - (longopts): Ditto. - (opts): Ditto. - (run_program): Correct cmd_line typos to cmdline. - (usage): New function. Standardize usage output. Add ssp.txt to - --help output. - (print_version): New function. - (main): Accommodate getopt. - -2002-06-03 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * umount.cc (version): New global variable. - (longopts): Accommodate new --version option. - (opts): Ditto. - (usage): Standardize usage output. - (print_version): New function. - (main): Accommodate --help, --version options. - -2002-06-02 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * regtool.cc (prog_name): New global variable. - (longopts): Ditto. - (opts): Ditto. - (usage): Standardize usage output. Rearrange/add descriptions. - (print_version): New function. - (main): Accommodate longopts and new --help, --version options. Add - check for (_argv[optind+1] == NULL). - -2002-06-02 Christopher Faylor <cgf@redhat.com> - - * strace.cc (forkdebug): Make true by default. - (attach_process): Use window pid if cygwin pid isn't available (yet). - (create_child): Use either DEBUG_ONLY_THIS_PROCESS or DEBUG_PROCESS, - exclusively. (Suggested by Conrad.Scott@dsl.pipex.com) - -2002-05-30 Christopher Faylor <cgf@redhat.com> - - * mkpasswd.cc (main): Don't reset to binmode if stdout is a terminal. - -2002-05-29 Christopher Faylor <cgf@redhat.com> - - * mount.cc (main): Make -b the default. - -2002-05-29 Corinna Vinschen <corinna@vinschen.de> - - * ps.cc (main): Use uid or uid32 member of struct external_pinfo - dependent of the value of the struct's version member. - -2002-05-29 Corinna Vinschen <corinna@vinschen.de> - - * ps.cc (main): Change print format for uid to unsigned. Use uid32 - member of struct external_pinfo instead of uid. - -2002-05-28 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * passwd.c (prog_name): New global variable. - (longopts): Ditto. - (opts): Ditto. - (usage): Standardize output. Accommodate new options. - (print_version): New function. - (main): Accommodate longopts and new --help, --version options. - -2002-05-28 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * ps.cc (usage): Fix typo. - -2002-05-27 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * ps.cc (prog_name): New global variable. - (longopts): Ditto. - (opts): Ditto. - (usage): New function. - (print_version): New function. - (main): Accommodate longopts and new --help, --version options. - -2002-05-26 Christopher Faylor <cgf@redhat.com> - - * strace.cc (attach_process): Don't tell process to start stracing - here. - (proc_child): Do it here, instead, after first debug event. This - should work around inexplicable races with DebugActiveProcess. - (dostrace): Pass any pid argument to proc_child. - -2002-05-23 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * getfacl.c (usage): Standardize usage output. Change return type to - static void. - (print_version): New function. - (longopts): Added longopts for all options. - (main): Accommodate new help and version options. - -2002-05-22 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * mount.cc (version): New global variable. - (usage): Standardize usage output. Accommodate new version option. - (print_version): New function. - (longopts): Accommodate new version option. - (opts): Ditto. - (main): Ditto. - -2002-05-22 Corinna Vinschen <corinna@vinschen.de> - - * cygpath.cc (usage): Change usage output slightly. - -2002-05-20 Joerg Schaible <joerg.schaible@gmx.de> - - * cygpath.cc (main): Add option l to support conversion to - Windows long file names. Refactured code for capital options. - Support of options from file for capital options. - (dowin): New function. Refactured from main. - (doit): Call long path conversion. - (get_long_name): New function. - (get_long_paths): New function. - (get_long_path_name_w32impl): New function. Reimplementation - of Windows API function GetLongPathName (only 98/Me/2000/XP or - higher). - (get_short_name): Call GetShortPathName only once. - (get_short_paths): Fix calculating buffer size. - * utils.sgml: Update cygpath section for l option. - -2002-05-18 Christopher Faylor <cgf@redhat.com> - - * strace.cc (add_child): Use calloc since new requires working - libstdc++.a. - (remove_child): Ditto for delete/free. - -2002-05-15 Mark Blackburn <marklist@fangorn.ca> - - * cygpath.cc (get_short_paths): Fix more error checking. - (get_short_name): Ditto. - -2002-05-14 Joerg Schaible <joerg.schaible@gmx.de> - - * cygpath.cc (main): Add option H to show the Windows' profiles - directory. Support short names for options DPSW. Clean up - copied code lines. - * utils.sgml: Update cygpath section for H option and s support. - -2002-05-14 Mark Blackburn <marklist@fangorn.ca> - - * cygpath.cc (get_short_paths): Fix error checking. - -2002-05-13 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * kill.cc (prog_name): New global variable. - (usage): Standardize usage output. Add descriptions. - (print_version): New function. - (longopts): Accommodate new version option. - (opts): Ditto. - (main): Ditto. - -2002-05-13 Christopher Faylor <cgf@redhat.com> - - * kill.cc (listsig): Display numeric id when given symbolic input. - -2002-05-13 Christopher Faylor <cgf@redhat.com> - - * kill.cc (usage): Show new options. Allow specification of output - stream. - (main): Implement 'h' option. - -2002-05-13 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (kill.exe): Add as a specific target. - * kill.cc (longopts): New. - (opts): Ditto. - (get_sig): Accept const char * parameter. Return -1 on unknown signal. - (test_for_unknown_sig): New function. - (listsig): New function. - (main): Use getopt_long for option parsing. Implement -l, and -s - options. Use test_for_unknown_sig() to test for signal validity. - - * mount.cc (longopts): Make static. - (opts): Ditto. - -2002-05-12 Christopher Faylor <cgf@redhat.com> - - * mount.cc (do_mount): Default to non-exec option for remote drives. - Report warnings before attempting a mount. - (longopts): Add no-executable option. - (mount_commands): Ditto. - (opts): Ditto. - (usage): Ditto. Indicate that system mount is now the default. - (main): Accommodate no-executable option. Make system mount the - default. - * umount.cc (usage): Indicate that system umount is now the default. - (main): Make system umount the default. - -2002-05-07 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * dumper.cc (usage): Standardize usage output. Generalize to allow use - for help. - (longopts): New struct. Added longopts for all options. - (print_version): New function. - (main): Change getopt to getopt_long. Accommodate new help and version - options. - -2002-03-29 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): Change call to exit() to a return statement. - * mkpasswd.c (main): Ditto. - -2002-03-27 Joshua Daniel Franklin joshuadfranklin@yahoo.com - - * mkpasswd.c (usage): Simplify usage output. Generalize to allow use - for help. Correct '?' typo to 'h'. - (longopts): Add version option. - (opts): Add 'v' version option. - (print_version): New function. - (main): Accommodate new version option. Accommodate usage parameter - changes. - -2002-03-19 Christopher Faylor <cgf@redhat.com> - - * mkgroup.c (usage): Use one just fprintf + string concatenation for - output message. - (print_version): Add void to function type and update copyright. - -2002-03-16 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * mkgroup.c (usage): Simplify usage output. Generalize to allow use - for help. Correct '?' typo to 'h'. - (longopts): Add version option. - (opts): Add 'v' version option. - (print_version): New function. - (main): Accommodate new version option. Accommodate usage parameter - changes. Use usage to output help message. - -2002-03-15 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): When generating group 513, check for computer's - primary domain instead of current user's domain. - -2002-03-14 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c (main): When generating group 513, check for domain SID - if computer name isn't mapped to a SID. - -2001-03-11 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * kill.cc (usage): Move to top of file. - (getsig): Ditto. - (forcekill): Ditto. - -2002-03-06 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc: Reformat. - -2002-03-06 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (longopts): Use correct short option for --version. - -2002-03-06 Christopher Faylor <cgf@redhat.com> - - * cygpath.cc: Reformat. - -2002-02-27 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygpath.cc (print_version): New function. - (main): Accommodate new version function. Initialize 'o' to prevent - warning. - -2002-02-27 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (main): Eliminate non-GNU formatting glitch. - -2002-02-27 Christopher Faylor <cgf@redhat.com> - - * ssp.c (help_desk): Fix compiler warning. - -2002-02-27 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - Christopher Faylor <cgf@redhat.com> - - Change appropriate globals to statics throughout. - * cygcheck.cc (usage): Simplify usage output. Generalize to allow use - for help. - (longopts): Add version option. - (opts): Add 'V" version option. - (print_version): New function. - (main): Accommodate new version option. Accommodate usage parameter - changes. Use usage to output help message. - -002-02-19 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (CXXFLAGS): Add override so that HAVE_DECL_GETOPT is - defined. - (libbfd): Use -B rather than -L so that bfd from build directory is - correctly found. - (libintl): Ditto. - -2002-02-15 Christopher Faylor <cgf@redhat.com> - - * mount.cc (usage): Fix typo in output. - -2002-02-14 Christopher Faylor <cgf@redhat.com> - - * strace.cc (attach_process): Change CW_STRACE_ON to CW_STRACE_TOGGLE. - -2002-01-31 Corinna Vinschen <corinna@vinschen.de> - - * mkpasswd.c (main): Set default home path for 9x/Me if --path-to-home - isn't given. - -2002-01-30 Corinna Vinschen <corinna@vinschen.de> - - * passwd.cc (ChangePW): Add parameter to differ between called for - checking old password and called for changing password. If called - for checking old password, return non-zero only if password is surely - incorrect. - (main): Call ChangePW() with additional parameter. - -2002-01-29 Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc (parse_filename): Don't consider '_' part of the - version. - -2002-01-28 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc: Fix typo. Remove uid_t kludge. Rely on kludge in - sys/cygwin.h instead. - * getfacl.c: Add include to remove warning. - * mkgroup.c (main): Assign variables outside of parameter passing. - This seems to eliminate some compiler warnings. - -2002-01-28 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc: Use specific cygwin includes, as required. - -2002-01-28 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (MINGW_INCLUDES): Change cygwin include. - * strace.cc: Use specific cygwin includes, as required. - (load_cygwin): New function. Loads cygwin DLL, if necessary. - (attach_process): Attaches strace to a running process. - (dostrace): Accept pid argument. Attach to pid if supplied. - (usage): Describe -p option. Correct system description. - (longopts): Alphabetize. - (opts): Ditto. - (main): Ditto. Handle -p option. - -2002-01-21 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (CXXFLAGS): Ensure that important settings are preserved - even when overriden by command line. - -2002-01-21 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Build intermediate cygcheck.o to force use of MINGW_CXXFLAGS. - * cygcheck.cc (cygwin_info): Intitialize variable to quiet g++ warning. - (dump_sysinfo): Make variables unsigned to quiet g++ warnings. - * strace.cc (version_string): Rename from SCCSid. - (add_child): Remove unused variable. - (version): Use version_string. Avoid use of fprintf. - -2002-01-21 DJ Delorie <dj@redhat.com> - - * Makefile.in: Use CXX instead of CC to compile C++ sources. - -2002-01-17 DJ Delorie <dj@redhat.com> - - * cygcheck.cc (already_did): Avoid default constructors, which may - require exception support. - -2001-01-16 Joshua Daniel Franklin <joshuadfranklin@yahoo.com> - - * cygpath.cc (main): Add options to show Desktop and Start - Menu's Programs directory for current user or all users. - Move bulk of DPWS options outside the getopt case statement. - * utils.sgml: Update cygpath section for ADPWS options. - -2002-01-15 Joerg Schaible <joerg.schaible@gmx.de> - - * cygpath.cc (doit): Empty file ignored using option -i. - -2002-01-15 Mark Bradshaw <bradshaw@crosswalk.com> - - * mkpasswd.c (print_win_error): Add a new function. - (enum_users): Use print_win_error. - (enum_local_groups): Ditto. - (main): Ditto. - -2001-12-26 Jonathan Kamens <jik@curl.com> - - * cygpath.cc (doit): Detect and warn about an empty path. Detect and - warn about errors converting a path. - (main): Set prog_name correctly -- don't leave an extra slash or - backslash at the beginning of it. - -Fri Dec 14 14:04:37 2001 Jason Tishler <jason@tishler.net> - - * mkpasswd.c (enum_users): Change to unconditionally use - the --path-to-home option, if supplied by the user. Use default - --path-to-home option value, if appropriate. - (usage): Change usage statement to reflect new semantics. - (main): Remove defaulting of the --path-to-home option. - -Fri Dec 14 12:10:39 2001 Jason Tishler <jason@tishler.net> - - * mkpasswd.c (opts): Add indication that '-p' option requires an - argument. - -2001-12-11 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Add define to CXXFLAGS. - -2001-12-03 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (usage): Add -c description. - * cygpath.cc (usage): Alphabetize options. - * strace.cc (usage): Ditto. - -2001-11-21 Christopher Faylor <cgf@redhat.com> - - * path.cc (cygpath): Don't consider cygdrive stuff when trying to derive - native paths. - -2001-11-20 Mark Bradshaw <bradshaw@staff.crosswalk.com> - - * mkpasswd.c: include lmerr.h - (main): New -u option to allow specifying a - specific user. If specified, groups aren't displayed and - output is limited to only the specified user. - (enum_users): If specific user is specified, via -u option, - display only that user's record. With -u use NetUserGetInfo - instead of NetUserEnum. - (load_netapi): Added netusergetinfo. - -2001-11-15 Gary R. Van Sickle <g.r.vansickle@worldnet.att.net> - - * strace.cc (main): Change getopt() to getopt_long(). - Add support for help and version info. - Use new parse_mask() function for -m/--mask option. - (longopts): Add long options structure. - (opts): Move options string from getopts call to static var. - (usage): Print usage information. - (SCCSid): Version info. - (version): New function for displaying version info. - (parse_mask): New function supporting parsing of mnemonics, - hex, and basic expressions in masks. - (mnemonic2ul): New mnemonic parsing function. - (tag_mask_mnemonic): New type. - (mnemonic_table): New table of mnemonics for mnemonic2ul() to - search through. - -2001-11-12 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Redefine output format slightly. - Print correct build number on 9x/ME systems. - -2001-11-12 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (main): Slight formatting tweak. - -2001-11-12 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Add some more details. - -2001-11-12 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Print more detailed OS information string - using OSVERSIONINFOEX information. - -2001-11-11 Christopher Faylor <cgf@redhat.com> - - * path.h: New file. - -2001-11-11 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (scan_registry): Open registry with read-only access. - (main): Reflect argument change for dump_setup. - * dump_setup.cc (dump_setup): Add preliminary extra argument for future - use. - * path.cc (read_mounts): Open registry with read-only access. - -2001-11-11 Christopher Faylor <cgf@redhat.com> - - * cygcheck.cc (main): Display package info when '-s' is specified. - * dump_setup.cc (dump_setup): Change header. Remove typo. Always sort - packages output. - -2001-11-11 Christopher Faylor <cgf@redhat.com> - - * dump_setup.cc: New file. - * Makefile.in: Add info for dump_setup.o. - * cygcheck.cc (main): Recognize '-c' option for checking setup - installed base. - * path.cc (cygpath): Read mount table if not loaded. - -2001-11-10 Christopher Faylor <cgf@redhat.com> - - * Makefile.in (cygcheck.exe): Compile as -mno-cygwin executable. - * path.cc: New file. - * cygcheck.cc (init_paths): Use MS-DOS path syntax. - (cygwin_info): Properly display cygwin version numbers. Prettify some - output. - (dump_sysinfo): Calculate max names of posix and ms-dos paths for - prettier output. - -2001-11-09 Corinna Vinschen <corinna@vinschen.de> - - * cygcheck.cc (dump_sysinfo): Print more detailed OS information string. - -2001-11-04 Corinna Vinschen <corinna@vinschen.de> - - * getfacl.c (username): New function. - (groupname): Ditto. - (usage): Ditto. Add more user friendly help text. - (main): Add -n and --help option. Print names instead of IDs - unless -n option is given. - * setfacl.c (getperm): Tolerate whitespace and comment chars in input. - (getaclentry): Fix several input string misdetections. - (getaclentries): Allow - as input file name to read from stdin. - Tolerate whitespace and comment chars in input. - (usage): Add more user friendly help text. - (main): Add --help option. - -2001-11-04 Egor Duda <deo@logos-m.ru> - - * strace.cc (main): New option '-w'. Start traced process in separate - window. New option '-S x'. Flush buffered output every x seconds. - (create_child): Start child process in new window, when requested. - When requested, periodically flush debugging output. - -2001-10-24 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Remove EXEEXT consideration. We always need .exe - extensions. - -2001-10-20 Corinna Vinschen <corinna@vinschen.de> - - * mkgroup.c: Avoid compiler warnings. - (print_special): New function. - (main): Print special accounts by calling print_special(). - * mkpasswd.c: Avoid compiler warnings. - (enum_users): Print additional U-domain\username info in gecos - field when SIDs are printed. - (print_special): New function. - (main): Print special accounts by calling print_special(). - -2001-10-15 Christopher Faylor <cgf@redhat.com> - - * mkpasswd.cc (enum_users): Shorten "unused" passwd field. - -2001-10-13 Christopher Faylor <cgf@redhat.com> - - * Makefile.in: Allow stdinc searching for dumper. - -Tue Oct 9 21:59:00 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in (MINGW_INCLUDES): Accommodate changes in Makefile.common. - -Sun Oct 7 23:06:39 2001 Christopher Faylor <cgf@cygnus.com> - - * kill.cc (main): Set exit value to 1 on invalid pid. Perform minor - cleanup. - -Fri Sep 21 20:40:30 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in (mingw_getopt.o): Ensure that newlib include directories - are not searched. - -Thu Sep 20 21:00:20 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in (MINGW_INCLUDES): Still need cygwin/include directory. - -Wed Sep 19 12:22:08 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in: Filter newlib includes from mingw compilation. - -2001-09-14 Egor Duda <deo@logos-m.ru> - - * dumper.cc (dumper::dumper): Print error code in case of error. - (dumper::add_thread): Ditto. - (dumper::collect_memory_sections): Ditto. - (dumper::dump_memory_region): Ditto. - (dumper::collect_process_information): Ditto. - (print_section_name): Fix formatting. - -2001-09-13 Egor Duda <deo@logos-m.ru> - - * dumper.cc (main): Properly recognize negative pids (used by w9x). - -2001-09-09 Egor Duda <deo@logos-m.ru> - - * dumper.cc (main): Change command-line arguments format to be - similar to gdb. Allow adding error_start=x:\path\to\dumper.exe to - CYGWIN environment variable to perform core dumping in case of - program crash. - (usage): Ditto. - -Wed Sep 5 22:37:21 2001 Christopher Faylor <cgf@cygnus.com> - - * Makefile.in (dumper): Change logic for libbfd and libintl so that - they will be found either in the build tree or the installed directory. - * mkpasswd.c (enum_users): Add a comment as a password for NT. - -2001-09-03 Michael A Chase <mchase@ix.netcom.com> - - * mount.cc (mount_commands): Don't write /cygdrive/u mount points. - -2001-09-03 Michael A Chase <mchase@ix.netcom.com> - - * mount.cc (longopts): Add mount-commands to options list. - (usage): Add mount-commands option. - (mount_commands): New function. Write commands to recreate current - mounts. - -Sat Sep 1 15:58:11 2001 Christopher Faylor <cgf@cygnus.com> - - * mount.cc (main): Eliminate excess arguments in printf. - -2001-08-30 Egor Duda <deo@logos-m.ru> - - * dumper.h: Update copyright notice. - * dumper.cc: Ditto. - * dumper.cc: (dumper::print_core_section_list): New function. - * dumper.h: (dumper::print_core_section_list): Declare it. - * dumper.cc (print_section_name): New function. - (dumper::collect_process_information): Augment debugging output. - Stop debugee processing if it posts double exception. - (usage): Fix typo in option name. - -Tue Aug 28 14:45:02 2001 Christopher Faylor <cgf@cygnus.com> - - * mount.cc (main): Issue correct warning for 'not enough arguments'. - -2001-08-14 Joerg Schaible <joerg.schaible@gmx.de> - - * cygpath.cc (main): Support -w for Windows (System) directories and - return physical correct orthography for the Windows System dir. - -2001-07-14 Chris Genly <chgenly@alum.mit.edu> - - * regtool.cc (find_key): Handle keys with only one subkey. - -Wed Jun 27 22:46:10 2001 Christopher Faylor <cgf@cygnus.com> - - * regtool.cc (find_key): Revert previous change. - -Wed Jun 27 13:37:41 2001 Keith Starsmeare" <keith_starsmeare@yahoo.co.uk> - - * regtool.cc (find_key): Allow '/' as a synonym for '\\'. - -Fri Jun 15 00:49:21 2001 Christopher Faylor <cgf@cygnus.com> - - * mkpasswd.c (main): Output passwd file in binary mode so that there - are no CRs in the file. - * umount.cc (remove_all_user_mounts): Don't try to remove /cygdrive - mounts. - -Tue May 1 10:50:48 2001 Christopher Faylor <cgf@cygnus.com> - - * mkpasswd.c (enum_users): Use /bin/bash as the default shell. - (main): Ditto. - -Sat Apr 28 22:32:01 2001 Christopher Faylor <cgf@cygnus.com> - - * passwd.cc (ttymnam): New function. - (main): Use ttynam() to report name of tty. - -2001-04-19 Egor Duda <deo@logos-m.ru> - - * dumper.cc (dumper::init_core_dump): Set architecture field in dump - header. - -Mon Apr 16 15:08:00 2001 Corinna Vinschen <vinschen@redhat.com> - - * mkgroup.c: Add function pointers `netlocalgroupgetmembers' and - `netgroupgetusers'. - (load_netapi): Load function pointers `netlocalgroupgetmembers' - and `netgroupgetusers'. - (enum_local_users): New function. - (enum_local_groups): Call `enum_local_users' for each group if - `print_users' is set. - (enum_users): New function. - (enum_groups): Call `enum_users' for each group if `print_users' is set. - (usage): Add usage text for `-u/--users'. - (longopts): Add option `--users'. - (opts): Add option character `u'. - (main): Set `print_users' according to option `-u/--users'. - Call `enum_local_groups' and `enum_groups' with additional parameter - `print_users'. - -2001-04-15 Michael A Chase <mchase@ix.netcom.com> - - * mount.cc (longopts): Add help to options list. - (opts): Add 'h' to options string. - * umount.cc (longopts): Add help to options list. - (opts): Add 'h' to options string and change 'R' to 'A'. - -2001-04-13 Kazuhiro Fujieda <fujieda@jaist.ac.jp> - - * mkgroup.c (enum_groups): Use RID + offset specified an additional - argument as ID. - (usage): Add description of -o option. - (longopts, opts): Add specifications of -o/--id-offset option. - (main): Add -o option. Invoke enum_groups with specified offset. - * mkpasswd.c (enum_users): Just like mkgroup.c. - (usage, longopts, opts): Ditto. - (main): Add -o option. Invoke enum_users with specified offset only - against domain accounts. - -2001-04-11 Egor Duda <deo@logos-m.ru> - - * mkgroup.c (uni2ansi): Use native method to convert from Unicode - to multi-byte strings. - * mkpasswd.c (uni2ansi): Ditto. - (enum_users): Pass buffer size when converting string. - (enum_local_groups): Ditto. - * mkgroup.c (enum_groups): Ditto. - (enum_local_groups): Ditto. - -Mon Apr 2 22:41:33 2001 Christopher Faylor <cgf@cygnus.com> - - * mount.cc (main): Use getopt_long for parsing arguments. - (usage): Reformat, show long and short options. - * umount.cc (main): Ditto, all of the above. - -Mon Apr 2 10:58:26 2001 Christopher Faylor <cgf@cygnus.com> - - * mount.cc (show_mounts): Change format string to more closely resemble - UNIX when displaying mount table. - -Sat Mar 17 21:46:06 2001 Christopher Faylor <cgf@cygnus.com> - - * kill.cc (forcekill): Use dwProcessId when opening a process, not the - Cygwin pid. - -Mon Mar 5 18:50:00 2001 Corinna Vinschen <vinschen@redhat.com> - - * getfacl.c: Add copyright hint. - * setfacl.c: Ditto. - * strace.cc: Ditto. - -Tue Jan 09 10:26:23 2001 Tony Sideris <tonys1110@home.com> - - * regtool.cc (cmd_list): Add new registry display options. - (cmd_list): Add code to implement -p, -k, and -l options. - - * regtool.cc (Fail): Add call to LocalFree to free memory allocated by - FormatMessage. - -Wed Jan 10 09:16:57 2001 Christopher Faylor <cgf@cygnus.com> - - * regtool.cc (translate): Ensure that 'c' is initialized. - (cmd_set): Ditto for rv. diff --git a/winsup/utils/Makefile.in b/winsup/utils/Makefile.in deleted file mode 100644 index c8dd4c39d06..00000000000 --- a/winsup/utils/Makefile.in +++ /dev/null @@ -1,180 +0,0 @@ -# Makefile for Cygwin utilities -# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 Red Hat, Inc. - -# This file is part of Cygwin. - -# This software is a copyrighted work licensed under the terms of the -# Cygwin license. Please consult the file "CYGWIN_LICENSE" for -# details. - -SHELL:=@SHELL@ - -srcdir:=@srcdir@ -VPATH:=@srcdir@ -prefix:=@prefix@ -exec_prefix:=@exec_prefix@ - -bindir:=@bindir@ -program_transform_name:=@program_transform_name@ - -override INSTALL:=@INSTALL@ -override INSTALL_PROGRAM:=@INSTALL_PROGRAM@ -override INSTALL_DATA:=@INSTALL_DATA@ - -EXEEXT:=@EXEEXT@ -EXEEXT_FOR_BUILD:=@EXEEXT_FOR_BUILD@ - -CC:=@CC@ -CC_FOR_TARGET:=$(CC) -CXX:=@CXX@ -CXX_FOR_TARGET:=$(CXX) - -CFLAGS:=@CFLAGS@ -CXXFLAGS:=@CXXFLAGS@ -override CXXFLAGS+=-fno-exceptions -fno-rtti -DHAVE_DECL_GETOPT=0 - -include $(srcdir)/../Makefile.common - -.SUFFIXES: -.NOEXPORT: -.PHONY: all install clean realclean warn_dumper warn_cygcheck_zlib - -ALL_LDLIBS := -lnetapi32 -ladvapi32 -ALL_LDFLAGS := -B$(newlib_build)/libc -B$(w32api_lib) $(LDFLAGS) $(ALL_LDLIBS) -ALL_DEP_LDLIBS := $(cygwin_build)/libcygwin.a ${patsubst -l%,\ - $(w32api_lib)/lib%.a,$(ALL_LDLIBS) -lkernel32 -luser32} - -MINGW_LIB := $(mingw_build)/libmingw32.a -MINGW_LDLIBS := $(ALL_LDLIBS) $(MINGW_LIB) -MINGW_DEP_LDLIBS := $(ALL_DEP_LDLIBS) $(MINGW_LIB) -MINGW_CXX := ${patsubst %/cygwin/include,%/mingw/include,\ - ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)}} -I$(updir) - -# List all binaries to be linked in Cygwin mode. Each binary on this list -# must have a corresponding .o of the same name. -CYGWIN_BINS := ${addsuffix .exe,cygpath getfacl kill mkgroup \ - mkpasswd mount passwd ps regtool setfacl setmetamode ssp umount} - -# List all binaries to be linked in MinGW mode. Each binary on this list -# must have a corresponding .o of the same name. -MINGW_BINS := ${addsuffix .exe,strace cygcheck} - -# List all objects to be compiled in MinGW mode. Any object not on this -# list will will be compiled in Cygwin mode implicitly, so there is no -# need for a CYGWIN_OBJS. -MINGW_OBJS := bloda.o cygcheck.o dump_setup.o path.o strace.o - -# If a binary should link in any objects besides the .o with the same -# name as the binary, then list those here. -strace.exe: path.o -cygcheck.exe: bloda.o path.o dump_setup.o - -# Provide any necessary per-target variable overrides. -cygcheck.exe: MINGW_LDFLAGS += -lntdll -cygpath.exe: ALL_LDFLAGS += -lntdll - -# Check for dumper's requirements and enable it if found. -LIBICONV := @libiconv@ -libbfd := ${shell $(CC) -B$(bupdir2)/bfd/ --print-file-name=libbfd.a} -libintl := ${shell $(CC) -B$(bupdir2)/intl/ --print-file-name=libintl.a} -build_dumper := ${shell test -r $(libbfd) -a -r $(libintl) -a -n "$(LIBICONV)" && echo 1} -ifdef build_dumper -CYGWIN_BINS += dumper.exe -dumper.o module_info.o parse_pe.o: CXXFLAGS += -I$(bupdir2)/bfd -I$(updir1)/include -dumper.o parse_pe.o: dumper.h -dumper.exe: module_info.o parse_pe.o -dumper.exe: ALL_LDFLAGS += ${libbfd} ${libintl} -L$(bupdir1)/libiberty $(LIBICONV) -liberty -else -all: warn_dumper -endif - -# Check for availability of a MinGW libz and enable for cygcheck. -libz:=${shell x=$$($(CC) -mno-cygwin --print-file-name=libz.a); cd $$(dirname $$x); dir=$$(pwd); case "$$dir" in *mingw*) echo $$dir/libz.a ;; esac} -ifdef libz -zlib_h := -include ${patsubst %/lib/mingw/libz.a,%/include/zlib.h,${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)}} -zconf_h := ${patsubst %/zlib.h,%/zconf.h,$(zlib_h)} -dump_setup.o: MINGW_CXXFLAGS += $(zconf_h) $(zlib_h) -cygcheck.exe: MINGW_LDFLAGS += $(libz) -else -all: warn_cygcheck_zlib -endif - -all: Makefile $(CYGWIN_BINS) $(MINGW_BINS) - -# test harness support (note: the "MINGW_BINS +=" should come after the -# "all:" above so that the testsuite is not run for "make" but only -# "make check".) -MINGW_BINS += testsuite.exe -MINGW_OBJS += path-testsuite.o testsuite.o -testsuite.exe: path-testsuite.o -path-testsuite.cc: path.cc ; @test -L $@ || ln -sf ${filter %.cc,$^} $@ -path-testsuite.o: MINGW_CXXFLAGS += -DTESTSUITE -# this is necessary because this .c lives in the build dir instead of src -path-testsuite.o: MINGW_CXX := ${patsubst -I.,-I$(utils_source),$(MINGW_CXX)} -path-testsuite.cc path.cc testsuite.cc: testsuite.h -check: testsuite.exe ; $(<D)/$(<F) - -# the rest of this file contains generic rules - -# how to compile a MinGW object -$(MINGW_OBJS): %.o: %.cc -ifdef VERBOSE - $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< -else - @echo $(MINGW_CXX) $c $(MINGW_CXXFLAGS) ... $(*F).cc;\ - $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< -endif - -# how to link a MinGW binary -$(MINGW_BINS): %.exe: %.o -ifdef VERBOSE - $(CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) -else - @echo $(CXX) -o $@ ${filter %.o,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\ - $(CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) -endif - -# how to link a Cygwin binary -$(CYGWIN_BINS): %.exe: %.o -ifdef VERBOSE - $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS) -else - @echo $(CXX) -o $@ ${filter %.o,$^} ... ${filter-out -B%, $(ALL_LDFLAGS)};\ - $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS) -endif - -# note: how to compile a Cygwin object is covered by the pattern rule in Makefile.common - -# these dependencies ensure that the required in-tree libs are built first -$(MINGW_BINS): $(MINGW_DEP_LDLIBS) -$(CYGWIN_BINS): $(ALL_DEP_LDLIBS) - -clean: - rm -f *.o $(CYGWIN_BINS) $(MINGW_BINS) path-testsuite.cc testsuite.exe - -realclean: clean - rm -f Makefile config.cache - -install: all - $(SHELL) $(updir1)/mkinstalldirs $(bindir) - for i in $(CYGWIN_BINS) ${filter-out testsuite.exe,$(MINGW_BINS)} ; do \ - n=`echo $$i | sed '$(program_transform_name)'`; \ - $(INSTALL_PROGRAM) $$i $(bindir)/$$n; \ - done - -$(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile - @$(MAKE) -C $(@D) $(@F) - -$(MINGW_LIB): $(mingw_build)/Makefile - @$(MAKE) -C $(@D) $(@F) - -warn_dumper: - @echo '*** Not building dumper.exe since some required libraries are' - @echo '*** missing: libbfd.a and libintl.a.' - @echo '*** If you need this program, check out the naked-bfd and naked-intl' - @echo '*** sources from sourceware.org. Then, configure and build these' - @echo '*** libraries. Otherwise, you can safely ignore this warning.' - -warn_cygcheck_zlib: - @echo '*** Building cygcheck without package content checking due to missing mingw libz.a.' diff --git a/winsup/utils/cygcheck.cc b/winsup/utils/cygcheck.cc deleted file mode 100644 index a8a45bcd259..00000000000 --- a/winsup/utils/cygcheck.cc +++ /dev/null @@ -1,2183 +0,0 @@ -/* cygcheck.cc - - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008 Red Hat, Inc. - - This file is part of Cygwin. - - This software is a copyrighted work licensed under the terms of the - Cygwin license. Please consult the file "CYGWIN_LICENSE" for - details. */ - -#define cygwin_internal cygwin_internal_dontuse -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <sys/time.h> -#include <ctype.h> -#include <io.h> -#include <windows.h> -#include <wininet.h> -#include "path.h" -#include <getopt.h> -#include "cygwin/include/sys/cygwin.h" -#include "cygwin/include/mntent.h" -#undef cygwin_internal - -#define alloca __builtin_alloca - -int verbose = 0; -int registry = 0; -int sysinfo = 0; -int givehelp = 0; -int keycheck = 0; -int check_setup = 0; -int dump_only = 0; -int find_package = 0; -int list_package = 0; -int grep_packages = 0; - -static char emptystr[] = ""; - -/* This is global because it's used in both internet_display_error as well - as package_grep. */ -BOOL (WINAPI *pInternetCloseHandle) (HINTERNET); - -#ifdef __GNUC__ -typedef long long longlong; -#else -typedef __int64 longlong; -#endif - -/* In dump_setup.cc */ -void dump_setup (int, char **, bool); -void package_find (int, char **); -void package_list (int, char **); -/* In bloda.cc */ -void dump_dodgy_apps (int verbose); - - -static const char version[] = "$Revision$"; - -static const char *known_env_vars[] = { - "c_include_path", - "compiler_path", - "cxx_include_path", - "cygwin", - "cygwin32", - "dejagnu", - "expect", - "gcc_default_options", - "gcc_exec_prefix", - "home", - "ld_library_path", - "library_path", - "login", - "lpath", - "make_mode", - "makeflags", - "path", - "pwd", - "strace", - "tcl_library", - "user", - 0 -}; - -struct -{ - const char *name; - int missing_is_good; -} -static common_apps[] = { - {"awk", 0}, - {"bash", 0}, - {"cat", 0}, - {"cp", 0}, - {"cpp", 1}, - {"crontab", 0}, - {"find", 0}, - {"gcc", 0}, - {"gdb", 0}, - {"grep", 0}, - {"kill", 0}, - {"ld", 0}, - {"ls", 0}, - {"make", 0}, - {"mv", 0}, - {"patch", 0}, - {"perl", 0}, - {"rm", 0}, - {"sed", 0}, - {"ssh", 0}, - {"sh", 0}, - {"tar", 0}, - {"test", 0}, - {"vi", 0}, - {"vim", 0}, - {0, 0} -}; - -static int num_paths, max_paths; -struct pathlike -{ - char *dir; - bool issys; - void pathlike::check_existence (const char *fn, int showall, int verbose, - char* first, const char *ext1 = "", - const char *ext2 = ""); -}; - -pathlike *paths; -int first_nonsys_path; - -void -eprintf (const char *format, ...) -{ - va_list ap; - va_start (ap, format); - vfprintf (stderr, format, ap); - va_end (ap); -} - -/* - * display_error() is used to report failure modes - */ -static int -display_error (const char *name, bool show_error, bool print_failed) -{ - fprintf (stderr, "cygcheck: %s", name); - if (show_error) - fprintf (stderr, "%s: %lu\n", - print_failed ? " failed" : "", GetLastError ()); - else - fprintf (stderr, "%s\n", - print_failed ? " failed" : ""); - return 1; -} - -static int -display_error (const char *name) -{ - return display_error (name, true, true); -} - -static int -display_error (const char *fmt, const char *x) -{ - char buf[4000]; - sprintf (buf, fmt, x); - return display_error (buf, false, false); -} - -static int -display_error_fmt (const char *fmt, ...) -{ - char buf[4000]; - va_list va; - - va_start (va, fmt); - vsprintf (buf, fmt, va); - return display_error (buf, false, false); -} - -/* Display a WinInet error message, and close a variable number of handles. - (Passed a list of handles terminated by NULL.) */ -static int -display_internet_error (const char *message, ...) -{ - DWORD err = GetLastError (); - TCHAR err_buf[256]; - va_list hptr; - HINTERNET h; - - /* in the case of a successful connection but 404 response, there is no - win32 error message, but we still get passed a message to display. */ - if (err) - { - if (FormatMessage (FORMAT_MESSAGE_FROM_HMODULE, - GetModuleHandle ("wininet.dll"), err, 0, err_buf, - sizeof (err_buf), NULL) == 0) - strcpy (err_buf, "(Unknown error)"); - - fprintf (stderr, "cygcheck: %s: %s (win32 error %d)\n", message, - err_buf, err); - } - else - fprintf (stderr, "cygcheck: %s\n", message); - - va_start (hptr, message); - while ((h = va_arg (hptr, HINTERNET)) != 0) - pInternetCloseHandle (h); - va_end (hptr); - - return 1; -} - -static void -add_path (char *s, int maxlen, bool issys) -{ - if (num_paths >= max_paths) - { - max_paths += 10; - /* Extend path array */ - paths = (pathlike *) realloc (paths, (1 + max_paths) * sizeof (paths[0])); - } - - pathlike *pth = paths + num_paths; - - /* Allocate space for directory in path list */ - char *dir = (char *) calloc (maxlen + 2, sizeof (char)); - if (dir == NULL) - { - display_error ("add_path: calloc() failed"); - return; - } - - /* Copy input directory to path list */ - memcpy (dir, s, maxlen); - - /* Add a trailing slash by default */ - char *e = strchr (dir, '\0'); - if (e != dir && e[-1] != '\\') - strcpy (e, "\\"); - - /* Fill out this element */ - pth->dir = dir; - pth->issys = issys; - pth[1].dir = NULL; - num_paths++; -} - -static void -init_paths () -{ - char tmp[4000], *sl; - add_path ((char *) ".", 1, true); /* to be replaced later */ - - if (GetCurrentDirectory (4000, tmp)) - add_path (tmp, strlen (tmp), true); - else - display_error ("init_paths: GetCurrentDirectory()"); - - if (GetSystemDirectory (tmp, 4000)) - add_path (tmp, strlen (tmp), true); - else - display_error ("init_paths: GetSystemDirectory()"); - sl = strrchr (tmp, '\\'); - if (sl) - { - strcpy (sl, "\\SYSTEM"); - add_path (tmp, strlen (tmp), true); - } - GetWindowsDirectory (tmp, 4000); - add_path (tmp, strlen (tmp), true); - - char *wpath = getenv ("PATH"); - if (!wpath) - display_error ("WARNING: PATH is not set\n", ""); - else - { - char *b, *e; - b = wpath; - while (1) - { - for (e = b; *e && *e != ';'; e++) - continue; /* loop terminates at first ';' or EOS */ - if (strncmp(b, ".\\", 2) != 0) - add_path (b, e - b, false); - if (!*e) - break; - b = e + 1; - } - } -} - -#define LINK_EXTENSION ".lnk" - -void -pathlike::check_existence (const char *fn, int showall, int verbose, - char* first, const char *ext1, const char *ext2) -{ - char file[4000]; - strcpy (file, dir); - strcat (file, fn); - strcat (file, ext1); - strcat (file, ext2); - - if (GetFileAttributes (file) != (DWORD) - 1) - { - char *lastdot = strrchr (file, '.'); - bool is_link = lastdot && !strcmp (lastdot, LINK_EXTENSION); - // If file is a link, fix up the extension before printing - if (is_link) - *lastdot = '\0'; - if (showall) - printf ("Found: %s\n", file); - if (verbose && *first != '\0' && strcasecmp (first, file) != 0) - { - char *flastdot = strrchr (first, '.'); - bool f_is_link = flastdot && !strcmp (flastdot, LINK_EXTENSION); - // if first is a link, fix up the extension before printing - if (f_is_link) - *flastdot = '\0'; - printf ("Warning: %s hides %s\n", first, file); - if (f_is_link) - *flastdot = '.'; - } - if (is_link) - *lastdot = '.'; - if (!*first) - strcpy (first, file); - } -} - -static const char * -find_on_path (const char *in_file, const char *ext, bool showall = false, - bool search_sys = false, bool checklinks = false) -{ - static char rv[4000]; - - /* Sort of a kludge but we've already tested this once, so don't try it again */ - if (in_file == rv) - return in_file; - - static pathlike abspath[2] = - { - {emptystr, 0}, - {NULL, 0} - }; - - *rv = '\0'; - if (!in_file) - { - display_error ("internal error find_on_path: NULL pointer for file", false, false); - return 0; - } - - if (!ext) - { - display_error ("internal error find_on_path: NULL pointer for default_extension", false, false); - return 0; - } - - const char *file; - pathlike *search_paths; - if (!strpbrk (in_file, ":/\\")) - { - file = in_file; - search_paths = paths; - } - else - { - file = cygpath (in_file, NULL); - search_paths = abspath; - showall = false; - } - - if (!file) - { - display_error ("internal error find_on_path: cygpath conversion failed for %s\n", in_file); - return 0; - } - - char *hasext = strrchr (file, '.'); - if (hasext && !strpbrk (hasext, "/\\")) - ext = ""; - - for (pathlike *pth = search_paths; pth->dir; pth++) - if (!pth->issys || search_sys) - { - pth->check_existence (file, showall, verbose, rv, ext); - - if (checklinks) - pth->check_existence (file, showall, verbose, rv, ext, LINK_EXTENSION); - - if (!*ext) - continue; - - pth->check_existence (file, showall, verbose, rv); - if (checklinks) - pth->check_existence (file, showall, verbose, rv, LINK_EXTENSION); - } - - return *rv ? rv : NULL; -} - -#define DID_NEW 1 -#define DID_ACTIVE 2 -#define DID_INACTIVE 3 - -struct Did -{ - Did *next; - char *file; - int state; -}; -static Did *did = 0; - -static Did * -already_did (const char *file) -{ - Did *d; - for (d = did; d; d = d->next) - if (strcasecmp (d->file, file) == 0) - return d; - d = (Did *) malloc (sizeof (Did)); - d->file = strdup (file); - d->next = did; - d->state = DID_NEW; - did = d; - return d; -} - -struct Section -{ - char name[8]; - int virtual_size; - int virtual_address; - int size_of_raw_data; - int pointer_to_raw_data; -}; - -static int -rva_to_offset (int rva, char *sections, int nsections, int *sz) -{ - int i; - - if (sections == NULL) - { - display_error ("rva_to_offset: NULL passed for sections", true, false); - return 0; - } - - for (i = 0; i < nsections; i++) - { - Section *s = (Section *) (sections + i * 40); -#if 0 - printf ("%08x < %08x < %08x ? %08x\n", - s->virtual_address, rva, - s->virtual_address + s->virtual_size, s->pointer_to_raw_data); -#endif - if (rva >= s->virtual_address - && rva < s->virtual_address + s->virtual_size) - { - if (sz) - *sz = s->virtual_address + s->virtual_size - rva; - return rva - s->virtual_address + s->pointer_to_raw_data; - } - } - return 0; /* punt */ -} - -struct ExpDirectory -{ - int flags; - int timestamp; - short major_ver; - short minor_ver; - int name_rva; -}; - -struct ImpDirectory -{ - unsigned characteristics; - unsigned timestamp; - unsigned forwarder_chain; - unsigned name_rva; - unsigned iat_rva; -}; - -static bool track_down (const char *file, const char *suffix, int lvl); - -#define CYGPREFIX (sizeof ("%%% Cygwin ") - 1) -static void -cygwin_info (HANDLE h) -{ - char *buf, *bufend, *buf_start = NULL; - const char *hello = " Cygwin DLL version info:\n"; - DWORD size = GetFileSize (h, NULL); - DWORD n; - - if (size == 0xffffffff) - return; - - buf_start = buf = (char *) calloc (1, size + 1); - if (buf == NULL) - { - display_error ("cygwin_info: calloc()"); - return; - } - - (void) SetFilePointer (h, 0, NULL, FILE_BEGIN); - if (!ReadFile (h, buf, size, &n, NULL)) - { - free (buf_start); - return; - } - - static char dummy[] = "\0\0\0\0\0\0\0"; - char *dll_major = dummy; - bufend = buf + size; - while (buf < bufend) - if ((buf = (char *) memchr (buf, '%', bufend - buf)) == NULL) - break; - else if (strncmp ("%%% Cygwin ", buf, CYGPREFIX) != 0) - buf++; - else - { - char *p = strchr (buf += CYGPREFIX, '\n'); - if (!p) - break; - if (strncasecmp (buf, "dll major:", 10) == 0) - { - dll_major = buf + 11; - continue; - } - char *s, pbuf[80]; - int len; - len = 1 + p - buf; - if (strncasecmp (buf, "dll minor:", 10) != 0) - s = buf; - else - { - char c = dll_major[1]; - dll_major[1] = '\0'; - int maj = atoi (dll_major); - dll_major[1] = c; - int min = atoi (dll_major + 1); - sprintf (pbuf, "DLL version: %d.%d.%.*s", maj, min, len - 11, - buf + 11); - len = strlen (s = pbuf); - } - if (strncmp (s, "dll", 3) == 0) - memcpy (s, "DLL", 3); - else if (strncmp (s, "api", 3) == 0) - memcpy (s, "API", 3); - else if (islower (*s)) - *s = toupper (*s); - fprintf (stdout, "%s %.*s", hello, len, s); - hello = ""; - } - - if (!*hello) - puts (""); - - free (buf_start); - return; -} - -static void -dll_info (const char *path, HANDLE fh, int lvl, int recurse) -{ - DWORD junk; - int i; - int pe_header_offset = get_dword (fh, 0x3c); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - int opthdr_ofs = pe_header_offset + 4 + 20; - unsigned short v[6]; - - if (path == NULL) - { - display_error ("dll_info: NULL passed for path", true, false); - return; - } - - if (SetFilePointer (fh, opthdr_ofs + 40, 0, FILE_BEGIN) == - INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR) - display_error ("dll_info: SetFilePointer()"); - - if (!ReadFile (fh, &v, sizeof (v), &junk, 0)) - display_error ("dll_info: Readfile()"); - - if (verbose) - printf (" - os=%d.%d img=%d.%d sys=%d.%d\n", - v[0], v[1], v[2], v[3], v[4], v[5]); - else - printf ("\n"); - - int num_entries = get_dword (fh, opthdr_ofs + 92); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - int export_rva = get_dword (fh, opthdr_ofs + 96); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - int export_size = get_dword (fh, opthdr_ofs + 100); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - int import_rva = get_dword (fh, opthdr_ofs + 104); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - int import_size = get_dword (fh, opthdr_ofs + 108); - if (GetLastError () != NO_ERROR) - display_error ("get_dword"); - - int nsections = get_word (fh, pe_header_offset + 4 + 2); - if (nsections == -1) - display_error ("get_word"); - char *sections = (char *) malloc (nsections * 40); - - if (SetFilePointer (fh, pe_header_offset + 4 + 20 + - get_word (fh, pe_header_offset + 4 + 16), 0, - FILE_BEGIN) == INVALID_SET_FILE_POINTER - && GetLastError () != NO_ERROR) - display_error ("dll_info: SetFilePointer()"); - - if (!ReadFile (fh, sections, nsections * 40, &junk, 0)) - display_error ("dll_info: Readfile()"); - - if (verbose && num_entries >= 1 && export_size > 0) - { - int expsz; - int expbase = rva_to_offset (export_rva, sections, nsections, &expsz); - - if (expbase) - { - if (SetFilePointer (fh, expbase, 0, FILE_BEGIN) == - INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR) - display_error ("dll_info: SetFilePointer()"); - - unsigned char *exp = (unsigned char *) malloc (expsz); - - if (!ReadFile (fh, exp, expsz, &junk, 0)) - display_error ("dll_info: Readfile()"); - - ExpDirectory *ed = (ExpDirectory *) exp; - int ofs = ed->name_rva - export_rva; - struct tm *tm = localtime ((const time_t *) &(ed->timestamp)); - if (tm->tm_year < 60) - tm->tm_year += 2000; - if (tm->tm_year < 200) - tm->tm_year += 1900; - printf ("%*c", lvl + 2, ' '); - printf ("\"%s\" v%d.%d ts=", exp + ofs, - ed->major_ver, ed->minor_ver); - printf ("%d/%d/%d %d:%02d\n", - tm->tm_year, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min); - } - } - - if (num_entries >= 2 && import_size > 0 && recurse) - { - int impsz; - int impbase = rva_to_offset (import_rva, sections, nsections, &impsz); - if (impbase) - { - if (SetFilePointer (fh, impbase, 0, FILE_BEGIN) == - INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR) - display_error ("dll_info: SetFilePointer()"); - - unsigned char *imp = (unsigned char *) malloc (impsz); - if (imp == NULL) - { - display_error ("dll_info: malloc()"); - return; - } - - if (!ReadFile (fh, imp, impsz, &junk, 0)) - display_error ("dll_info: Readfile()"); - - ImpDirectory *id = (ImpDirectory *) imp; - for (i = 0; id[i].name_rva; i++) - { - /* int ofs = id[i].name_rva - import_rva; */ - track_down ((char *) imp + id[i].name_rva - import_rva, - (char *) ".dll", lvl + 2); - } - } - } - if (strstr (path, "\\cygwin1.dll")) - cygwin_info (fh); -} - -// Return true on success, false if error printed -static bool -track_down (const char *file, const char *suffix, int lvl) -{ - if (file == NULL) - { - display_error ("track_down: NULL passed for file", true, false); - return false; - } - - if (suffix == NULL) - { - display_error ("track_down: NULL passed for suffix", false, false); - return false; - } - - const char *path = find_on_path (file, suffix, false, true); - if (!path) - { - display_error ("track_down: could not find %s\n", file); - return false; - } - - Did *d = already_did (file); - switch (d->state) - { - case DID_NEW: - break; - case DID_ACTIVE: - if (verbose) - { - if (lvl) - printf ("%*c", lvl, ' '); - printf ("%s", path); - printf (" (recursive)\n"); - } - return true; - case DID_INACTIVE: - if (verbose) - { - if (lvl) - printf ("%*c", lvl, ' '); - printf ("%s", path); - printf (" (already done)\n"); - } - return true; - default: - break; - } - - if (lvl) - printf ("%*c", lvl, ' '); - - if (!path) - { - display_error ("file not found - '%s'\n", file); - return false; - } - - printf ("%s", path); - - HANDLE fh = - CreateFile (path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (fh == INVALID_HANDLE_VALUE) - { - display_error ("cannot open - '%s'\n", path); - return false; - } - - d->state = DID_ACTIVE; - - if (is_exe (fh)) - dll_info (path, fh, lvl, 1); - else if (is_symlink (fh)) - display_error ("%s is a symlink instead of a DLL\n", path); - else - { - int magic = get_word (fh, 0x0); - if (magic == -1) - display_error ("get_word"); - magic &= 0x00FFFFFF; - display_error_fmt ("%s is not a DLL: magic number %x (%d) '%s'\n", - path, magic, magic, (char *)&magic); - } - - d->state = DID_INACTIVE; - if (!CloseHandle (fh)) - display_error ("track_down: CloseHandle()"); - return true; -} - -static void -ls (char *f) -{ - HANDLE h = CreateFile (f, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); - BY_HANDLE_FILE_INFORMATION info; - - if (!GetFileInformationByHandle (h, &info)) - display_error ("ls: GetFileInformationByHandle()"); - - SYSTEMTIME systime; - - if (!FileTimeToSystemTime (&info.ftLastWriteTime, &systime)) - display_error ("ls: FileTimeToSystemTime()"); - printf ("%5dk %04d/%02d/%02d %s", - (((int) info.nFileSizeLow) + 512) / 1024, - systime.wYear, systime.wMonth, systime.wDay, f); - dll_info (f, h, 16, 0); - if (!CloseHandle (h)) - display_error ("ls: CloseHandle()"); -} - -/* Remove filename from 's' and return directory name without trailing - backslash, or NULL if 's' doesn't seem to have a dirname. */ -static char * -dirname (const char *s) -{ - static char buf[MAX_PATH]; - - if (!s) - return NULL; - - strncpy (buf, s, MAX_PATH); - buf[MAX_PATH - 1] = '\0'; // in case strlen(s) > MAX_PATH - char *lastsep = strrchr (buf, '\\'); - if (!lastsep) - return NULL; // no backslash -> no dirname - else if (lastsep - buf <= 2 && buf[1] == ':') - lastsep[1] = '\0'; // can't remove backslash of "x:\" - else - *lastsep = '\0'; - return buf; -} - -// Find a real application on the path (possibly following symlinks) -static const char * -find_app_on_path (const char *app, bool showall = false) -{ - const char *papp = find_on_path (app, ".exe", showall, false, true); - - HANDLE fh = - CreateFile (papp, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (fh == INVALID_HANDLE_VALUE) - return NULL; - - if (is_symlink (fh)) - { - static char tmp[SYMLINK_MAX + 1]; - if (!readlink (fh, tmp, SYMLINK_MAX)) - display_error("readlink failed"); - - /* Resolve the linkname relative to the directory of the link. */ - char *ptr = cygpath_rel (dirname (papp), tmp, NULL); - printf (" -> %s\n", ptr); - if (!strchr (ptr, '\\')) - { - char *lastsep; - strncpy (tmp, cygpath (papp, NULL), SYMLINK_MAX); - lastsep = strrchr (tmp, '\\'); - strncpy (lastsep+1, ptr, SYMLINK_MAX - (lastsep-tmp)); - ptr = tmp; - } - if (!CloseHandle (fh)) - display_error ("find_app_on_path: CloseHandle()"); - /* FIXME: We leak the ptr returned by cygpath() here which is a - malloc()d string. */ - return find_app_on_path (ptr, showall); - } - - if (!CloseHandle (fh)) - display_error ("find_app_on_path: CloseHandle()"); - return papp; -} - -// Return true on success, false if error printed -static bool -cygcheck (const char *app) -{ - const char *papp = find_app_on_path (app, 1); - if (!papp) - { - display_error ("could not find '%s'\n", app); - return false; - } - - char *s; - char *sep = strpbrk (papp, ":/\\"); - if (!sep) - { - static char dot[] = "."; - s = dot; - } - else - { - int n = sep - papp; - s = (char *) malloc (n + 2); - memcpy ((char *) s, papp, n); - strcpy (s + n, "\\"); - } - - paths[0].dir = s; - did = NULL; - return track_down (papp, ".exe", 0); -} - - -extern char **environ; - -struct RegInfo -{ - RegInfo *prev; - char *name; - HKEY key; -}; - -static void -show_reg (RegInfo * ri, int nest) -{ - if (!ri) - return; - show_reg (ri->prev, 1); - if (nest) - printf ("%s\\", ri->name); - else - printf ("%s\n", ri->name); -} - -static void -scan_registry (RegInfo * prev, HKEY hKey, char *name, int cygnus) -{ - RegInfo ri; - ri.prev = prev; - ri.name = name; - ri.key = hKey; - - char *cp; - for (cp = name; *cp; cp++) - if (strncasecmp (cp, "cygnus", 6) == 0) - cygnus = 1; - - DWORD num_subkeys, max_subkey_len, num_values; - DWORD max_value_len, max_valdata_len, i; - if (RegQueryInfoKey (hKey, 0, 0, 0, &num_subkeys, &max_subkey_len, 0, - &num_values, &max_value_len, &max_valdata_len, 0, 0) - != ERROR_SUCCESS) - { -#if 0 - char tmp[400]; - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError (), - MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), tmp, 400, 0); - printf ("RegQueryInfoKey: %s\n", tmp); -#endif - return; - } - - if (cygnus) - { - show_reg (&ri, 0); - - char *value_name = (char *) malloc (max_value_len + 1); - if (value_name == NULL) - { - display_error ("scan_registry: malloc()"); - return; - } - - char *value_data = (char *) malloc (max_valdata_len + 1); - if (value_data == NULL) - { - display_error ("scan_registry: malloc()"); - return; - } - - for (i = 0; i < num_values; i++) - { - DWORD dlen = max_valdata_len + 1; - DWORD nlen = max_value_len + 1; - DWORD type; - RegEnumValue (hKey, i, value_name, &nlen, 0, - &type, (BYTE *) value_data, &dlen); - { - printf (" %s = ", i ? value_name : "(default)"); - switch (type) - { - case REG_DWORD: - printf ("0x%08x\n", *(unsigned *) value_data); - break; - case REG_EXPAND_SZ: - case REG_SZ: - printf ("'%s'\n", value_data); - break; - default: - printf ("(unsupported type)\n"); - break; - } - } - } - free (value_name); - free (value_data); - } - - char *subkey_name = (char *) malloc (max_subkey_len + 1); - for (i = 0; i < num_subkeys; i++) - { - if (RegEnumKey (hKey, i, subkey_name, max_subkey_len + 1) == - ERROR_SUCCESS) - { - HKEY sKey; - if (RegOpenKeyEx (hKey, subkey_name, 0, KEY_READ, &sKey) - == ERROR_SUCCESS) - { - scan_registry (&ri, sKey, subkey_name, cygnus); - if (RegCloseKey (sKey) != ERROR_SUCCESS) - display_error ("scan_registry: RegCloseKey()"); - } - } - } - free (subkey_name); -} - -void -pretty_id (const char *s, char *cygwin, size_t cyglen) -{ - char *groups[16384]; - - strcpy (cygwin + cyglen++, " "); - strcpy (cygwin + cyglen, s); - putenv (cygwin); - - char *id = cygpath ("/bin/id.exe", NULL); - for (char *p = id; (p = strchr (p, '/')); p++) - *p = '\\'; - - if (access (id, X_OK)) - { - fprintf (stderr, "'id' program not found\n"); - return; - } - - FILE *f = popen (id, "rt"); - - char buf[16384]; - buf[0] = '\0'; - fgets (buf, sizeof (buf), f); - pclose (f); - char *uid = strtok (buf, ")"); - if (uid) - uid += strlen ("uid="); - else - { - fprintf (stderr, "garbled output from 'id' command - no uid= found\n"); - return; - } - char *gid = strtok (NULL, ")"); - if (gid) - gid += strlen ("gid=") + 1; - else - { - fprintf (stderr, "garbled output from 'id' command - no gid= found\n"); - return; - } - - char **ng = groups - 1; - size_t len_uid = strlen ("UID: )") + strlen (uid); - size_t len_gid = strlen ("GID: )") + strlen (gid); - *++ng = groups[0] = (char *) alloca (len_uid + 1); - *++ng = groups[1] = (char *) alloca (len_gid + 1); - sprintf (groups[0], "UID: %s)", uid); - sprintf (groups[1], "GID: %s)", gid); - size_t sz = max (len_uid, len_gid); - while ((*++ng = strtok (NULL, ","))) - { - char *p = strchr (*ng, '\n'); - if (p) - *p = '\0'; - if (ng == groups + 2) - *ng += strlen (" groups="); - size_t len = strlen (*ng); - if (sz < len) - sz = len; - } - ng--; - - printf ("\nOutput from %s (%s)\n", id, s); - int n = 80 / (int) ++sz; - int i = n > 2 ? n - 2 : 0; - sz = -sz; - for (char **g = groups; g <= ng; g++) - if ((g != ng) && (++i < n)) - printf ("%*s", sz, *g); - else - { - puts (*g); - i = 0; - } -} - -/* This dumps information about each installed cygwin service, if cygrunsrv - is available. */ -void -dump_sysinfo_services () -{ - char buf[1024]; - char buf2[1024]; - FILE *f; - bool no_services = false; - - if (givehelp) - printf ("\nChecking for any Cygwin services... %s\n\n", - verbose ? "" : "(use -v for more detail)"); - else - fputc ('\n', stdout); - - /* find the location of cygrunsrv.exe */ - char *cygrunsrv = cygpath ("/bin/cygrunsrv.exe", NULL); - for (char *p = cygrunsrv; (p = strchr (p, '/')); p++) - *p = '\\'; - - if (access (cygrunsrv, X_OK)) - { - puts ("Can't find the cygrunsrv utility, skipping services check.\n"); - return; - } - - /* check for a recent cygrunsrv */ - snprintf (buf, sizeof (buf), "%s --version", cygrunsrv); - if ((f = popen (buf, "rt")) == NULL) - { - printf ("Failed to execute '%s', skipping services check.\n", buf); - return; - } - int maj, min; - int ret = fscanf (f, "cygrunsrv V%u.%u", &maj, &min); - if (ferror (f) || feof (f) || ret == EOF || maj < 1 || min < 10) - { - puts ("The version of cygrunsrv installed is too old to dump service info.\n"); - return; - } - fclose (f); - - /* For verbose mode, just run cygrunsrv --list --verbose and copy output - verbatim; otherwise run cygrunsrv --list and then cygrunsrv --query for - each service. */ - snprintf (buf, sizeof (buf), (verbose ? "%s --list --verbose" : "%s --list"), - cygrunsrv); - if ((f = popen (buf, "rt")) == NULL) - { - printf ("Failed to execute '%s', skipping services check.\n", buf); - return; - } - - if (verbose) - { - /* copy output to stdout */ - size_t nchars = 0; - while (!feof (f) && !ferror (f)) - nchars += fwrite ((void *) buf, 1, - fread ((void *) buf, 1, sizeof (buf), f), stdout); - - /* cygrunsrv outputs nothing if there are no cygwin services found */ - if (nchars < 1) - no_services = true; - pclose (f); - } - else - { - /* read the output of --list, and then run --query for each service */ - size_t nchars = fread ((void *) buf, 1, sizeof (buf) - 1, f); - buf[nchars] = 0; - pclose (f); - - if (nchars > 0) - for (char *srv = strtok (buf, "\n"); srv; srv = strtok (NULL, "\n")) - { - snprintf (buf2, sizeof (buf2), "%s --query %s", cygrunsrv, srv); - if ((f = popen (buf2, "rt")) == NULL) - { - printf ("Failed to execute '%s', skipping services check.\n", buf2); - return; - } - - /* copy output to stdout */ - while (!feof (f) && !ferror (f)) - fwrite ((void *) buf2, 1, - fread ((void *) buf2, 1, sizeof (buf2), f), stdout); - pclose (f); - } - else - no_services = true; - } - - /* inform the user if nothing found */ - if (no_services) - puts ("No Cygwin services found.\n"); -} - -static void -dump_sysinfo () -{ - int i, j; - char tmp[4000]; - time_t now; - char *found_cygwin_dll; - bool is_nt = false; - bool more_info = true; - char osname[80]; - - printf ("\nCygwin Configuration Diagnostics\n"); - time (&now); - printf ("Current System Time: %s\n", ctime (&now)); - - OSVERSIONINFOEX osversion; - osversion.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); - if (!GetVersionEx (reinterpret_cast<LPOSVERSIONINFO>(&osversion))) - { - more_info = false; - osversion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); - if (!GetVersionEx (reinterpret_cast<LPOSVERSIONINFO>(&osversion))) - display_error ("dump_sysinfo: GetVersionEx()"); - } - - HMODULE k32 = LoadLibrary ("kernel32.dll"); - - switch (osversion.dwPlatformId) - { - case VER_PLATFORM_WIN32s: - strcpy (osname, "32s (not supported)"); - break; - case VER_PLATFORM_WIN32_WINDOWS: - strcpy (osname, "95/98/Me (not supported)"); - break; - case VER_PLATFORM_WIN32_NT: - is_nt = true; - if (osversion.dwMajorVersion == 6) - { - BOOL (WINAPI *GetProductInfo) (DWORD, DWORD, DWORD, DWORD, PDWORD) = - (BOOL (WINAPI *)(DWORD, DWORD, DWORD, DWORD, PDWORD)) - GetProcAddress (k32, "GetProductInfo"); - if (osversion.wProductType == VER_NT_WORKSTATION) - strcpy (osname, "Vista"); - else - strcpy (osname, "2008"); - DWORD prod; - if (GetProductInfo (osversion.dwMajorVersion, - osversion.dwMinorVersion, - osversion.wServicePackMajor, - osversion.wServicePackMinor, - &prod)) - { -#define PRODUCT_UNLICENSED 0xabcdabcd -#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19 - const char *products[] = - { - "", - " Ultimate Edition", - " Home Basic Edition", - " Home Premium Edition", - " Enterprise Edition", - " Home Basic N Edition", - " Business Edition", - " Server Standard Edition", - " Server Datacenter Edition", - " Small Business Server", - " Server Enterprise Edition", - " Starter Edition", - " Server Datacenter Edition Core", - " Server Standard Edition Core", - " Server Enterprise Edition Core", - " Server Enterprise Edition for Itanium-based Systems", - " Business N Edition", - " Web Server Edition", - " Cluster Server Edition", - " Home Server Edition", - " Storage Server Express Edition", - " Storage Server Standard Edition", - " Storage Server Workgroup Edition", - " Storage Server Enterprise Edition", - " Server for Small Business Edition", - " Small Business Server Premium Edition" - }; - if (prod == PRODUCT_UNLICENSED) - strcat (osname, "Unlicensed"); - else if (prod > PRODUCT_SMALLBUSINESS_SERVER_PREMIUM) - strcat (osname, ""); - else - strcat (osname, products[prod]); - } - else - { - } - } - else if (osversion.dwMajorVersion == 5) - { - if (osversion.dwMinorVersion == 0) - { - strcpy (osname, "2000"); - if (osversion.wProductType == VER_NT_WORKSTATION) - strcat (osname, " Professional"); - else if (osversion.wSuiteMask & VER_SUITE_DATACENTER) - strcat (osname, " Datacenter Server"); - else if (osversion.wSuiteMask & VER_SUITE_ENTERPRISE) - strcat (osname, " Advanced Server"); - else - strcat (osname, " Server"); - } - else if (osversion.dwMinorVersion == 1) - { - strcpy (osname, "XP"); - if (GetSystemMetrics (SM_MEDIACENTER)) - strcat (osname, " Media Center Edition"); - else if (GetSystemMetrics (SM_TABLETPC)) - strcat (osname, " Tablet PC Edition"); - else if (GetSystemMetrics (SM_STARTER)) - strcat (osname, " Starter Edition"); - else if (osversion.wSuiteMask & VER_SUITE_PERSONAL) - strcat (osname, " Home Edition"); - else - strcat (osname, " Professional"); - } - else if (osversion.dwMinorVersion == 2) - { - strcpy (osname, "2003 Server"); - if (GetSystemMetrics (SM_SERVERR2)) - strcat (osname, " R2"); - if (osversion.wSuiteMask & VER_SUITE_BLADE) - strcat (osname, " Web Edition"); - else if (osversion.wSuiteMask & VER_SUITE_DATACENTER) - strcat (osname, " Datacenter Edition"); - else if (osversion.wSuiteMask & VER_SUITE_ENTERPRISE) - strcat (osname, " Enterprise Edition"); - else if (osversion.wSuiteMask & VER_SUITE_COMPUTE_SERVER) - strcat (osname, " Compute Cluster Edition"); - } - } - else if (osversion.dwMajorVersion == 4) - { - strcpy (osname, "NT 4"); - if (more_info) - { - if (osversion.wProductType == VER_NT_WORKSTATION) - strcat (osname, " Workstation"); - else - { - strcat (osname, " Server"); - if (osversion.wSuiteMask & VER_SUITE_ENTERPRISE) - strcat (osname, " Enterprise Edition"); - } - } - } - else - strcpy (osname, "NT"); - break; - default: - strcpy (osname, "??"); - break; - } - printf ("Windows %s Ver %lu.%lu Build %lu %s\n", osname, - osversion.dwMajorVersion, osversion.dwMinorVersion, - osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ? - osversion.dwBuildNumber : (osversion.dwBuildNumber & 0xffff), - osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ? - osversion.szCSDVersion : ""); - - if (osversion.dwPlatformId == VER_PLATFORM_WIN32s - || osversion.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) - exit (EXIT_FAILURE); - - BOOL (WINAPI *wow64_func) (HANDLE, PBOOL) = (BOOL (WINAPI *) (HANDLE, PBOOL)) - GetProcAddress (k32, "IsWow64Process"); - BOOL is_wow64 = FALSE; - if (wow64_func && wow64_func (GetCurrentProcess (), &is_wow64) && is_wow64) - { - void (WINAPI *nativinfo) (LPSYSTEM_INFO) = (void (WINAPI *) - (LPSYSTEM_INFO)) GetProcAddress (k32, "GetNativeSystemInfo"); - SYSTEM_INFO natinfo; - nativinfo (&natinfo); - fputs ("\nRunning under WOW64 on ", stdout); - switch (natinfo.wProcessorArchitecture) - { - case PROCESSOR_ARCHITECTURE_IA64: - puts ("IA64"); - break; - case PROCESSOR_ARCHITECTURE_AMD64: - puts ("AMD64"); - break; - default: - puts("??"); - break; - } - } - - if (GetSystemMetrics (SM_REMOTESESSION)) - printf ("\nRunning in Terminal Service session\n"); - - printf ("\nPath:"); - char *s = getenv ("PATH"), *e; - if (!s) - puts (""); - else - { - char sep = strchr (s, ';') ? ';' : ':'; - int count_path_items = 0; - while (1) - { - for (e = s; *e && *e != sep; e++); - if (e-s) - printf ("\t%.*s\n", e - s, s); - else - puts ("\t."); - count_path_items++; - if (!*e) - break; - s = e + 1; - } - } - - fflush (stdout); - - char *cygwin = getenv ("CYGWIN"); - if (cygwin) - cygwin -= strlen ("CYGWIN="); - else - cygwin = const_cast <char *> ("CYGWIN="); - size_t cyglen = strlen (cygwin); - cygwin = strcpy ((char *) malloc (cyglen + sizeof (" nontsec")), cygwin); - pretty_id ("nontsec", cygwin, cyglen); - pretty_id ("ntsec", cygwin, cyglen); - cygwin[cyglen] = 0; - putenv (cygwin); - - if (!GetSystemDirectory (tmp, 4000)) - display_error ("dump_sysinfo: GetSystemDirectory()"); - printf ("\nSysDir: %s\n", tmp); - - GetWindowsDirectory (tmp, 4000); - printf ("WinDir: %s\n\n", tmp); - - - if (givehelp) - printf ("Here's some environment variables that may affect cygwin:\n"); - for (i = 0; environ[i]; i++) - { - char *eq = strchr (environ[i], '='); - if (!eq) - continue; - /* int len = eq - environ[i]; */ - for (j = 0; known_env_vars[j]; j++) - { - *eq = 0; - if (strcmp (environ[i], "PATH") == 0) - continue; /* we handle this one specially */ - if (strcasecmp (environ[i], known_env_vars[j]) == 0) - printf ("%s = '%s'\n", environ[i], eq + 1); - *eq = '='; - } - } - printf ("\n"); - - if (verbose) - { - if (givehelp) - printf ("Here's the rest of your environment variables:\n"); - for (i = 0; environ[i]; i++) - { - int found = 0; - char *eq = strchr (environ[i], '='); - if (!eq) - continue; - /* int len = eq - environ[i]; */ - for (j = 0; known_env_vars[j]; j++) - { - *eq = 0; - if (strcasecmp (environ[i], known_env_vars[j]) == 0) - found = 1; - *eq = '='; - } - if (!found) - { - *eq = 0; - printf ("%s = '%s'\n", environ[i], eq + 1); - *eq = '='; - } - } - printf ("\n"); - } - - if (registry) - { - if (givehelp) - printf ("Scanning registry for keys with 'Cygnus' in them...\n"); -#if 0 - /* big and not generally useful */ - scan_registry (0, HKEY_CLASSES_ROOT, (char *) "HKEY_CLASSES_ROOT", 0); -#endif - scan_registry (0, HKEY_CURRENT_CONFIG, - (char *) "HKEY_CURRENT_CONFIG", 0); - scan_registry (0, HKEY_CURRENT_USER, (char *) "HKEY_CURRENT_USER", 0); - scan_registry (0, HKEY_LOCAL_MACHINE, (char *) "HKEY_LOCAL_MACHINE", 0); -#if 0 - /* the parts we need are duplicated in HKEY_CURRENT_USER anyway */ - scan_registry (0, HKEY_USERS, (char *) "HKEY_USERS", 0); -#endif - printf ("\n"); - } - else - printf ("Use '-r' to scan registry\n\n"); - - if (givehelp) - { - printf ("Listing available drives...\n"); - printf ("Drv Type Size Used Flags Name\n"); - } - int prev_mode = - SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); - int drivemask = GetLogicalDrives (); - - BOOL (WINAPI * gdfse) (LPCSTR, long long *, long long *, long long *) = - (BOOL (WINAPI *) (LPCSTR, long long *, long long *, long long *)) - GetProcAddress (k32, "GetDiskFreeSpaceExA"); - - for (i = 0; i < 26; i++) - { - if (!(drivemask & (1 << i))) - continue; - char drive[4], name[200], fsname[200]; - DWORD serno = 0, maxnamelen = 0, flags = 0; - name[0] = name[0] = fsname[0] = 0; - sprintf (drive, "%c:\\", i + 'a'); - /* Report all errors, except if the Volume is ERROR_NOT_READY. - ERROR_NOT_READY is returned when removeable media drives are empty - (CD, floppy, etc.) */ - if (!GetVolumeInformation (drive, name, sizeof (name), &serno, - &maxnamelen, &flags, fsname, - sizeof (fsname)) - && GetLastError () != ERROR_NOT_READY) - { -# define FMT "dump_sysinfo: GetVolumeInformation() for drive %c:" - char buf[sizeof (FMT)]; - sprintf (buf, FMT, 'A' + i); - display_error (buf); -# undef FMT - } - - int dtype = GetDriveType (drive); - char drive_type[4] = "unk"; - switch (dtype) - { - case DRIVE_REMOVABLE: - strcpy (drive_type, "fd "); - break; - case DRIVE_FIXED: - strcpy (drive_type, "hd "); - break; - case DRIVE_REMOTE: - strcpy (drive_type, "net"); - break; - case DRIVE_CDROM: - strcpy (drive_type, "cd "); - break; - case DRIVE_RAMDISK: - strcpy (drive_type, "ram"); - break; - default: - strcpy (drive_type, "unk"); - } - - long capacity_mb = -1; - int percent_full = -1; - - long long free_me = 0ULL, free_bytes = 0ULL, total_bytes = 1ULL; - if (gdfse != NULL && gdfse (drive, &free_me, &total_bytes, &free_bytes)) - { - capacity_mb = total_bytes / (1024L * 1024L); - percent_full = 100 - (int) ((100.0 * free_me) / total_bytes); - } - else - { - DWORD spc = 0, bps = 0, fc = 0, tc = 1; - if (GetDiskFreeSpace (drive, &spc, &bps, &fc, &tc)) - { - capacity_mb = (spc * bps * tc) / (1024 * 1024); - percent_full = 100 - (int) ((100.0 * fc) / tc); - } - } - - printf ("%.2s %s %-6s ", drive, drive_type, fsname); - if (capacity_mb >= 0) - printf ("%7dMb %3d%% ", (int) capacity_mb, (int) percent_full); - else - printf (" N/A N/A "); - printf ("%s %s %s %s %s %s %s\n", - flags & FS_CASE_IS_PRESERVED ? "CP" : " ", - flags & FS_CASE_SENSITIVE ? "CS" : " ", - flags & FS_UNICODE_STORED_ON_DISK ? "UN" : " ", - flags & FS_PERSISTENT_ACLS ? "PA" : " ", - flags & FS_FILE_COMPRESSION ? "FC" : " ", - flags & FS_VOL_IS_COMPRESSED ? "VC" : " ", -#if 0 - flags & FILE_SUPPORTS_ENCRYPTION ? "EN" : " ", - flags & FILE_SUPPORTS_OBJECT_IDS ? "OI" : " ", - flags & FILE_SUPPORTS_REPARSE_POINTS ? "RP" : " ", - flags & FILE_SUPPORTS_SPARSE_FILES ? "SP" : " ", - flags & FILE_VOLUME_QUOTAS ? "QU" : " ", -#endif - name); - } - - if (!FreeLibrary (k32)) - display_error ("dump_sysinfo: FreeLibrary()"); - SetErrorMode (prev_mode); - if (givehelp) - { - puts ("\n" - "fd = floppy, hd = hard drive, cd = CD-ROM\n" - "net= Network Share, ram= RAM drive, unk= Unknown\n" - "CP = Case Preserving, CS = Case Sensitive, UN = Unicode\n" - "PA = Persistent ACLS, FC = File Compression, VC = Volume Compression"); - } - printf ("\n"); - - unsigned ml_fsname = 4, ml_dir = 7, ml_type = 6; - bool ml_trailing = false; - - struct mntent *mnt; - setmntent (0, 0); - while ((mnt = getmntent (0))) - { - unsigned n = (int) strlen (mnt->mnt_fsname); - ml_trailing |= (n > 1 && strchr ("\\/", mnt->mnt_fsname[n - 1])); - if (ml_fsname < n) - ml_fsname = n; - n = (int) strlen (mnt->mnt_dir); - ml_trailing |= (n > 1 && strchr ("\\/", mnt->mnt_dir[n - 1])); - if (ml_dir < n) - ml_dir = n; - } - - if (ml_trailing) - puts ("Warning: Mount entries should not have a trailing (back)slash\n"); - - if (givehelp) - { - printf - ("Mount entries: these map POSIX directories to your NT drives.\n"); - printf ("%-*s %-*s %-*s %s\n", ml_fsname, "-NT-", ml_dir, "-POSIX-", - ml_type, "-Type-", "-Flags-"); - } - - setmntent (0, 0); - while ((mnt = getmntent (0))) - { - printf ("%-*s %-*s %-*s %s\n", - ml_fsname, mnt->mnt_fsname, - ml_dir, mnt->mnt_dir, ml_type, mnt->mnt_type, mnt->mnt_opts); - } - printf ("\n"); - - if (givehelp) - printf - ("Looking to see where common programs can be found, if at all...\n"); - for (i = 0; common_apps[i].name; i++) - if (!find_app_on_path ((char *) common_apps[i].name, 1)) - { - if (common_apps[i].missing_is_good) - printf ("Not Found: %s (good!)\n", common_apps[i].name); - else - printf ("Not Found: %s\n", common_apps[i].name); - } - printf ("\n"); - - if (givehelp) - printf ("Looking for various Cygwin DLLs... (-v gives version info)\n"); - int cygwin_dll_count = 0; - char cygdll_path[32768]; - for (pathlike *pth = paths; pth->dir; pth++) - { - WIN32_FIND_DATA ffinfo; - sprintf (tmp, "%s*.*", pth->dir); - HANDLE ff = FindFirstFile (tmp, &ffinfo); - int found = (ff != INVALID_HANDLE_VALUE); - found_cygwin_dll = NULL; - while (found) - { - char *f = ffinfo.cFileName; - if (strcasecmp (f + strlen (f) - 4, ".dll") == 0) - { - if (strncasecmp (f, "cyg", 3) == 0) - { - sprintf (tmp, "%s%s", pth->dir, f); - if (strcasecmp (f, "cygwin1.dll") == 0) - { - if (!cygwin_dll_count) - strcpy (cygdll_path, pth->dir); - if (!cygwin_dll_count - || strcasecmp (cygdll_path, pth->dir) != 0) - cygwin_dll_count++; - found_cygwin_dll = strdup (tmp); - } - else - ls (tmp); - } - } - found = FindNextFile (ff, &ffinfo); - } - if (found_cygwin_dll) - { - ls (found_cygwin_dll); - free (found_cygwin_dll); - } - - FindClose (ff); - } - if (cygwin_dll_count > 1) - puts ("Warning: There are multiple cygwin1.dlls on your path"); - if (!cygwin_dll_count) - puts ("Warning: cygwin1.dll not found on your path"); - - dump_dodgy_apps (verbose); - - if (is_nt) - dump_sysinfo_services (); -} - -static int -check_keys () -{ - HANDLE h = CreateFileA ("CONIN$", GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - - if (h == INVALID_HANDLE_VALUE || h == NULL) - return (display_error ("check_keys: Opening CONIN$")); - - DWORD mode; - - if (!GetConsoleMode (h, &mode)) - display_error ("check_keys: GetConsoleMode()"); - else - { - mode &= ~ENABLE_PROCESSED_INPUT; - if (!SetConsoleMode (h, mode)) - display_error ("check_keys: SetConsoleMode()"); - } - - fputs ("\nThis key check works only in a console window,", stderr); - fputs (" _NOT_ in a terminal session!\n", stderr); - fputs ("Abort with Ctrl+C if in a terminal session.\n\n", stderr); - fputs ("Press 'q' to exit.\n", stderr); - - INPUT_RECORD in, prev_in; - - // Drop first <RETURN> key - ReadConsoleInput (h, &in, 1, &mode); - - memset (&in, 0, sizeof in); - - do - { - prev_in = in; - if (!ReadConsoleInput (h, &in, 1, &mode)) - display_error ("check_keys: ReadConsoleInput()"); - - if (!memcmp (&in, &prev_in, sizeof in)) - continue; - - switch (in.EventType) - { - case KEY_EVENT: - printf ("%s %ux VK: 0x%02x VS: 0x%02x A: 0x%02x CTRL: ", - in.Event.KeyEvent.bKeyDown ? "Pressed " : "Released", - in.Event.KeyEvent.wRepeatCount, - in.Event.KeyEvent.wVirtualKeyCode, - in.Event.KeyEvent.wVirtualScanCode, - (unsigned char) in.Event.KeyEvent.uChar.AsciiChar); - fputs (in.Event.KeyEvent.dwControlKeyState & CAPSLOCK_ON ? - "CL " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & ENHANCED_KEY ? - "EK " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & LEFT_ALT_PRESSED ? - "LA " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & LEFT_CTRL_PRESSED ? - "LC " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & NUMLOCK_ON ? - "NL " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & RIGHT_ALT_PRESSED ? - "RA " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & RIGHT_CTRL_PRESSED ? - "RC " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & SCROLLLOCK_ON ? - "SL " : "-- ", stdout); - fputs (in.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED ? - "SH " : "-- ", stdout); - fputc ('\n', stdout); - break; - - default: - break; - } - } - while (in.EventType != KEY_EVENT || - in.Event.KeyEvent.bKeyDown != FALSE || - in.Event.KeyEvent.uChar.AsciiChar != 'q'); - - CloseHandle (h); - return 0; -} - -/* RFC1738 says that these do not need to be escaped. */ -static const char safe_chars[] = "$-_.+!*'(),"; - -/* the URL to query. */ -static const char base_url[] = - "http://cygwin.com/cgi-bin2/package-grep.cgi?text=1&grep="; - -/* Queries Cygwin web site for packages containing files matching a regexp. - Return value is 1 if there was a problem, otherwise 0. */ -static int -package_grep (char *search) -{ - char buf[1024]; - - /* Attempt to dynamically load the necessary WinInet API functions so that - cygcheck can still function on older systems without IE. */ - HMODULE hWinInet; - if (!(hWinInet = LoadLibrary ("wininet.dll"))) - { - fputs ("Unable to locate WININET.DLL. This feature requires Microsoft " - "Internet Explorer v3 or later to function.\n", stderr); - return 1; - } - - /* InternetCloseHandle is used outside this function so it is declared - global. The rest of these functions are only used here, so declare them - and call GetProcAddress for each of them with the following macro. */ - - pInternetCloseHandle = (BOOL (WINAPI *) (HINTERNET)) - GetProcAddress (hWinInet, "InternetCloseHandle"); -#define make_func_pointer(name, ret, args) ret (WINAPI * p##name) args = \ - (ret (WINAPI *) args) GetProcAddress (hWinInet, #name); - make_func_pointer (InternetAttemptConnect, DWORD, (DWORD)); - make_func_pointer (InternetOpenA, HINTERNET, (LPCSTR, DWORD, LPCSTR, LPCSTR, - DWORD)); - make_func_pointer (InternetOpenUrlA, HINTERNET, (HINTERNET, LPCSTR, LPCSTR, - DWORD, DWORD, DWORD)); - make_func_pointer (InternetReadFile, BOOL, (HINTERNET, PVOID, DWORD, PDWORD)); - make_func_pointer (HttpQueryInfoA, BOOL, (HINTERNET, DWORD, PVOID, PDWORD, - PDWORD)); -#undef make_func_pointer - - if(!pInternetCloseHandle || !pInternetAttemptConnect || !pInternetOpenA - || !pInternetOpenUrlA || !pInternetReadFile || !pHttpQueryInfoA) - { - fputs ("Unable to load one or more functions from WININET.DLL. This " - "feature requires Microsoft Internet Explorer v3 or later to " - "function.\n", stderr); - return 1; - } - - /* construct the actual URL by escaping */ - char *url = (char *) alloca (sizeof (base_url) + strlen (search) * 3); - strcpy (url, base_url); - - char *dest; - for (dest = &url[sizeof (base_url) - 1]; *search; search++) - { - if (isalnum (*search) - || memchr (safe_chars, *search, sizeof (safe_chars) - 1)) - { - *dest++ = *search; - } - else - { - *dest++ = '%'; - sprintf (dest, "%02x", (unsigned char) *search); - dest += 2; - } - } - *dest = 0; - - /* Connect to the net and open the URL. */ - if (pInternetAttemptConnect (0) != ERROR_SUCCESS) - { - fputs ("An internet connection is required for this function.\n", stderr); - return 1; - } - - /* Initialize WinInet and attempt to fetch our URL. */ - HINTERNET hi = NULL, hurl = NULL; - if (!(hi = pInternetOpenA ("cygcheck", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0))) - return display_internet_error ("InternetOpen() failed", NULL); - - if (!(hurl = pInternetOpenUrlA (hi, url, NULL, 0, 0, 0))) - return display_internet_error ("unable to contact cygwin.com site, " - "InternetOpenUrl() failed", hi, NULL); - - /* Check the HTTP response code. */ - DWORD rc = 0, rc_s = sizeof (DWORD); - if (!pHttpQueryInfoA (hurl, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, - (void *) &rc, &rc_s, NULL)) - return display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL); - - if (rc != HTTP_STATUS_OK) - { - sprintf (buf, "error retrieving results from cygwin.com site, " - "HTTP status code %lu", rc); - return display_internet_error (buf, hurl, hi, NULL); - } - - /* Fetch result and print to stdout. */ - DWORD numread; - do - { - if (!pInternetReadFile (hurl, (void *) buf, sizeof (buf), &numread)) - return display_internet_error ("InternetReadFile failed", hurl, hi, NULL); - if (numread) - fwrite ((void *) buf, (size_t) numread, 1, stdout); - } - while (numread); - - pInternetCloseHandle (hurl); - pInternetCloseHandle (hi); - return 0; -} - -static void -usage (FILE * stream, int status) -{ - fprintf (stream, "\ -Usage: cygcheck PROGRAM [ -v ] [ -h ]\n\ - cygcheck -c [ PACKAGE ] [ -d ]\n\ - cygcheck -s [ -r ] [ -v ] [ -h ]\n\ - cygcheck -k\n\ - cygcheck -f FILE [ FILE ... ]\n\ - cygcheck -l [ PACKAGE ] [ PACKAGE ... ]\n\ - cygcheck -p REGEXP\n\ -List system information, check installed packages, or query package database.\n\ -\n\ -At least one command option or a PROGRAM is required, as shown above.\n\ -\n\ - PROGRAM list library (DLL) dependencies of PROGRAM\n\ - -c, --check-setup show installed version of PACKAGE and verify integrity\n\ - (or for all installed packages if none specified)\n\ - -d, --dump-only just list packages, do not verify (with -c)\n\ - -s, --sysinfo produce diagnostic system information (implies -c -d)\n\ - -r, --registry also scan registry for Cygwin settings (with -s)\n\ - -k, --keycheck perform a keyboard check session (must be run from a\n\ - plain console only, not from a pty/rxvt/xterm)\n\ - -f, --find-package find the package that FILE belongs to\n\ - -l, --list-package list contents of PACKAGE (or all packages if none given)\n\ - -p, --package-query search for REGEXP in the entire cygwin.com package\n\ - repository (requies internet connectivity)\n\ - -v, --verbose produce more verbose output\n\ - -h, --help annotate output with explanatory comments when given\n\ - with another command, otherwise print this help\n\ - -V, --version print the version of cygcheck and exit\n\ -\n\ -Note: -c, -f, and -l only report on packages that are currently installed. To\n\ - search all official Cygwin packages use -p instead. The -p REGEXP matches\n\ - package names, descriptions, and names of files/paths within all packages.\n\ -\n"); - exit (status); -} - -struct option longopts[] = { - {"check-setup", no_argument, NULL, 'c'}, - {"dump-only", no_argument, NULL, 'd'}, - {"sysinfo", no_argument, NULL, 's'}, - {"registry", no_argument, NULL, 'r'}, - {"verbose", no_argument, NULL, 'v'}, - {"keycheck", no_argument, NULL, 'k'}, - {"find-package", no_argument, NULL, 'f'}, - {"list-package", no_argument, NULL, 'l'}, - {"package-query", no_argument, NULL, 'p'}, - {"help", no_argument, NULL, 'h'}, - {"version", no_argument, 0, 'V'}, - {0, no_argument, NULL, 0} -}; - -static char opts[] = "cdsrvkflphV"; - -static void -print_version () -{ - const char *v = strchr (version, ':'); - int len; - if (!v) - { - v = "?"; - len = 1; - } - else - { - v += 2; - len = strchr (v, ' ') - v; - } - printf ("\ -cygcheck version %.*s\n\ -System Checker for Cygwin\n\ -Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat, Inc.\n\ -Compiled on %s\n\ -", len, v, __DATE__); -} - -void -nuke (char *ev) -{ - int n = 1 + strchr (ev, '=') - ev; - char *s = (char *) alloca (n + 1); - memcpy (s, ev, n); - s[n] = '\0'; - putenv (s); -} - -extern "C" { -unsigned long (*cygwin_internal) (int, ...); -}; - -static void -load_cygwin (int& argc, char **&argv) -{ - HMODULE h; - - if (!(h = LoadLibrary ("cygwin1.dll"))) - return; - if ((cygwin_internal = (DWORD (*) (int, ...)) GetProcAddress (h, "cygwin_internal"))) - { - char **av = (char **) cygwin_internal (CW_ARGV); - if (av && ((DWORD) av != (DWORD) -1)) - { - /* Copy cygwin's idea of the argument list into this Window application. */ - for (argc = 0; av[argc]; argc++) - continue; - argv = (char **) calloc (argc + 1, sizeof (char *)); - for (char **argvp = argv; *av; av++) - *argvp++ = strdup (*av); - } - - - char **envp = (char **) cygwin_internal (CW_ENVP); - if (envp && ((DWORD) envp != (DWORD) -1)) - { - /* Store path and revert to this value, otherwise path gets overwritten - by the POSIXy Cygwin variation, which breaks cygcheck. - Another approach would be to use the Cygwin PATH and convert it to - Win32 again. */ - char *path = NULL; - char **env; - while (*(env = _environ)) - { - if (strncmp (*env, "PATH=", 5) == 0) - path = strdup (*env); - nuke (*env); - } - for (char **ev = envp; *ev; ev++) - if (strncmp (*ev, "PATH=", 5) != 0) - putenv (*ev); - if (path) - putenv (path); - } - } - FreeLibrary (h); -} - -int -main (int argc, char **argv) -{ - int i; - bool ok = true; - load_cygwin (argc, argv); - - /* Need POSIX sorting while parsing args, but don't forget the - user's original environment. */ - char *posixly = getenv ("POSIXLY_CORRECT"); - if (posixly == NULL) - (void) putenv("POSIXLY_CORRECT=1"); - while ((i = getopt_long (argc, argv, opts, longopts, NULL)) != EOF) - switch (i) - { - case 's': - sysinfo = 1; - break; - case 'c': - check_setup = 1; - break; - case 'd': - dump_only = 1; - break; - case 'r': - registry = 1; - break; - case 'v': - verbose = 1; - break; - case 'k': - keycheck = 1; - break; - case 'f': - find_package = 1; - break; - case 'l': - list_package = 1; - break; - case 'p': - grep_packages = 1; - break; - case 'h': - givehelp = 1; - break; - case 'V': - print_version (); - exit (0); - default: - usage (stderr, 1); - /*NOTREACHED*/} - argc -= optind; - argv += optind; - if (posixly == NULL) - putenv ("POSIXLY_CORRECT="); - - if (argc == 0 && !sysinfo && !keycheck && !check_setup && !list_package) - if (givehelp) - usage (stdout, 0); - else - usage (stderr, 1); - - if ((check_setup || sysinfo || find_package || list_package || grep_packages) - && keycheck) - usage (stderr, 1); - - if ((find_package || list_package || grep_packages) && check_setup) - usage (stderr, 1); - - if (dump_only && !check_setup) - usage (stderr, 1); - - if (find_package + list_package + grep_packages > 1) - usage (stderr, 1); - - if (keycheck) - return check_keys (); - if (grep_packages) - return package_grep (*argv); - - init_paths (); - - /* FIXME: Add help for check_setup and {list,find}_package */ - if (argc >= 1 && givehelp && !check_setup && !find_package && !list_package) - { - printf("Here is where the OS will find your program%s, and which dlls\n", - argc > 1 ? "s" : ""); - printf ("will be used for it. Use -v to see DLL version info\n"); - - if (!sysinfo) - printf ("\n"); - } - - if (check_setup) - dump_setup (verbose, argv, !dump_only); - else if (find_package) - package_find (verbose, argv); - else if (list_package) - package_list (verbose, argv); - else - for (i = 0; i < argc; i++) - { - if (i) - puts (""); - ok &= cygcheck (argv[i]); - } - - if (sysinfo) - { - dump_sysinfo (); - if (!check_setup) - { - puts (""); - dump_setup (verbose, NULL, false); - } - - if (!givehelp) - puts ("Use -h to see help about each section"); - } - - return ok ? EXIT_SUCCESS : EXIT_FAILURE; -} |