1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
|
2006-03-09 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Move existance check for oldpath further up
to the start of the function. Avoid another case of a name collision
if oldpath is a shortcut and a file or directory newpath already exists.
2006-03-09 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (NtClose): Define.
(NtOpenDirectoryObject): Define.
(NtQueryDirectoryObject): Define.
* fhandler_proc.cc: Include ctype.h and wchar.h.
(format_proc_partitions): Revamp loop over existing harddisks by
scanning the NT native \Device object directory and looking for
Harddisk entries.
* ntdll.h: Rearrange system call declarations alphabetically.
(DIRECTORY_QUERY): Define.
(struct _DIRECTORY_BASIC_INFORMATION): Define.
(NtOpenDirectoryObject): Declare.
(NtQueryDirectoryObject): Declare.
2006-03-08 Christopher Faylor <cgf@timesys.com>
* cygtls.h (_cygtls::retaddr): New method.
* dll_init.cc (cygwin_detach_dll): Use new tls method to find return
address since this function is now signal guarded.
(update_envptrs): Remove unneeded braces.
* syscalls.cc (statvfs): Coerce full_path to avoid a gcc warning.
2006-03-08 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (statvfs): Simplify path name expression.
2006-03-08 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc: Include winioctl.h.
(statvfs): Request correct volume size using DeviceIoControl if
quotas are enforced on the file system.
2006-03-03 Corinna Vinschen <corinna@vinschen.de>
* dir.cc (opendir): Fix indentation.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Move storing
fhandler in file descriptor table to some point very late in function
to avoid double free'ing. Add comment to explain what happens.
Add label free_mounts and don't forget to delete __DIR_mounts structure
if NtOpenFile fails.
2006-03-02 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (chroot): Disallow chroot into special directories.
Return EPERM instead.
2006-03-02 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (__DIR_mounts::check_missing_mount): Check
cygdrive string length for those who have cygdrive mapped to "/".
2006-03-01 Corinna Vinschen <corinna@vinschen.de>
* sec_helper.cc (set_cygwin_privileges): Request SE_BACKUP_NAME
privileges.
2006-03-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler_proc.cc (fhandler_proc::fstat): Always return fixed link
count of 1 for /proc directory instead of incorrect PROC_LINK_COUNT.
2006-03-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (enum dirent_states): Remove dirent_saw_cygdrive,
dirent_saw_dev and dirent_saw_proc.
(fhandler_cygdrive::open): Declare.
(fhandler_cygdrive::close): Declare.
* fhandler_disk_file.cc (class __DIR_mounts): Move to beginning of file.
(__DIR_mounts::check_mount): New parameter to indicate if inode number
is needed in calling function or not. Add /proc and /cygdrive handling.
(__DIR_mounts::check_missing_mount): Ditto.
(path_conv::ndisk_links): Use __DIR_mounts class to create correct
hardlink count for directories with mount points in them.
(fhandler_disk_file::readdir_helper): Remove /dev, /proc and /cygdrive
handling.
(fhandler_cygdrive::open): New method.
(fhandler_cygdrive::close): New method.
(fhandler_cygdrive::fstat): Always return fixed inode number 2 and
fixed link count of 1. Drop call to set_drives.
(fhandler_cygdrive::opendir): Drop call to get_namehash.
(fhandler_cygdrive::readdir): Handle "." entry to return fixed inode
number 2.
2006-03-01 Christopher Faylor <cgf@timesys.com>
* cygwin.din: Fix some erroneous SIGFE/NOSIGFE settings.
2006-03-01 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::callfunc): Revert below change. Make ev a
manual reset event again. so that it will be reset by WaitFor*Object
as appropriate.
(cygthread::stub): Ditto.
(cygthread::terminate_thread): Reset ev if it was found to have been
set.
2006-03-01 Christopher Faylor <cgf@timesys.com>
* analyze_sigfe: New script.
* dllfixdbg: Add copyright.
* gendef: Ditto.
* gendevices: Ditto.
* gentls_offsets: Ditto.
2006-03-01 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::callfunc): Create ev as an auto-reset event
so that it will be reset by WaitFor*Object as appropriate.
(cygthread::stub): Ditto.
(cygthread::terminate_thread): Remove forced setting of thread
termination.
2006-03-01 Corinna Vinschen <corinna@vinschen.de>
* include/sys/dirent.h (struct __DIR): Rename __d_unused to
__d_internal.
* fhandler_disk_file.cc (struct __DIR_cache): Remove useless "typedef".
(d_dirname): Remove useless "struct".
(d_cachepos): Ditto.
(d_cache): Ditto.
(class __DIR_mounts): New class, implementing mount point tracking
for readdir.
(d_mounts): New macro for easy access to __DIR_mounts structure.
(fhandler_disk_file::opendir): Allocate __DIR_mounts structure and
let __d_internal element of dir point to it.
(fhandler_disk_file::readdir_helper): Add mount points in the current
directory, which don't have a real directory backing them.
Don't generate an inode number for /dev. Add comment, why.
(fhandler_disk_file::readdir): Move filling fname to an earlier point.
Check if current entry is a mount point and evaluate correct inode
number for it.
(fhandler_disk_file::readdir_9x): Ditto.
(fhandler_disk_file::rewinddir): Set all mount points in this directory
to "not found" so that they are listed again after calling rewinddir().
(fhandler_disk_file::closedir): Deallocate __DIR_mounts structure.
* path.cc (mount_info::get_mounts_here): New method to evaluate a list
of mount points in a given parent directory.
* shared_info.h (class mount_info): Declare get_mounts_here.
2006-02-28 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Use iscygdrive
instead of isspecial.
* path.h (path_conv::iscygdrive): New method.
2006-02-28 Christopher Faylor <cgf@timesys.com>
* exceptions.cc (_cygtls::interrupt_now): Remove "inside cygwin" check
since some cygwin functions are meant to be interrupted.
2006-02-28 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din: Export __isinff, __isinfd, __isnanf, __isnand.
* include/cygwin/version.h: Bump API minor number to 155.
2006-02-28 Corinna Vinschen <corinna@vinschen.de>
* dir.cc (readdir_worker): Use slash as path separator when evaluating
namehash for paths below /proc.
* fhandler_netdrive.cc (fhandler_netdrive::readdir): Use expensive
inode number evaluation on share names.
2006-02-27 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set
d_cachepos under NT or suffer memory corruption.
(fhandler_disk_file::readdir_helper): Avoid else with a return. Just
calculate extension location once when doing symlink checks.
(fhandler_disk_file::readdir): Make debug output more useful.
(fhandler_disk_file::readdir_9x): Ditto. Eliminate redundant variable.
2006-02-27 Christopher Faylor <cgf@timesys.com>
* include/sys/termios.h (cfsetispeed): Just define as a function rather
than resorting to a macro.
(cfsetospeed): Ditto.
2006-02-27 Christopher Faylor <cgf@timesys.com>
* sigproc.cc: Fix a comment.
2006-02-27 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::release): Add a comment.
2006-02-27 Corinna Vinschen <corinna@vinschen.de>
* fhandler_netdrive.cc (fhandler_netdrive::fstat): Create unambiguous
inode number.
(fhandler_netdrive::readdir): Ditto.
2006-02-24 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (sigheld): Define new variable.
(sig_dispatch_pending): Don't check sigq since that's racy.
(sig_send): Set sigheld flag if __SIGHOLD is specified, reset it if
__SIGNOHOLD is specified. Ignore flush signals if we're holding
signals.
2006-02-23 Christopher Faylor <cgf@timesys.com>
* cygwin.din (_exit): Use signal front end.
(exit): Ditto.
2006-02-23 Christopher Faylor <cgf@timesys.com>
* winsup.h (cygwin_hmodule): Declare.
* exceptions.cc (inside_kernel): Reverse return values to reflect
function name. Return true if we're in cygwin1.dll or if we're
executing in dll_entry.
(_cygtls::interrupt_now): Reflect reversal of inside_kernel return
value.
* hookapi.cc (cygwin_hmodule): Remove declaration.
* init.cc (dll_entry): Use in_dllentry global to record that we are
executing in dllentry.
2006-02-22 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (_cygtls::interrupt_now): Reorder conditional
to call inside_kernel only if this isn't locked.
2006-02-22 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::open): Add FILE_READ_ATTRIBUTES to
access flags in case of query_read_control case, add FILE_READ_DATA
in case of query_stat_control.
2006-02-20 Christopher Faylor <cgf@timesys.com>
* spawn.cc (av::fixup): Check for .bat and friends specifically now
since these extensions are no longer automatically detected.
2006-02-19 Christopher Faylor <cgf@timesys.com>
* exceptions.cc (stackdump): Avoid dumping more than once.
2006-02-19 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Use NtOpenFile
to open the directory.
(fhandler_disk_file::readdir): Use NT_SUCCESS to determine if status
represents success.
2006-02-19 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Drop generating
path_conv for root.
2006-02-18 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (FS_IS_SAMBA): Move out of
path_conv::hasgood_inode.
(path_conv::is_samba): New method.
(fhandler_base::fstat_by_handle): Don't even try to use
FileIdBothDirectoryInformation on Samba.
* path.h (class path_conv): Declare is_samba method.
2006-02-17 Christopher Faylor <cgf@timesys.com>
* path.cc (conv_path_list): Eat empty paths when converting to POSIX.
(cygwin_conv_to_win32_path): Deal with Cygwin's necessity of adding a
'/' to the end of a path ending in '.'.
2006-02-16 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din: Export sigignore and sigset.
* exceptions.cc (sigset): New function.
(sigignore): New function.
* include/cygwin/signal.h (SIG_HOLD): Define.
(sigignore): Declare.
(sigset): Declare.
* include/cygwin/version.h: Bump API minor number to 154.
2006-02-13 Igor Peshansky <pechtcha@cs.nyu.edu>
* include/mntent.h: Add missing #include.
2006-02-13 Igor Peshansky <pechtcha@cs.nyu.edu>
* gentls_offsets: Fix typo in error message.
2006-02-10 Christopher Faylor <cgf@timesys.com>
* fhandler_process.cc (format_process_stat): Use cygwin-derived start
time even on NT since it is the logical start time of the "process".
* pinfo.cc (set_myself): Don't set start time when it should have
already been set previously.
2006-02-10 Brian Ford <Brian.Ford@FlightSafety.com>
* times.cc (clock_getres): Use correct conversion from milliseconds to
seconds/nanoseconds.
(clock_setres): Use correct conversion to nanoseconds.
2006-02-10 Christopher Faylor <cgf@timesys.com>
* external.cc (sync_winenv): Rename from "setup_winenv". Use same
mechanism as spawn to determine environment variables which should be
converted back to windows form.
(cygwin_internal): Reflect setup_winenv -> sync_winenv name change.
* include/sys/cygwin.h: Ditto.
2006-02-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set
the dirent_get_d_ino flag on filesystems having useful File IDs.
Add comment explaining why.
2006-02-07 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc (handle_to_fn): Accommodate new argument order in call to
sys_wcstombs.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Call sys_wcstombs
instead of just wcstombs to accommodate OEM codepages.
* miscfuncs.cc (sys_wcstombs): Split len argument in source and target
length. Always 0-terminate result in target string.
* security.cc (lsa2wchar): Remove unused function.
(lsa2str): Ditto.
(get_lsa_srv_inf): Ditto.
(get_logon_server): Accommodate new argument order in call to
sys_wcstombs.
(get_user_groups): Ditto.
(get_user_local_groups): Ditto.
(get_priv_list): Call sys_wcstombs directly instead of lsa2str.
* uinfo.cc (cygheap_user::ontherange): Accommodate new argument order
in call to sys_wcstombs.
* winsup.h (sys_wcstombs): Change prototype to match new argument order.
2006-02-07 Corinna Vinschen <corinna@vinschen.de>
* init.cc (respawn_wow64_process): Exit with the exit code returned
by the respawned process.
2006-02-06 Christopher Faylor <cgf@timesys.com>
Always zero all elements of siginfo_t throughout.
* cygtls.h (_cygtls::thread_context): Declare new field.
(_cygtls::thread_id): Ditto.
(_cygtls::signal_exit): Move into this class.
(_cygtls::copy_context): Declare new function.
(_cygtls::signal_debugger): Ditto.
* cygtls.cc (_cygtls::init_thread): Fill out thread id field.
* exceptions.cc (exception): Change message when exception info is
unknown. Copy context to thread local storage.
(_cygtls::handle_exceptions): Avoid double test for fault_guarded.
Reflect move of signal_exit to _cygtls class.
(sigpacket::process): Copy context to thread local storage.
(_cygtls::signal_exit): Move to _cygtls class. Call signal_debugger to
notify debugger of exiting signal (WIP). Call stackdump here (WIP).
(_cygtls::copy_context): Define new function.
(_cygtls::signal_debugger): Ditto.
* tlsoffsets.h: Regenerate.
* include/cygwin.h (_fpstate): New internal structure.
(ucontext): Declare new structure (WIP).
(__COPY_CONTEXT_SIZE): New define.
* exceptions.cc (_cygtls::interrupt_setup): Clear "threadkill" field
when there is no sigwaiting thread.
(setup_handler): Move event handling into interrupt_setup.
2006-02-06 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::connect): Fix formatting.
(fhandler_socket::wait): Handle SA_RESTART when signal arrives.
2006-02-06 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/socket.h (CMSG_FIRSTHDR): Avoid compiler warning.
2006-02-05 Corinna Vinschen <corinna@vinschen.de>
* include/features.h: Add comment to explain what's going to happen
here at one point.
* include/sys/stdio.h: Guard getline and getdelim prototypes with
_GNU_SOURCE to avoid collision with old-style declarations.
2006-02-05 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (struct parse_thing): Add transparent_exe option.
* fhandler_disk_file.cc (fhandler_disk_file::link): Accommodate
transparent_exe option. Add .exe suffix for links to executable files,
if transparent_exe is set.
* fhandler_process.cc (fhandler_process::fill_filebuf): Remove .exe
suffix if transparent_exe option is set.
* path.cc (symlink_worker): Accommodate transparent_exe option.
(realpath): Don't tack on .exe suffix if transparent_exe is set.
* syscalls.cc (transparent_exe): New global variable.
(unlink): Accommodate transparent_exe option.
(open): Ditto.
(link): Ditto.
(rename): Ditto. Maybe add .exe suffix when renaming executable files.
(pathconf): Accommodate transparent_exe option.
* winsup.h: Declare transparent_exe.
2006-02-05 Christopher Faylor <cgf@timesys.com>
Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::readdir_9x): Remove
useless code.
2006-02-05 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::rewinddir): Remove label
"out". Move test for NULL __handle ...
(fhandler_disk_file::rewinddir_9x): ... here.
2006-02-05 Corinna Vinschen <corinna@vinschen.de>
* dir.cc (rewinddir): Keep dirent_get_d_ino and dirent_set_d_ino flags.
2006-02-05 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Don't close dir
handle when we hit EOF since rewwindir may reactivate it.
(fhandler_disk_file::readdir_9x): Eliminate superfluous temporary
variable.
(fhandler_disk_file::closedir): Return EBADF when trying to close
unopened DIR. Reorganize slightly. Return actual derived error value
rather than always returning 0.
2006-02-04 Christopher Faylor <cgf@timesys.com>
* dir.cc (rmdir): Reorganize check for trailing dot to return correct
error when directory does not exist.
2006-02-03 Christopher Faylor <cgf@timesys.com>
* dir.cc (mkdir): Reorganize check for trailing dot to return correct
error when directory exists.
* fhandler_disk_file.cc (fhandler_disk_file::mkdir): Remove special
test for path ending in '.'.
2006-02-03 Corinna Vinschen <corinna@vinschen.de>
* path.cc (suffix_scan::lnk_match): Return true beginning with
SCAN_APPENDLNK.
(suffix_scan::next): Rearrange code to make .lnk append order slightly
more deterministic.
* spawn.cc (exe_suffixes): Try no suffix before .exe suffix to align
evaluation with stat_suffixes.
(dll_suffixes): Ditto.
2006-02-02 Christopher Faylor <cgf@timesys.com>
* cygwin/version.h: Mention CW_SETUP_WINENV in comment for API minor
153.
2006-02-02 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (updwtmpx): Export.
* syscalls.cc (updwtmpx): New function.
* include/utmpx.h (updwtmpx): Declare.
* include/cygwin/version.h: Bump API minor number to 153.
2006-02-02 Christopher Faylor <cgf@timesys.com>
* external.cc (setup_winenv): New function.
(cygwin_internal): Implement CW_SETUP_WINENV.
* sys/cygwin.h (cygwin_getinfo_types): Define CW_SETUP_WINENV.
2006-02-02 Corinna Vinschen <corinna@vinschen.de>
* security.cc (is_group_member): Fix comment.
2006-02-02 Corinna Vinschen <corinna@vinschen.de>
* security.cc (is_group_member): Use local group info type 1. Test
group for being a global group or a well-known SID before adding it
to the group list. Add comment.
2006-02-01 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (GetTcpTable): Define.
* fhandler_socket.cc (address_in_use): New function to check if
sockaddr_in address is already in use.
(fhandler_socket::bind): Check if address is alreay in use in case of
SO_REUSEADDR, to circumvent WinSock non-standard behaviour.
2006-02-01 Corinna Vinschen <corinna@vinschen.de>
* spawn.cc (dll_suffixes): Add .exe and "no suffix" to the list.
2006-01-31 Corinna Vinschen <corinna@vinschen.de>
* dlfcn.cc (check_path_access): Call find_exec with FE_DLL option.
* path.h (enum fe_types): Add FE_DLL value.
* spawn.cc (std_suffixes): Remove.
(exe_suffixes): New suffix_info for executing files.
(dll_suffixes): New suffix_info for searching shared libraries.
(perhaps_suffix): Add opt argument. Use dll_suffixes if FE_DLL
option is given, exe_suffixes otherwise.
(find_exec): Propagate opt argument to perhaps_suffix. Drop suffix
check when testing execute permission.
(spawn_guts): Call perhaps_suffix with FE_NADA opt argument.
2006-01-31 Christopher Faylor <cgf@timesys.com>
* spawn.cc (av::fixup): Remove unused argument.
(spawn_guts): Remove capitalization in debugging.
2006-01-31 Corinna Vinschen <corinna@vinschen.de>
* spawn.cc (find_exec): Only return files with execute permission set
if ntsec is on. Don't check execute permission of Windows batch files.
(av::fixup): Handle empty files gracefully. Drop execute permission
test here.
* path.cc (suffix_scan::next): Don't skip any suffix on first run.
2006-01-31 Corinna Vinschen <corinna@vinschen.de>
* path.cc (cwdstuff::set): Don't set win32 error, only POSIX errno.
2006-01-31 Corinna Vinschen <corinna@vinschen.de>
* path.cc (cwdstuff::set): When SetCurrentDirectory returns
ERROR_INVALID_FUNCTION, bend it over to ERROR_FILE_NOT_FOUND. Add
comment to explain why.
2006-01-31 Corinna Vinschen <corinna@vinschen.de>
* dir.cc (readdir_worker): Add comment about writing old 32 bit d_ino.
* include/cygwin/version.h: Bump API minor number to 152.
(CYGWIN_VERSION_CHECK_FOR_NEEDS_D_INO): Remove.
2006-01-30 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::rewinddir): Simplify
conditional.
2006-01-30 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (d_cachepos): Rename from d_pos to distinct
clearly from __d_position. Change throughout.
(fhandler_disk_file::rewinddir): Reset readdir cache on NT.
2006-01-29 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (readdir_get_ino): Don't follow symlinks.
2006-01-29 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_socket): Add saw_reuseaddr status flag.
* fhandler_socket.cc (fhandler_socket::bind): Set socket to
SO_EXCLUSIVEADDRUSE if application didn't explicitely set SO_REUSEADDR
socket option, on systems supporting SO_EXCLUSIVEADDRUSE.
* net.cc (cygwin_setsockopt): Set fhandler's saw_reuseaddr status flag
if SO_REUSEADDR socket option has been successsfully set.
* wincap.h (wincaps::has_exclusiveaddruse): New element.
* wincap.cc: Implement above element throughout.
2006-01-28 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::mkdir): In case or error,
check for existance explicitely and set errno to EEXIST.
2006-01-28 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (DIR_NUM_ENTRIES): New define determining
minimum number of dir entries which fit into the readdir cache.
(DIR_BUF_SIZE): Define globally as size of readdir cache.
(struct __DIR_cache): New structure used for readdir caching on NT.
(d_dirname): Accessor for struct __DIR_cache, use throughout.
(d_pos): Ditto.
(d_cache): Ditto.
(fhandler_disk_file::opendir): Allocate __d_dirname to contain readdir
cache on NT.
(fhandler_disk_file::readdir): Use buf as pointer into readdir cache.
Implement readdir caching.
2006-01-28 Corinna Vinschen <corinna@vinschen.de>
* include/sys/dirent.h (struct dirent): Revert misguided attempt to
rename __d_unused1 to __d_fd.
2006-01-27 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (NtQueryDirectoryFile): Define.
* dir.cc (__opendir_with_d_ino): Just call opendir.
(opendir): Remove CYGWIN_VERSION_CHECK_FOR_NEEDS_D_INO handling.
(readdir_worker): Only try generating d_ino if it's 0.
Utilize namehash of directories fhandler. Call readdir_get_ino to
generate d_ino for "..".
(seekdir64): Keep dirent_set_d_ino flag.
* fhandler.h (enum dirent_states): Add dirent_get_d_ino.
(class fhandler_disk_file): Declare new private methods readdir_helper
and readdir_9x.
* fhandler_disk_file.cc (path_conv::hasgood_inode): New method to
evaluate if a filesystem has reliable inode numbers.
(fhandler_base::fstat_by_handle): Accommodate structure member name
change from IndexNumber to FileId.
(fhandler_base::fstat_helper): Call hasgood_inode here.
(fhandler_disk_file::opendir): Call fhaccess only for real files.
Don't append '*' to __d_dirname here, move to readdir_9x. On NT,
open directory handle here. Set dirent_get_d_ino and dirent_set_d_ino
flags according to wincap and filesystem.
(fhandler_disk_file::readdir_helper): New method to implement readdir
postprocessing only once.
(readdir_get_ino_by_handle): New static function.
(readdir_get_ino): New function to centralize inode number evaluation
in case inode number hasn't been returned by NtQueryDirectoryFile.
(fhandler_disk_file::readdir): Move old functionality to readdir_9x.
Call readdir_9x when on 9x/Me. Implement NT specific readdir here.
(fhandler_disk_file::readdir_9x): Move 9x specific readdir here.
(fhandler_disk_file::seekdir): Accommodate new NT readdir method.
(fhandler_disk_file::closedir): Ditto.
(fhandler_cygdrive::fstat): Set d_ino to namehash. Add comment.
(fhandler_cygdrive::opendir): Call get_namehash to prepare later
correct evaluation of d_ino.
(fhandler_cygdrive::readdir): Replace recursion with loop. Evaluate
drive's d_ino by calling readdir_get_ino.
* fhandler_proc.cc (fhandler_proc::readdir): Set dirent_saw_dot and
dirent_saw_dot_dot to avoid seeing . and .. entries twice.
* fhandler_process.cc (fhandler_process::readdir): Ditto.
* fhandler_registry.cc (fhandler_registry::readdir): Ditto.
* ntdll.h (STATUS_INVALID_PARAMETER): New define.
(STATUS_INVALID_LEVEL): New define.
(struct _FILE_INTERNAL_INFORMATION): Rename member IndexNumber to
FileId (as in Nebbitt).
* path.h (path_conv::hasgood_inode): Now implemented in
fhandler_disk_file.cc.
* wincap.h (wincaps::has_fileid_dirinfo): New element.
* wincap.cc: Implement above element throughout.
* winsup.h (readdir_get_ino): Add declaration.
* include/sys/dirent.h (struct dirent): Slightly rename structure
members to accommodate changes.
Remove __USE_EXPENSIVE_CYGWIN_D_INO handling and declaration of
__opendir_with_d_ino.
2006-01-27 Christopher Faylor <cgf@timesys.com>
* spawn.cc (spawn_guts): Fix potential handle leak when failing exec.
2006-01-27 Christopher Faylor <cgf@timesys.com>
* exceptions.cc (inside_kernel): Fix to return true if we can't get the
name of the DLL for the given memory block since we are not in kernel
code.
2006-01-26 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::open): Fix bug in argument order to
InitializeObjectAttributes call.
2006-01-25 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Fix test for
dirent_isroot to use the correct boolean operator.
2006-01-25 Christopher Faylor <cgf@timesys.com>
* ntdll.h: (temporarily?) Add more functions for querying directory.
2006-01-24 Christopher Faylor <cgf@timesys.com>
* dir.cc (readdir_worker): Turn off expensive inode calculation.
2006-01-24 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc (fhandler_process::fill_filebuf): Disable
stripping the .exe suffix from the link target in PROCESS_EXE and
PROCESS_EXENAME case.
* path.cc (realpath): Tack on .exe suffix if necessary.
2006-01-24 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Try harder
to determine remote file systems with reliable inode numbers. Add
longish comment.
2006-01-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::fixup_after_fork): Reset
inheritance for duplicated socket.
2006-01-20 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump API minor number to 151.
* dir.cc (__opendir_with_d_ino): New function.
(opendir): Set flag if we should be calculating inodes.
(readdir_worker): Calculate d_ino by calling stat if the user has asked
for it.
(seekdir64): Maintain all persistent flag settings.
* fhandler.h (dirent_states): Add dirent_set_d_ino.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Reflect changes
to dirent structure.
* fhandler_virtual.cc (fhandler_virtual::opendir): Ditto.
* include/sys/dirent.h (struct dirent): Coalesce two similar
structures. Remove all shreds of the apparently highly confusing
references to inodes. Add support for calculating a real inode if
__USE_EXPENSIVE_CYGWIN_D_INO is defined.
2006-01-20 Christopher Faylor <cgf@timesys.com>
* include/sys/dirent.h: Add comments for people who are REALLY confused
about whether they should be using something called __invalid_d_ino or
not.
2006-01-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::prepare): Fix debug output.
(fhandler_socket::release): Add debug output for WSAEventSelect failure.
(fhandler_socket::ioctl): Always cancel WSAEventSelect before switching
to blocking mode. Only set nonblocking flag if ioctlsocket call
succeeded. Only print new socket state if ioctlsocket call succeeded.
2006-01-19 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Check posix path
for root rather than windows path.
2006-01-19 Christopher Faylor <cgf@timesys.com>
* dir.cc (readdir_worker): Fill in invalid fields with -1. Accommodate
name change from __ino32 to __invalid_ino32.
* include/sys/dirent.h (__invalid_ino32): Rename from __ino32. Don't
define unused d_type macros.
2006-01-18 Christopher Faylor <cgf@timesys.com>
* heap.cc (heap_init): Remove Sleep.
2006-01-18 Corinna Vinschen <corinna@vinschen.de>
* net.cc (rresvport): Remove extern declaration.
2006-01-18 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (rresvport): Remove.
* net.cc (last_used_rrecvport): New global shared variable.
(cygwin_rresvport): Implement rresvport without using rresvport from
wsock32.
2006-01-18 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/socket.h (struct sockaddr_storage): Fix typo in
ss_family member name.
2006-01-16 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor version number to 20.
2006-01-13 Corinna Vinschen <corinna@vinschen.de>
* uname.cc (uname): Concatenate a "-WOW64" to utsname's sysname
member to see when running under WOW64.
2006-01-13 Corinna Vinschen <corinna@vinschen.de>
* net.cc (cygwin_setsockopt): Ignore errors when setting IP_TOS on
Windows 2000 and above. Clarify the comment about IP_TOS and move
to the place where the magic happens.
(get_ifconf): Remove unused code.
* wincap.h (wincaps::has_disabled_user_tos_setting): New element.
* wincap.cc: Implement above element throughout.
2006-01-12 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (set_console_state_for_spawn): Fix to recognize
ttys >= 0.
2006-01-12 Christopher Faylor <cgf@timesys.com>
* fhandler.h (set_console_state_for_spawn): Whackamole the argument
back to a bool.
* spawn.cc (spawn_guts): Ditto, i.e., once again call
set_console_state_for_spawn with an indication of whether we're about
to start a cygwin process.
* fhandler_console.cc (set_console_state_for_spawn): Don't set the
console state if we know we're starting a cygwin process or if we're
using a "real" tty.
2006-01-10 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (dll_crt0_0): Remove call to wincap.init.
* init.cc (dll_entry): Rename is_wow64_proc to wow64_test_stack_marker.
Call wincap.init here before doing anything else. Use wincap.is_wow64
to determine if we're running in a WOW64 emulator.
* mmap.cc (MapViewNT): Don't use AT_ROUND_TO_PAGE in WOW64, it's
apparently not supported.
(mmap64): Don't create mappings beyond EOF, which would need to use
AT_ROUND_TO_PAGE, on WOW64.
* wincap.cc (wincap): Throw into the .cygwin_dll_common section.
(wincapc::init): Determine if running in WOW64 and set wow_64 flag.
* wincap.h (class wincapc): Add wow64 member.
(wincapc::is_wow64): New method.
2006-01-10 Christopher Faylor <cgf@timesys.com>
* fhandler_proc.cc (format_proc_cpuinfo): Avoid leading whitespace in
model name.
2006-01-09 Christopher Faylor <cgf@timesys.com>
* spawn.cc (spawn_guts): Reorganize slightly so that 16 bit check is
done prior to check for command.com/cmd.com. Don't bother setting
CREATE_SUSPENDED flag for a MS-DOS process since it doesn't work
anyway. Avoid calling remember() when the child process has already
exited.
(av::fixup): Explicitly set cygexec flag to false on a 16 bit process.
2006-01-09 Corinna Vinschen <corinna@vinschen.de>
* include/getopt.h (getopt_long_only): Declare.
2006-01-09 Eric Blake <ebb9@byu.net>
* cygwin.din: Export getsubopt.
* include/cygwin/version.h: Bump API minor version.
2006-01-08 Christopher Faylor <cgf@timesys.com>
* fhandler_tty.cc (fhandler_tty_slave::dup): Don't assign a controlling
terminal to a process when duped. Linux doesn't do this, so we won't
either.
2006-01-08 Christopher Faylor <cgf@timesys.com>
* environ.cc (spenvs[]): windir -> WINDIR.
2006-01-07 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (fhandler_console::need_invisible): Remove
duplicate test.
2006-01-07 Christopher Faylor <cgf@timesys.com>
* fhandler.h (set_console_state_for_spawn): Eliminate argument from
declaration.
* fhandler.cc (set_console_state_for_spawn): Eliminate argument from
definition. Always check for invisible console.
(fhandler_console::need_invisible): Don't do anything if the windows
station is already not visible.
* spawn.cc (spawn_guts): Accommodate change of argument to
set_console_state_for_spawn.
2006-01-05 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (no_signals_available): Use existence of signal thread
handle to figure out if we can actually send signals rather than
relying on my_sendsig.
(hwait_sig): Make static.
(sigproc_init): Don't set my_sendsig to anything special. Use new
global static hwait_sig.
(wait_sig): Set hwait_sig to NULL when we are exiting.
2006-01-05 Christopher Faylor <cgf@timesys.com>
* include/getopt.h: Accommodate recent unfortunate newlib changes.
2006-01-05 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Don't output debugging info if this
isn't a cygwin thread.
* sigproc.cc (sigproc_init): Move clearing of sync_startup here to
lessen the likelihood of trying to deal with non-cygwin threads in
dll_entry.
* fhandler_console: Fix set_console_state_for_spawn comment.
2006-01-05 Igor Peshansky <pechtcha@cs.nyu.edu>
* spawn.cc (spawn_guts): Invert the argument to
set_console_state_for_spawn.
2006-01-04 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (fhandler_console::need_invisible): Only try to
open "CygwinInvisible" windows station if opening of default station
fails. Use CloseWindowStation to close window station handle.
2006-01-04 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (fhandler_console::need_invisible): Open up the
security of the newly created windows station.
2006-01-04 Eric Blake <ebb9@byu.net>
* path.cc (dot_special_chars): Add ", <, >, and |.
2006-01-03 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (beep): Use MB_OK which is documented as using
the default bell rather than -1 which seems to behave differently on
different versions of Windows.
2006-01-03 Christopher Faylor <cgf@timesys.com>
* fhandler_process.cc (fhandler_process::readdir): Add missing argument
to syscall_printf.
* fhandler_console.cc (fhandler_console::need_invisible): Use made-up
name for windows station rather than asking Windows to create one for
us.
* spawn.cc (spawn_guts): Don't mess with console if we're detaching.
2006-01-03 Christopher Faylor <cgf@timesys.com>
* dir.cc (readdir_worker): Minor code cleanup.
* fhandler_console.cc (beep): Use a more Windows-generic wav file if
the beep is missing. Use a more foolproof way to find out whether we
should be recreating the missing key.
* registry.h (reg_key::_disposition): New field.
(reg_key::created): New function.
* registry.cc (reg_key::reg_key): Set _disposition to zero by default.
(reg_key::build_key): Fill in _disposition field.
2006-01-03 Eric Blake <ebb9@byu.net>
* dir.cc (readdir_worker): Ensure that saw_dot* flags are updated when
not handling inodes.
2006-01-02 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (beep): New function. Restores missing "Default
Beep", if necessary.
(fhandler_console::write_normal): Use beep().
2006-01-02 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (_dll_crt0): Remove more leftover debugging stuff.
(cygwin_dll_init): Remove unneeded initializations. Call _dll_crt0
rather than dll_crt0_1.
2006-01-02 Corinna Vinschen <corinna@vinschen.de>
* syslog.cc: Include sys/un.h instead of sys/socket.h.
(syslogd_inited): Convert to enum type noting the exact result of
trying to connect to syslog daemon. Use this way throughout.
(connect_syslogd): New static function taking over the task to
connect to syslog socket. Use correct struct sockaddr_un instead of
struct sockaddr.
(try_connect_syslogd): Call connect_syslogd. If write fails on
connection oriented socket, try to reconnect to syslog socket and
try to write again.
2006-01-01 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Swap signal and normal exit value when not
started from a cygwin process - just like the good-old-days of B20.
2006-01-01 Christopher Faylor <cgf@timesys.com>
* strace.cc (strace::write_childpid): Remove debugging output.
2006-01-01 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Remove left over debugging cruft which
caused this function to always return prematurely.
2006-01-01 Christopher Faylor <cgf@timesys.com>
* exceptions.cc (sigpacket::process): Pass actual reference to signal's
sigaction structure to setup_handler.
2006-01-01 Christopher Faylor <cgf@timesys.com>
* exceptions.cc (_cygtls::interrupt_setup): Implement SA_RESETHAND.
* include/cygwin/signal.h: Define SA_ONESHOT and SA_NOMASK.
* dcrt0.cc (get_cygwin_startup_info): Remove commented out code.
2006-01-01 Corinna Vinschen <corinna@vinschen.de>
* syslog.cc (vklog): Never log kernel messages using the vsyslog
interface.
|