annotate 3rdparty/packages/cc/sources/change.a @ 867:0198655f2552

Added sources
author boisy
date Thu, 16 Jan 2003 19:54:21 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
867
0198655f2552 Added sources
boisy
parents:
diff changeset
1 ifp1
0198655f2552 Added sources
boisy
parents:
diff changeset
2 use ..../defs/os9defs.a
0198655f2552 Added sources
boisy
parents:
diff changeset
3 endc
0198655f2552 Added sources
boisy
parents:
diff changeset
4 Carry equ %00000001
0198655f2552 Added sources
boisy
parents:
diff changeset
5 Write. equ 2 write access
0198655f2552 Added sources
boisy
parents:
diff changeset
6 FD.Att equ 0 FD offset to attr
0198655f2552 Added sources
boisy
parents:
diff changeset
7 FD.Own equ 1 FD offset to owner
0198655f2552 Added sources
boisy
parents:
diff changeset
8
0198655f2552 Added sources
boisy
parents:
diff changeset
9 Bufsize equ 16 FD info bytes
0198655f2552 Added sources
boisy
parents:
diff changeset
10
0198655f2552 Added sources
boisy
parents:
diff changeset
11 psect change,0,0,2,0,0
0198655f2552 Added sources
boisy
parents:
diff changeset
12
0198655f2552 Added sources
boisy
parents:
diff changeset
13 * chown(fname,owner)
0198655f2552 Added sources
boisy
parents:
diff changeset
14 chown:
0198655f2552 Added sources
boisy
parents:
diff changeset
15 pshs y,u save registers
0198655f2552 Added sources
boisy
parents:
diff changeset
16 leas -Bufsize,s reserve buffer space
0198655f2552 Added sources
boisy
parents:
diff changeset
17 os9 F$ID get user ID
0198655f2552 Added sources
boisy
parents:
diff changeset
18 bcs chexit bra if error
0198655f2552 Added sources
boisy
parents:
diff changeset
19 ldb #E$FNA prime for error
0198655f2552 Added sources
boisy
parents:
diff changeset
20 cmpy #0 superuser?
0198655f2552 Added sources
boisy
parents:
diff changeset
21 orcc #Carry prime the carry
0198655f2552 Added sources
boisy
parents:
diff changeset
22 bne chexit bra if not
0198655f2552 Added sources
boisy
parents:
diff changeset
23
0198655f2552 Added sources
boisy
parents:
diff changeset
24 bsr openfile open file and read FD
0198655f2552 Added sources
boisy
parents:
diff changeset
25 bcs chexit bra if error
0198655f2552 Added sources
boisy
parents:
diff changeset
26
0198655f2552 Added sources
boisy
parents:
diff changeset
27 pshs a save path number
0198655f2552 Added sources
boisy
parents:
diff changeset
28 ldd Bufsize+9,s get the new owner id
0198655f2552 Added sources
boisy
parents:
diff changeset
29 std FD.Own,x modify the FD
0198655f2552 Added sources
boisy
parents:
diff changeset
30 puls a restore path number
0198655f2552 Added sources
boisy
parents:
diff changeset
31 ldb #SS.FD write FD code
0198655f2552 Added sources
boisy
parents:
diff changeset
32 os9 I$SETSTT write the FD
0198655f2552 Added sources
boisy
parents:
diff changeset
33 bcs chexit bra if error
0198655f2552 Added sources
boisy
parents:
diff changeset
34 os9 I$CLOSE close the file
0198655f2552 Added sources
boisy
parents:
diff changeset
35
0198655f2552 Added sources
boisy
parents:
diff changeset
36 * carry set is error exit, clear for normal
0198655f2552 Added sources
boisy
parents:
diff changeset
37 chexit
0198655f2552 Added sources
boisy
parents:
diff changeset
38 leas Bufsize,s return scratch
0198655f2552 Added sources
boisy
parents:
diff changeset
39 puls y,u restore regs
0198655f2552 Added sources
boisy
parents:
diff changeset
40 lbra _sysret return to caller
0198655f2552 Added sources
boisy
parents:
diff changeset
41
0198655f2552 Added sources
boisy
parents:
diff changeset
42 *
0198655f2552 Added sources
boisy
parents:
diff changeset
43 * open file and fetch file FD
0198655f2552 Added sources
boisy
parents:
diff changeset
44 * Bufsize buffer is at 2,s
0198655f2552 Added sources
boisy
parents:
diff changeset
45 *
0198655f2552 Added sources
boisy
parents:
diff changeset
46 openfile
0198655f2552 Added sources
boisy
parents:
diff changeset
47 lda #Write. access mode
0198655f2552 Added sources
boisy
parents:
diff changeset
48 ldx Bufsize+8,s address of name
0198655f2552 Added sources
boisy
parents:
diff changeset
49 os9 I$OPEN open the file
0198655f2552 Added sources
boisy
parents:
diff changeset
50 bcc openf10 exit if error
0198655f2552 Added sources
boisy
parents:
diff changeset
51 rts
0198655f2552 Added sources
boisy
parents:
diff changeset
52
0198655f2552 Added sources
boisy
parents:
diff changeset
53 openf10
0198655f2552 Added sources
boisy
parents:
diff changeset
54 leax 2,s get buffer address
0198655f2552 Added sources
boisy
parents:
diff changeset
55 ldy #Bufsize and size
0198655f2552 Added sources
boisy
parents:
diff changeset
56 ldb #SS.FD read FD code
0198655f2552 Added sources
boisy
parents:
diff changeset
57 os9 I$GETSTT read the FD
0198655f2552 Added sources
boisy
parents:
diff changeset
58 rts
0198655f2552 Added sources
boisy
parents:
diff changeset
59
0198655f2552 Added sources
boisy
parents:
diff changeset
60 * chmod(fname,perm)
0198655f2552 Added sources
boisy
parents:
diff changeset
61 chmod:
0198655f2552 Added sources
boisy
parents:
diff changeset
62 pshs y,u save registers
0198655f2552 Added sources
boisy
parents:
diff changeset
63 leas -Bufsize,s reserve buffer space
0198655f2552 Added sources
boisy
parents:
diff changeset
64
0198655f2552 Added sources
boisy
parents:
diff changeset
65 bsr openfile open file and read FD
0198655f2552 Added sources
boisy
parents:
diff changeset
66 bcs chexit bra if error
0198655f2552 Added sources
boisy
parents:
diff changeset
67
0198655f2552 Added sources
boisy
parents:
diff changeset
68 pshs a,y save regs
0198655f2552 Added sources
boisy
parents:
diff changeset
69 os9 F$ID get user id
0198655f2552 Added sources
boisy
parents:
diff changeset
70 cmpy #0 super-user?
0198655f2552 Added sources
boisy
parents:
diff changeset
71 beq chmod10 yes, he can do it
0198655f2552 Added sources
boisy
parents:
diff changeset
72 ldb #E$FNA prime for error
0198655f2552 Added sources
boisy
parents:
diff changeset
73 cmpy FD.Own,x user's own file?
0198655f2552 Added sources
boisy
parents:
diff changeset
74 orcc #Carry prime the carry
0198655f2552 Added sources
boisy
parents:
diff changeset
75 bne chexit no, return error
0198655f2552 Added sources
boisy
parents:
diff changeset
76
0198655f2552 Added sources
boisy
parents:
diff changeset
77 chmod10
0198655f2552 Added sources
boisy
parents:
diff changeset
78 ldb Bufsize+12,s get the new attributes
0198655f2552 Added sources
boisy
parents:
diff changeset
79 stb FD.Att,x update FD
0198655f2552 Added sources
boisy
parents:
diff changeset
80 puls a,y restore path number
0198655f2552 Added sources
boisy
parents:
diff changeset
81 ldb #SS.FD write FD code
0198655f2552 Added sources
boisy
parents:
diff changeset
82 os9 I$SETSTT write the FD
0198655f2552 Added sources
boisy
parents:
diff changeset
83 bcs chexit bra if error
0198655f2552 Added sources
boisy
parents:
diff changeset
84 os9 I$CLOSE close the file
0198655f2552 Added sources
boisy
parents:
diff changeset
85 bra chexit and exit
0198655f2552 Added sources
boisy
parents:
diff changeset
86
0198655f2552 Added sources
boisy
parents:
diff changeset
87 endsect