]> git.saurik.com Git - wxWidgets.git/blob - src/mac/morefile/MoreFiles.h
an alternative fix which should replace patch 781918
[wxWidgets.git] / src / mac / morefile / MoreFiles.h
1 /*
2 File: MoreFiles.h
3
4 Contains: The long lost high-level and FSSpec File Manager functions.
5
6 Version: Technology: MoreFiles
7 Release: 1.5.2
8
9 Copyright: © 1992-2001 by Apple Computer, Inc., all rights reserved.
10
11 Bugs?: For bug reports, consult the following page on
12 the World Wide Web:
13
14 http://developer.apple.com/bugreporter/
15
16 */
17
18 /*
19 You may incorporate this sample code into your applications without
20 restriction, though the sample code has been provided "AS IS" and the
21 responsibility for its operation is 100% yours. However, what you are
22 not permitted to do is to redistribute the source as "DSC Sample Code"
23 after having made changes. If you're going to re-distribute the source,
24 we require that you make it clear in the source that the code was
25 descended from Apple Sample Code, but that you've made changes.
26 */
27
28 #ifndef __MOREFILES__
29 #define __MOREFILES__
30
31 #ifndef __MACTYPES__
32 #include <MacTypes.h>
33 #endif
34
35 #ifndef __FILES__
36 #include <Files.h>
37 #endif
38
39 #include "Optimization.h"
40
41
42 #if PRAGMA_ONCE
43 #pragma once
44 #endif
45
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49
50 #if PRAGMA_IMPORT
51 #pragma import on
52 #endif
53
54 #if PRAGMA_STRUCT_ALIGN
55 #pragma options align=mac68k
56 #elif PRAGMA_STRUCT_PACKPUSH
57 #pragma pack(push, 2)
58 #elif PRAGMA_STRUCT_PACK
59 #pragma pack(2)
60 #endif
61
62 /*****************************************************************************/
63
64 EXTERN_API( OSErr )
65 HGetVolParms(
66 ConstStr255Param volName,
67 short vRefNum,
68 GetVolParmsInfoBuffer * volParmsInfo,
69 long * infoSize);
70
71
72 /*
73 The HGetVolParms function returns information about the characteristics
74 of a volume. A result of paramErr usually just means the volume doesn't
75 support PBHGetVolParms and the feature you were going to check
76 for isn't available.
77
78 volName input: A pointer to the name of a mounted volume
79 or nil.
80 vRefNum input: Volume specification.
81 volParmsInfo input: Pointer to GetVolParmsInfoBuffer where the
82 volume attributes information is returned.
83 output: Atributes information.
84 infoSize input: Size of buffer pointed to by volParmsInfo.
85 output: Size of data actually returned.
86
87 Result Codes
88 noErr 0 No error
89 nsvErr -35 Volume not found
90 paramErr -50 Volume doesn't support this function
91
92 __________
93
94 Also see the macros for checking attribute bits in MoreFilesExtras.h
95 */
96
97 /*****************************************************************************/
98
99 EXTERN_API( OSErr )
100 HCreateMinimum(
101 short vRefNum,
102 long dirID,
103 ConstStr255Param fileName);
104
105
106 /*
107 The HCreateMinimum function creates a new file without attempting to set
108 the creator and file type of the new file. This function is needed to
109 create a file in an AppleShare "drop box" where the user can make
110 changes, but cannot see folder or files.
111
112 vRefNum input: Volume specification.
113 dirID input: Directory ID.
114 fileName input: The name of the new file.
115
116 Result Codes
117 noErr 0 No error
118 dirFulErr -33 File directory full
119 dskFulErr -34 Disk is full
120 nsvErr -35 No such volume
121 ioErr -36 I/O error
122 bdNamErr -37 Bad filename
123 fnfErr -43 Directory not found or incomplete pathname
124 wPrErr -44 Hardware volume lock
125 vLckdErr -46 Software volume lock
126 dupFNErr -48 Duplicate filename and version
127 dirNFErrdirNFErr -120 Directory not found or incomplete pathname
128 afpAccessDenied -5000 User does not have the correct access
129 afpObjectTypeErr -5025 A directory exists with that name
130
131 __________
132
133 Also see: FSpCreateMinimum
134 */
135
136 /*****************************************************************************/
137
138 EXTERN_API( OSErr )
139 FSpCreateMinimum(const FSSpec * spec);
140
141
142 /*
143 The FSpCreateMinimum function creates a new file without attempting to set
144 the the creator and file type of the new file. This function is needed to
145 create a file in an AppleShare "dropbox" where the user can make
146 changes, but cannot see folder or files.
147
148 spec input: An FSSpec record specifying the file to create.
149
150 Result Codes
151 noErr 0 No error
152 dirFulErr -33 File directory full
153 dskFulErr -34 Disk is full
154 nsvErr -35 No such volume
155 ioErr -36 I/O error
156 bdNamErr -37 Bad filename
157 fnfErr -43 Directory not found or incomplete pathname
158 wPrErr -44 Hardware volume lock
159 vLckdErr -46 Software volume lock
160 dupFNErr -48 Duplicate filename and version
161 dirNFErrdirNFErr -120 Directory not found or incomplete pathname
162 afpAccessDenied -5000 User does not have the correct access
163 afpObjectTypeErr -5025 A directory exists with that name
164
165 __________
166
167 Also see: HCreateMinimum
168 */
169
170 /*****************************************************************************/
171
172 EXTERN_API( OSErr )
173 ExchangeFiles(
174 short vRefNum,
175 long srcDirID,
176 ConstStr255Param srcName,
177 long dstDirID,
178 ConstStr255Param dstName);
179
180
181 /*
182 The ExchangeFiles function swaps the data in two files on the same
183 volume by changing some of the information in the volume catalog and,
184 if the files are open, in the file control blocks.
185
186 vRefNum input: Volume specification.
187 srcDirID input: Source directory ID.
188 srcName input: Source file name.
189 dstDirID input: Destination directory ID.
190 dstName input: Destination file name.
191
192 Result Codes
193 noErr 0 No error
194 nsvErr -35 Volume not found
195 ioErr -36 I/O error
196 fnfErr -43 File not found
197 fLckdErr -45 File is locked
198 vLckdErr -46 Volume is locked or read-only
199 paramErr -50 Function not supported by volume
200 volOfflinErr -53 Volume is offline
201 wrgVolTypErr -123 Not an HFS volume
202 diffVolErr -1303 Files on different volumes
203 afpAccessDenied -5000 User does not have the correct access
204 afpObjectTypeErr -5025 Object is a directory, not a file
205 afpSameObjectErr -5038 Source and destination are the same
206
207 __________
208
209 Also see: FSpExchangeFilesCompat
210 */
211
212 /*****************************************************************************/
213
214 EXTERN_API( OSErr )
215 ResolveFileIDRef(
216 ConstStr255Param volName,
217 short vRefNum,
218 long fileID,
219 long * parID,
220 StringPtr fileName);
221
222
223 /*
224 The ResolveFileIDRef function returns the filename and parent directory ID
225 of the file with the specified file ID reference.
226
227 volName input: A pointer to the name of a mounted volume
228 or nil.
229 vRefNum input: Volume specification.
230 fileID input: The file ID reference.
231 parID output: The parent directory ID of the file.
232 name input: Points to a buffer (minimum Str63) where the filename
233 is to be returned or must be nil.
234 output: The filename.
235
236 Result Codes
237 noErr 0 No error
238 nsvErr -35 Volume not found
239 ioErr -36 I/O error
240 fnfErr -43 File not found
241 paramErr -50 Function not supported by volume
242 volOfflinErr -53 Volume is offline
243 extFSErr -58 External file system error - no file
244 system claimed this call.
245 wrgVolTypErr -123 Not an HFS volume
246 fidNotFoundErr -1300 File ID reference not found
247 notAFileErr -1302 Specified file is a directory
248 afpAccessDenied -5000 User does not have the correct access
249 afpObjectTypeErr -5025 Specified file is a directory
250 afpIDNotFound -5034 File ID reference not found
251 afpBadIDErr -5039 File ID reference not found
252
253 __________
254
255 Also see: FSpResolveFileIDRef, CreateFileIDRef, FSpCreateFileIDRef,
256 DeleteFileIDRef
257 */
258
259 /*****************************************************************************/
260
261 EXTERN_API( OSErr )
262 FSpResolveFileIDRef(
263 ConstStr255Param volName,
264 short vRefNum,
265 long fileID,
266 FSSpecPtr spec);
267
268
269 /*
270 The FSpResolveFileIDRef function fills in an FSSpec with the location
271 of the file with the specified file ID reference.
272
273 volName input: A pointer to the name of a mounted volume
274 or nil.
275 vRefNum input: Volume specification.
276 fileID input: The file ID reference.
277 spec input: A pointer to a FSSpec record.
278 output: A file system specification to be filled in by
279 FSpResolveFileIDRef.
280
281 Result Codes
282 noErr 0 No error
283 nsvErr -35 Volume not found
284 ioErr -36 I/O error
285 fnfErr -43 File not found
286 paramErr -50 Function not supported by volume or
287 no default volume
288 volOfflinErr -53 Volume is offline
289 extFSErr -58 External file system error - no file
290 system claimed this call.
291 wrgVolTypErr -123 Not an HFS volume
292 fidNotFoundErr -1300 File ID reference not found
293 notAFileErr -1302 Specified file is a directory
294 afpAccessDenied -5000 User does not have the correct access
295 afpObjectTypeErr -5025 Specified file is a directory
296 afpIDNotFound -5034 File ID reference not found
297 afpBadIDErr -5039 File ID reference not found
298
299 __________
300
301 Also see: ResolveFileIDRef, CreateFileIDRef, FSpCreateFileIDRef,
302 DeleteFileIDRef
303 */
304
305 /*****************************************************************************/
306
307 EXTERN_API( OSErr )
308 CreateFileIDRef(
309 short vRefNum,
310 long parID,
311 ConstStr255Param fileName,
312 long * fileID);
313
314
315 /*
316 The CreateFileIDRef function creates a file ID reference for the
317 specified file, or if a file ID reference already exists, supplies
318 the file ID reference and returns the result code fidExists or afpIDExists.
319
320 vRefNum input: Volume specification.
321 parID input: Directory ID.
322 fileName input: The name of the file.
323 fileID output: The file ID reference (if result is noErr,
324 fidExists, or afpIDExists).
325
326 Result Codes
327 noErr 0 No error
328 nsvErr -35 Volume not found
329 ioErr -36 I/O error
330 fnfErr -43 File not found
331 wPrErr -44 Hardware volume lock
332 vLckdErr -46 Software volume lock
333 paramErr -50 Function not supported by volume
334 volOfflinErr -53 Volume is offline
335 extFSErr -58 External file system error - no file
336 system claimed this call.
337 wrgVolTypErr -123 Not an HFS volume
338 fidExists -1301 File ID reference already exists
339 notAFileErrn -1302 Specified file is a directory
340 afpAccessDenied -5000 User does not have the correct access
341 afpObjectTypeErr -5025 Specified file is a directory
342 afpIDExists -5035 File ID reference already exists
343
344 __________
345
346 Also see: FSpResolveFileIDRef, ResolveFileIDRef, FSpCreateFileIDRef,
347 DeleteFileIDRef
348 */
349
350 /*****************************************************************************/
351
352 EXTERN_API( OSErr )
353 FSpCreateFileIDRef(
354 const FSSpec * spec,
355 long * fileID);
356
357
358 /*
359 The FSpCreateFileIDRef function creates a file ID reference for the
360 specified file, or if a file ID reference already exists, supplies
361 the file ID reference and returns the result code fidExists or afpIDExists.
362
363 spec input: An FSSpec record specifying the file.
364 fileID output: The file ID reference (if result is noErr,
365 fidExists, or afpIDExists).
366
367 Result Codes
368 noErr 0 No error
369 nsvErr -35 Volume not found
370 ioErr -36 I/O error
371 fnfErr -43 File not found
372 wPrErr -44 Hardware volume lock
373 vLckdErr -46 Software volume lock
374 paramErr -50 Function not supported by volume
375 volOfflinErr -53 Volume is offline
376 extFSErr -58 External file system error - no file
377 system claimed this call.
378 wrgVolTypErr -123 Not an HFS volume
379 fidExists -1301 File ID reference already exists
380 notAFileErrn -1302 Specified file is a directory
381 afpAccessDenied -5000 User does not have the correct access
382 afpObjectTypeErr -5025 Specified file is a directory
383 afpIDExists -5035 File ID reference already exists
384
385 __________
386
387 Also see: FSpResolveFileIDRef, ResolveFileIDRef, CreateFileIDRef,
388 DeleteFileIDRef
389 */
390
391 /*****************************************************************************/
392
393 EXTERN_API( OSErr )
394 DeleteFileIDRef(
395 ConstStr255Param volName,
396 short vRefNum,
397 long fileID);
398
399
400 /*
401 The DeleteFileIDRef function deletes a file ID reference.
402
403 volName input: A pointer to the name of a mounted volume
404 or nil.
405 vRefNum input: Volume specification.
406 fileID input: The file ID reference.
407
408 Result Codes
409 noErr 0 No error
410 nsvErr -35 Volume not found
411 ioErr -36 I/O error
412 fnfErr -43 File not found
413 wPrErr -44 Hardware volume lock
414 vLckdErr -46 Software volume lock
415 paramErr -50 Function not supported by volume
416 volOfflinErr -53 Volume is offline
417 extFSErr -58 External file system error - no file
418 system claimed this call.
419 wrgVolTypErr -123 Function is not supported by volume
420 fidNotFoundErr -1300 File ID reference not found
421 afpAccessDenied -5000 User does not have the correct access
422 afpObjectTypeErr -5025 Specified file is a directory
423 afpIDNotFound -5034 File ID reference not found
424
425 __________
426
427 Also see: FSpResolveFileIDRef, ResolveFileIDRef, CreateFileIDRef,
428 FSpCreateFileIDRef
429 */
430
431 /*****************************************************************************/
432
433 EXTERN_API( OSErr )
434 FlushFile(short refNum);
435
436
437 /*
438 The FlushFile function writes the contents of a file's access path
439 buffer (the fork data) to the volume. Note: some of the file's catalog
440 information stored on the volume may not be correct until FlushVol
441 is called.
442
443 refNum input: The file reference number of an open file.
444
445 Result Codes
446 noErr 0 No error
447 nsvErr -35 Volume not found
448 ioErr -36 I/O error
449 fnOpnErr -38 File not open
450 fnfErr -43 File not found
451 rfNumErr -51 Bad reference number
452 extFSErr -58 External file system error - no file
453 system claimed this call.
454 */
455
456 /*****************************************************************************/
457
458 EXTERN_API( OSErr )
459 LockRange(
460 short refNum,
461 long rangeLength,
462 long rangeStart);
463
464
465 /*
466 The LockRange function locks (denies access to) a portion of a file
467 that was opened with shared read/write permission.
468
469 refNum input: The file reference number of an open file.
470 rangeLength input: The number of bytes in the range.
471 rangeStart input: The starting byte in the range to lock.
472
473 Result Codes
474 noErr 0 No error
475 ioErr -36 I/O error
476 fnOpnErr -38 File not open
477 eofErr -39 Logical end-of-file reached
478 fLckdErr -45 File is locked by another user
479 paramErr -50 Negative ioReqCount
480 rfNumErr -51 Bad reference number
481 extFSErr -58 External file system error - no file
482 system claimed this call.
483 volGoneErr -124 Server volume has been disconnected
484 afpNoMoreLocks -5015 No more ranges can be locked
485 afpRangeOverlap -5021 Part of range is already locked
486
487 __________
488
489 Also see: UnlockRange
490 */
491
492 /*****************************************************************************/
493
494 EXTERN_API( OSErr )
495 UnlockRange(
496 short refNum,
497 long rangeLength,
498 long rangeStart);
499
500
501 /*
502 The UnlockRange function unlocks (allows access to) a previously locked
503 portion of a file that was opened with shared read/write permission.
504
505 refNum input: The file reference number of an open file.
506 rangeLength input: The number of bytes in the range.
507 rangeStart input: The starting byte in the range to unlock.
508
509 Result Codes
510 noErr 0 No error
511 ioErr -36 I/O error
512 fnOpnErr -38 File not open
513 eofErr -39 Logical end-of-file reached
514 paramErr -50 Negative ioReqCount
515 rfNumErr -51 Bad reference number
516 extFSErr -58 External file system error - no file
517 system claimed this call.
518 volGoneErr -124 Server volume has been disconnected
519 afpRangeNotLocked -5020 Specified range was not locked
520
521 __________
522
523 Also see: LockRange
524 */
525
526 /*****************************************************************************/
527
528 EXTERN_API( OSErr )
529 GetForeignPrivs(
530 short vRefNum,
531 long dirID,
532 ConstStr255Param name,
533 void * foreignPrivBuffer,
534 long * foreignPrivSize,
535 long * foreignPrivInfo1,
536 long * foreignPrivInfo2,
537 long * foreignPrivInfo3,
538 long * foreignPrivInfo4);
539
540
541 /*
542 The GetForeignPrivs function retrieves the native access-control
543 information for a file or directory stored on a volume managed by
544 a foreign file system.
545
546 vRefNum input: Volume specification.
547 dirID input: Directory ID.
548 name input: Pointer to object name, or nil when dirID
549 specifies a directory that's the object.
550 foreignPrivBuffer input: Pointer to buffer where the privilege
551 information is returned.
552 output: Privilege information.
553 foreignPrivSize input: Size of buffer pointed to by
554 foreignPrivBuffer.
555 output: Amount of buffer actually used.
556 foreignPrivInfo1 output: Information specific to privilege model.
557 foreignPrivInfo2 output: Information specific to privilege model.
558 foreignPrivInfo3 output: Information specific to privilege model.
559 foreignPrivInfo4 output: Information specific to privilege model.
560
561 Result Codes
562 noErr 0 No error
563 nsvErr -35 Volume not found
564 paramErr -50 Volume is HFS or MFS (that is, it has
565 no foreign privilege model), or foreign
566 volume does not support these calls
567
568 __________
569
570 Also see: FSpGetForeignPrivs, SetForeignPrivs, FSpSetForeignPrivs
571 */
572
573 /*****************************************************************************/
574
575 EXTERN_API( OSErr )
576 FSpGetForeignPrivs(
577 const FSSpec * spec,
578 void * foreignPrivBuffer,
579 long * foreignPrivSize,
580 long * foreignPrivInfo1,
581 long * foreignPrivInfo2,
582 long * foreignPrivInfo3,
583 long * foreignPrivInfo4);
584
585
586 /*
587 The FSpGetForeignPrivs function retrieves the native access-control
588 information for a file or directory stored on a volume managed by
589 a foreign file system.
590
591 spec input: An FSSpec record specifying the object.
592 foreignPrivBuffer input: Pointer to buffer where the privilege
593 information is returned.
594 output: Privilege information.
595 foreignPrivSize input: Size of buffer pointed to by
596 foreignPrivBuffer.
597 output: Amount of buffer actually used.
598 foreignPrivInfo1 output: Information specific to privilege model.
599 foreignPrivInfo2 output: Information specific to privilege model.
600 foreignPrivInfo3 output: Information specific to privilege model.
601 foreignPrivInfo4 output: Information specific to privilege model.
602
603 Result Codes
604 noErr 0 No error
605 nsvErr -35 Volume not found
606 paramErr -50 Volume is HFS or MFS (that is, it has
607 no foreign privilege model), or foreign
608 volume does not support these calls
609
610 __________
611
612 Also see: GetForeignPrivs, SetForeignPrivs, FSpSetForeignPrivs
613 */
614
615 /*****************************************************************************/
616
617 EXTERN_API( OSErr )
618 SetForeignPrivs(
619 short vRefNum,
620 long dirID,
621 ConstStr255Param name,
622 const void * foreignPrivBuffer,
623 long * foreignPrivSize,
624 long foreignPrivInfo1,
625 long foreignPrivInfo2,
626 long foreignPrivInfo3,
627 long foreignPrivInfo4);
628
629
630 /*
631 The SetForeignPrivs function changes the native access-control
632 information for a file or directory stored on a volume managed by
633 a foreign file system.
634
635 vRefNum input: Volume specification.
636 dirID input: Directory ID.
637 name input: Pointer to object name, or nil when dirID
638 specifies a directory that's the object.
639 foreignPrivBuffer input: Pointer to privilege information buffer.
640 foreignPrivSize input: Size of buffer pointed to by
641 foreignPrivBuffer.
642 output: Amount of buffer actually used.
643 foreignPrivInfo1 input: Information specific to privilege model.
644 foreignPrivInfo2 input: Information specific to privilege model.
645 foreignPrivInfo3 input: Information specific to privilege model.
646 foreignPrivInfo4 input: Information specific to privilege model.
647
648 Result Codes
649 noErr 0 No error
650 nsvErr -35 Volume not found
651 paramErr -50 Volume is HFS or MFS (that is, it has
652 no foreign privilege model), or foreign
653 volume does not support these calls
654
655 __________
656
657 Also see: GetForeignPrivs, FSpGetForeignPrivs, FSpSetForeignPrivs
658 */
659
660 /*****************************************************************************/
661
662 EXTERN_API( OSErr )
663 FSpSetForeignPrivs(
664 const FSSpec * spec,
665 const void * foreignPrivBuffer,
666 long * foreignPrivSize,
667 long foreignPrivInfo1,
668 long foreignPrivInfo2,
669 long foreignPrivInfo3,
670 long foreignPrivInfo4);
671
672
673 /*
674 The FSpSetForeignPrivs function changes the native access-control
675 information for a file or directory stored on a volume managed by
676 a foreign file system.
677
678 spec input: An FSSpec record specifying the object.
679 foreignPrivBuffer input: Pointer to privilege information buffer.
680 foreignPrivSize input: Size of buffer pointed to by
681 foreignPrivBuffer.
682 output: Amount of buffer actually used.
683 foreignPrivInfo1 input: Information specific to privilege model.
684 foreignPrivInfo2 input: Information specific to privilege model.
685 foreignPrivInfo3 input: Information specific to privilege model.
686 foreignPrivInfo4 input: Information specific to privilege model.
687
688 Result Codes
689 noErr 0 No error
690 nsvErr -35 Volume not found
691 paramErr -50 Volume is HFS or MFS (that is, it has
692 no foreign privilege model), or foreign
693 volume does not support these calls
694
695 __________
696
697 Also see: GetForeignPrivs, FSpGetForeignPrivs, SetForeignPrivs
698 */
699
700 /*****************************************************************************/
701
702 EXTERN_API( OSErr )
703 HGetLogInInfo(
704 ConstStr255Param volName,
705 short vRefNum,
706 short * loginMethod,
707 StringPtr userName);
708
709
710 /*
711 The HGetLogInInfo function retrieves the login method and user name
712 used to log on to a particular shared volume.
713
714 volName input: A pointer to the name of a mounted volume
715 or nil.
716 vRefNum input: The volume reference number.
717 loginMethod output: The login method used (kNoUserAuthentication,
718 kPassword, kEncryptPassword, or
719 kTwoWayEncryptPassword).
720 userName input: Points to a buffer (minimum Str31) where the user
721 name is to be returned or must be nil.
722 output: The user name.
723
724 Result Codes
725 noErr 0 No error
726 nsvErr -35 Specified volume doesnÕt exist
727 paramErr -50 Function not supported by volume
728
729 __________
730
731 Also see: HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
732 FSpSetDirAccess, HMapName, HMapID
733 */
734
735 /*****************************************************************************/
736
737 EXTERN_API( OSErr )
738 HGetDirAccess(
739 short vRefNum,
740 long dirID,
741 ConstStr255Param name,
742 long * ownerID,
743 long * groupID,
744 long * accessRights);
745
746
747 /*
748 The HGetDirAccess function retrieves the directory access control
749 information for a directory on a shared volume.
750
751 vRefNum input: Volume specification.
752 dirID input: Directory ID.
753 name input: Pointer to directory name, or nil if dirID
754 specifies the directory.
755 ownerID output: The directory's owner ID.
756 groupID output: The directory's group ID or
757 0 if no group affiliation.
758 accessRights output: The directory's access rights.
759
760 Result Codes
761 noErr 0 No error
762 fnfErr -43 Directory not found
763 paramErr -50 Function not supported by volume
764 afpAccessDenied -5000 User does not have the correct access
765 to the directory
766
767 __________
768
769 Also see: HGetLogInInfo, FSpGetDirAccess, HSetDirAccess,
770 FSpSetDirAccess, HMapName, HMapID
771 */
772
773 /*****************************************************************************/
774
775 EXTERN_API( OSErr )
776 FSpGetDirAccess(
777 const FSSpec * spec,
778 long * ownerID,
779 long * groupID,
780 long * accessRights);
781
782
783 /*
784 The FSpGetDirAccess function retrieves the directory access control
785 information for a directory on a shared volume.
786
787 spec input: An FSSpec record specifying the directory.
788 ownerID output: The directory's owner ID.
789 groupID output: The directory's group ID or
790 0 if no group affiliation.
791 accessRights output: The directory's access rights.
792
793 Result Codes
794 noErr 0 No error
795 fnfErr -43 Directory not found
796 paramErr -50 Function not supported by volume
797 afpAccessDenied -5000 User does not have the correct access
798 to the directory
799
800 __________
801
802 Also see: HGetLogInInfo, HGetDirAccess, HSetDirAccess,
803 FSpSetDirAccess, HMapName, HMapID
804 */
805
806 /*****************************************************************************/
807
808 EXTERN_API( OSErr )
809 HSetDirAccess(
810 short vRefNum,
811 long dirID,
812 ConstStr255Param name,
813 long ownerID,
814 long groupID,
815 long accessRights);
816
817
818 /*
819 The HSetDirAccess function changes the directory access control
820 information for a directory on a shared volume. You must own a directory
821 to change its access control information.
822
823 vRefNum input: Volume specification.
824 dirID input: Directory ID.
825 name input: Pointer to directory name, or nil if dirID
826 specifies the directory.
827 ownerID input: The directory's owner ID.
828 groupID input: The directory's group ID or
829 0 if no group affiliation.
830 accessRights input: The directory's access rights.
831
832 Result Codes
833 noErr 0 No error
834 fnfErr -43 Directory not found
835 vLckdErr -46 Volume is locked or read-only
836 paramErr -50 Parameter error
837 afpAccessDenied -5000 User does not have the correct access
838 to the directory
839 afpObjectTypeErr -5025 Object is a file, not a directory
840
841 __________
842
843 Also see: HGetLogInInfo, HGetDirAccess, FSpGetDirAccess,
844 FSpSetDirAccess, HMapName, HMapID
845 */
846
847 /*****************************************************************************/
848
849 EXTERN_API( OSErr )
850 FSpSetDirAccess(
851 const FSSpec * spec,
852 long ownerID,
853 long groupID,
854 long accessRights);
855
856
857 /*
858 The FSpSetDirAccess function changes the directory access control
859 information for a directory on a shared volume. You must own a directory
860 to change its access control information.
861
862 spec input: An FSSpec record specifying the directory.
863 ownerID input: The directory's owner ID.
864 groupID input: The directory's group ID or
865 0 if no group affiliation.
866 accessRights input: The directory's access rights.
867
868 Result Codes
869 noErr 0 No error
870 fnfErr -43 Directory not found
871 vLckdErr -46 Volume is locked or read-only
872 paramErr -50 Parameter error
873 afpAccessDenied -5000 User does not have the correct access
874 to the directory
875 afpObjectTypeErr -5025 Object is a file, not a directory
876
877 __________
878
879 Also see: HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
880 HMapName, HMapID
881 */
882
883 /*****************************************************************************/
884
885 EXTERN_API( OSErr )
886 HMapID(
887 ConstStr255Param volName,
888 short vRefNum,
889 long ugID,
890 short objType,
891 StringPtr name);
892
893
894 /*
895 The HMapID function determines the name of a user or group if you know
896 the user or group ID.
897
898 volName input: A pointer to the name of a mounted volume
899 or nil.
900 vRefNum input: Volume specification.
901 objType input: The mapping function code: 1 if you're mapping a
902 user ID to a user name or 2 if you're mapping a
903 group ID to a group name.
904 name input: Points to a buffer (minimum Str31) where the user
905 or group name is to be returned or must be nil.
906 output: The user or group name.
907
908 Result Codes
909 noErr 0 No error
910 fnfErr -43 Unrecognizable owner or group name
911 paramErr -50 Function not supported by volume
912
913 __________
914
915 Also see: HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
916 FSpSetDirAccess, HMapName
917 */
918
919 /*****************************************************************************/
920
921 EXTERN_API( OSErr )
922 HMapName(
923 ConstStr255Param volName,
924 short vRefNum,
925 ConstStr255Param name,
926 short objType,
927 long * ugID);
928
929
930 /*
931 The HMapName function determines the user or group ID if you know the
932 user or group name.
933
934 volName input: A pointer to the name of a mounted volume
935 or nil.
936 vRefNum input: Volume specification.
937 name input: The user or group name.
938 objType input: The mapping function code: 3 if you're mapping a
939 user name to a user ID or 4 if you're mapping a
940 group name to a group ID.
941 ugID output: The user or group ID.
942
943 Result Codes
944 noErr 0 No error
945 fnfErr -43 Unrecognizable owner or group name
946 paramErr -50 Function not supported by volume
947
948 __________
949
950 Also see: HGetLogInInfo, HGetDirAccess, FSpGetDirAccess, HSetDirAccess,
951 FSpSetDirAccess, HMapID
952 */
953
954 /*****************************************************************************/
955
956 EXTERN_API( OSErr )
957 HCopyFile(
958 short srcVRefNum,
959 long srcDirID,
960 ConstStr255Param srcName,
961 short dstVRefNum,
962 long dstDirID,
963 ConstStr255Param dstPathname,
964 ConstStr255Param copyName);
965
966
967 /*
968 The HCopyFile function duplicates a file and optionally renames it.
969 The source and destination volumes must be on the same file server.
970 This function instructs the server to copy the file.
971
972 srcVRefNum input: Source volume specification.
973 srcDirID input: Source directory ID.
974 srcName input: Source file name.
975 dstVRefNum input: Destination volume specification.
976 dstDirID input: Destination directory ID.
977 dstPathname input: Pointer to destination directory name, or
978 nil when dstDirID specifies a directory.
979 copyName input: Points to the new file name if the file is to be
980 renamed or nil if the file isn't to be renamed.
981
982 Result Codes
983 noErr 0 No error
984 dskFulErr -34 Destination volume is full
985 fnfErr -43 Source file not found, or destination
986 directory does not exist
987 vLckdErr -46 Destination volume is read-only
988 fBsyErr -47 The source or destination file could
989 not be opened with the correct access
990 modes
991 dupFNErr -48 Destination file already exists
992 paramErr -50 Function not supported by volume
993 wrgVolTypErr -123 Function not supported by volume
994 afpAccessDenied -5000 The user does not have the right to
995 read the source or write to the
996 destination
997 afpDenyConflict -5006 The source or destination file could
998 not be opened with the correct access
999 modes
1000 afpObjectTypeErr -5025 Source is a directory
1001
1002 __________
1003
1004 Also see: FSpCopyFile, FileCopy, FSpFileCopy
1005 */
1006
1007 /*****************************************************************************/
1008
1009 EXTERN_API( OSErr )
1010 FSpCopyFile(
1011 const FSSpec * srcSpec,
1012 const FSSpec * dstSpec,
1013 ConstStr255Param copyName);
1014
1015
1016 /*
1017 The FSpCopyFile function duplicates a file and optionally renames it.
1018 The source and destination volumes must be on the same file server.
1019 This function instructs the server to copy the file.
1020
1021 srcSpec input: An FSSpec record specifying the source file.
1022 dstSpec input: An FSSpec record specifying the destination
1023 directory.
1024 copyName input: Points to the new file name if the file is to be
1025 renamed or nil if the file isn't to be renamed.
1026
1027 Result Codes
1028 noErr 0 No error
1029 dskFulErr -34 Destination volume is full
1030 fnfErr -43 Source file not found, or destination
1031 directory does not exist
1032 vLckdErr -46 Destination volume is read-only
1033 fBsyErr -47 The source or destination file could
1034 not be opened with the correct access
1035 modes
1036 dupFNErr -48 Destination file already exists
1037 paramErr -50 Function not supported by volume
1038 wrgVolTypErr -123 Function not supported by volume
1039 afpAccessDenied -5000 The user does not have the right to
1040 read the source or write to the
1041 destination
1042 afpDenyConflict -5006 The source or destination file could
1043 not be opened with the correct access
1044 modes
1045 afpObjectTypeErr -5025 Source is a directory
1046
1047 __________
1048
1049 Also see: HCopyFile, FileCopy, FSpFileCopy
1050 */
1051
1052 /*****************************************************************************/
1053
1054 EXTERN_API( OSErr )
1055 HMoveRename(
1056 short vRefNum,
1057 long srcDirID,
1058 ConstStr255Param srcName,
1059 long dstDirID,
1060 ConstStr255Param dstpathName,
1061 ConstStr255Param copyName);
1062
1063
1064 /*
1065 The HMoveRename function moves a file or directory and optionally
1066 renames it. The source and destination locations must be on the same
1067 shared volume.
1068
1069 vRefNum input: Volume specification.
1070 srcDirID input: Source directory ID.
1071 srcName input: The source object name.
1072 dstDirID input: Destination directory ID.
1073 dstName input: Pointer to destination directory name, or
1074 nil when dstDirID specifies a directory.
1075 copyName input: Points to the new name if the object is to be
1076 renamed or nil if the object isn't to be renamed.
1077
1078 Result Codes
1079 noErr 0 No error
1080 fnfErr -43 Source file or directory not found
1081 fLckdErr -45 File is locked
1082 vLckdErr -46 Destination volume is read-only
1083 dupFNErr -48 Destination already exists
1084 paramErr -50 Function not supported by volume
1085 badMovErr -122 Attempted to move directory into
1086 offspring
1087 afpAccessDenied -5000 The user does not have the right to
1088 move the file or directory
1089
1090 __________
1091
1092 Also see: FSpMoveRename, HMoveRenameCompat, FSpMoveRenameCompat
1093 */
1094
1095 /*****************************************************************************/
1096
1097 EXTERN_API( OSErr )
1098 FSpMoveRename(
1099 const FSSpec * srcSpec,
1100 const FSSpec * dstSpec,
1101 ConstStr255Param copyName);
1102
1103
1104 /*
1105 The FSpMoveRename function moves a file or directory and optionally
1106 renames it. The source and destination locations must be on the same
1107 shared volume.
1108
1109 srcSpec input: An FSSpec record specifying the source object.
1110 dstSpec input: An FSSpec record specifying the destination
1111 directory.
1112 copyName input: Points to the new name if the object is to be
1113 renamed or nil if the object isn't to be renamed.
1114
1115 Result Codes
1116 noErr 0 No error
1117 fnfErr -43 Source file or directory not found
1118 fLckdErr -45 File is locked
1119 vLckdErr -46 Destination volume is read-only
1120 dupFNErr -48 Destination already exists
1121 paramErr -50 Function not supported by volume
1122 badMovErr -122 Attempted to move directory into
1123 offspring
1124 afpAccessDenied -5000 The user does not have the right to
1125 move the file or directory
1126
1127 __________
1128
1129 Also see: HMoveRename, HMoveRenameCompat, FSpMoveRenameCompat
1130 */
1131
1132 /*****************************************************************************/
1133
1134 EXTERN_API( OSErr )
1135 GetVolMountInfoSize(
1136 ConstStr255Param volName,
1137 short vRefNum,
1138 short * size);
1139
1140
1141 /*
1142 The GetVolMountInfoSize function determines the how much space the
1143 program needs to allocate for a volume mounting information record.
1144
1145 volName input: A pointer to the name of a mounted volume
1146 or nil.
1147 vRefNum input: Volume specification.
1148 size output: The space needed (in bytes) of the volume mounting
1149 information record.
1150
1151 Result Codes
1152 noErr 0 No error
1153 nsvErr -35 Volume not found
1154 paramErr -50 Parameter error
1155 extFSErr -58 External file system error - no file
1156 system claimed this call.
1157
1158 __________
1159
1160 Also see: GetVolMountInfo, VolumeMount BuildAFPVolMountInfo,
1161 RetrieveAFPVolMountInfo
1162 */
1163
1164 /*****************************************************************************/
1165
1166 EXTERN_API( OSErr )
1167 GetVolMountInfo(
1168 ConstStr255Param volName,
1169 short vRefNum,
1170 void * volMountInfo);
1171
1172
1173 /*
1174 The GetVolMountInfo function retrieves a volume mounting information
1175 record containing all the information needed to mount the volume,
1176 except for passwords.
1177
1178 volName input: A pointer to the name of a mounted volume
1179 or nil.
1180 vRefNum input: Volume specification.
1181 volMountInfo output: Points to a volume mounting information
1182 record where the mounting information is to
1183 be returned.
1184
1185 Result Codes
1186 noErr 0 No error
1187 nsvErr -35 Volume not found
1188 paramErr -50 Parameter error
1189 extFSErr -58 External file system error - no file
1190 system claimed this call.
1191
1192 __________
1193
1194 Also see: GetVolMountInfoSize, VolumeMount, BuildAFPVolMountInfo,
1195 RetrieveAFPVolMountInfo
1196 */
1197
1198 /*****************************************************************************/
1199
1200 EXTERN_API( OSErr )
1201 VolumeMount(
1202 const void * volMountInfo,
1203 short * vRefNum);
1204
1205
1206 /*
1207 The VolumeMount function mounts a volume using a volume mounting
1208 information record.
1209
1210 volMountInfo input: Points to a volume mounting information record.
1211 vRefNum output: A volume reference number.
1212
1213 Result Codes
1214 noErr 0 No error
1215 notOpenErr -28 AppleTalk is not open
1216 nsvErr -35 Volume not found
1217 paramErr -50 Parameter error; typically, zone, server,
1218 and volume name combination is not valid
1219 or not complete, or the user name is not
1220 recognized
1221 extFSErr -58 External file system error - no file
1222 system claimed this call.
1223 memFullErr -108 Not enough memory to create a new volume
1224 control block for mounting the volume
1225 afpBadUAM -5002 User authentication method is unknown
1226 afpBadVersNum -5003 Workstation is using an AFP version that
1227 the server doesnÕt recognize
1228 afpNoServer -5016 Server is not responding
1229 afpUserNotAuth -5023 User authentication failed (usually,
1230 password is not correct)
1231 afpPwdExpired -5042 Password has expired on server
1232 afpBadDirIDType -5060 Not a fixed directory ID volume
1233 afpCantMountMoreSrvrs -5061 Maximum number of volumes has been
1234 mounted
1235 afpAlreadyMounted -5062 Volume already mounted
1236 afpSameNodeErr -5063 Attempt to log on to a server running
1237 on the same machine
1238
1239 __________
1240
1241 Also see: GetVolMountInfoSize, GetVolMountInfo, BuildAFPVolMountInfo,
1242 RetrieveAFPVolMountInfo
1243 */
1244
1245 /*****************************************************************************/
1246
1247 EXTERN_API( OSErr )
1248 Share(
1249 short vRefNum,
1250 long dirID,
1251 ConstStr255Param name);
1252
1253
1254 /*
1255 The Share function establishes a local volume or directory as a
1256 share point.
1257
1258 vRefNum input: Volume specification.
1259 dirID input: Directory ID.
1260 name input: Pointer to directory name, or nil if dirID
1261 specifies the directory.
1262
1263 Result Codes
1264 noErr 0 No error
1265 tmfoErr -42 Too many share points
1266 fnfErr -43 File not found
1267 dupFNErr -48 Already a share point with this name
1268 paramErr -50 Function not supported by volume
1269 dirNFErrdirNFErr -120 Directory not found
1270 afpAccessDenied -5000 This directory cannot be shared
1271 afpObjectTypeErr -5025 Object was a file, not a directory
1272 afpContainsSharedErr -5033 The directory contains a share point
1273 afpInsideSharedErr -5043 The directory is inside a shared directory
1274
1275 __________
1276
1277 Also see: FSpShare, Unshare, FSpUnshare
1278 */
1279
1280 /*****************************************************************************/
1281
1282 EXTERN_API( OSErr )
1283 FSpShare(const FSSpec * spec);
1284
1285
1286 /*
1287 The FSpShare function establishes a local volume or directory as a
1288 share point.
1289
1290 spec input: An FSSpec record specifying the share point.
1291
1292 Result Codes
1293 noErr 0 No error
1294 tmfoErr -42 Too many share points
1295 fnfErr -43 File not found
1296 dupFNErr -48 Already a share point with this name
1297 paramErr -50 Function not supported by volume
1298 dirNFErrdirNFErr -120 Directory not found
1299 afpAccessDenied -5000 This directory cannot be shared
1300 afpObjectTypeErr -5025 Object was a file, not a directory
1301 afpContainsSharedErr -5033 The directory contains a share point
1302 afpInsideSharedErr -5043 The directory is inside a shared directory
1303
1304 __________
1305
1306 Also see: Share, Unshare, FSpUnshare
1307 */
1308
1309 /*****************************************************************************/
1310
1311 EXTERN_API( OSErr )
1312 Unshare(
1313 short vRefNum,
1314 long dirID,
1315 ConstStr255Param name);
1316
1317
1318 /*
1319 The Unshare function removes a share point.
1320
1321 vRefNum input: Volume specification.
1322 dirID input: Directory ID.
1323 name input: Pointer to directory name, or nil if dirID
1324 specifies the directory.
1325
1326 Result Codes
1327 noErr 0 No error
1328 fnfErr -43 File not found
1329 paramErr -50 Function not supported by volume
1330 dirNFErrdirNFErr -120 Directory not found
1331 afpObjectTypeErr -5025 Object was a file, not a directory; or,
1332 this directory is not a share point
1333
1334 __________
1335
1336 Also see: Share, FSpShare, FSpUnshare
1337 */
1338
1339 /*****************************************************************************/
1340
1341 EXTERN_API( OSErr )
1342 FSpUnshare(const FSSpec * spec);
1343
1344
1345 /*
1346 The FSpUnshare function removes a share point.
1347
1348 spec input: An FSSpec record specifying the share point.
1349
1350 Result Codes
1351 noErr 0 No error
1352 fnfErr -43 File not found
1353 paramErr -50 Function not supported by volume
1354 dirNFErrdirNFErr -120 Directory not found
1355 afpObjectTypeErr -5025 Object was a file, not a directory; or,
1356 this directory is not a share point
1357
1358 __________
1359
1360 Also see: Share, FSpShare, Unshare
1361 */
1362
1363 /*****************************************************************************/
1364
1365 EXTERN_API( OSErr )
1366 GetUGEntry(
1367 short objType,
1368 StringPtr objName,
1369 long * objID);
1370
1371
1372 /*
1373 The GetUGEntry function retrieves user or group entries from the
1374 local file server.
1375
1376 objType input: The object type: -1 = group; 0 = user
1377 objName input: Points to a buffer (minimum Str31) where the user
1378 or group name is to be returned or must be nil.
1379 output: The user or group name.
1380 objID input: O to get the first user or group. If the entry objID
1381 last returned by GetUGEntry is passed, then user or
1382 group whose alphabetically next in the list of entries
1383 is returned.
1384 output: The user or group ID.
1385
1386 Result Codes
1387 noErr 0 No error
1388 fnfErr -43 No more users or groups
1389 paramErr -50 Function not supported; or, ioObjID is
1390 negative
1391
1392 __________
1393
1394 Also see: GetUGEntries
1395 */
1396
1397 /*****************************************************************************/
1398
1399 #include "OptimizationEnd.h"
1400
1401 #if PRAGMA_STRUCT_ALIGN
1402 #pragma options align=reset
1403 #elif PRAGMA_STRUCT_PACKPUSH
1404 #pragma pack(pop)
1405 #elif PRAGMA_STRUCT_PACK
1406 #pragma pack()
1407 #endif
1408
1409 #ifdef PRAGMA_IMPORT_OFF
1410 #pragma import off
1411 #elif PRAGMA_IMPORT
1412 #pragma import reset
1413 #endif
1414
1415 #ifdef __cplusplus
1416 }
1417 #endif
1418
1419 #endif /* __MOREFILES__ */
1420