ofs | hex dump | ascii |
---|
0000 | 6e 63 70 66 73 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/.......................... |
0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000755.0001750.0001750.0000 |
0080 | 30 30 30 30 30 30 30 00 31 33 30 35 35 30 30 30 37 30 30 00 30 31 31 31 36 33 00 20 35 00 00 00 | 0000000.13055000700.011163..5... |
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0100 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
0120 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0200 | 6e 63 70 66 73 2f 4b 63 6f 6e 66 69 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/Kconfig................... |
0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
0280 | 30 30 31 30 31 33 35 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 37 31 00 20 30 00 00 00 | 0010135.13023323142.012471..0... |
02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0300 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
0320 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0400 | 23 0a 23 20 4e 43 50 20 46 69 6c 65 73 79 73 74 65 6d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e | #.#.NCP.Filesystem.configuration |
0420 | 0a 23 0a 63 6f 6e 66 69 67 20 4e 43 50 5f 46 53 0a 09 74 72 69 73 74 61 74 65 20 22 4e 43 50 20 | .#.config.NCP_FS..tristate."NCP. |
0440 | 66 69 6c 65 20 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 20 28 74 6f 20 6d 6f 75 6e 74 20 4e 65 | file.system.support.(to.mount.Ne |
0460 | 74 57 61 72 65 20 76 6f 6c 75 6d 65 73 29 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 49 50 58 21 | tWare.volumes)"..depends.on.IPX! |
0480 | 3d 6e 20 7c 7c 20 49 4e 45 54 0a 09 68 65 6c 70 0a 09 20 20 4e 43 50 20 28 4e 65 74 57 61 72 65 | =n.||.INET..help....NCP.(NetWare |
04a0 | 20 43 6f 72 65 20 50 72 6f 74 6f 63 6f 6c 29 20 69 73 20 61 20 70 72 6f 74 6f 63 6f 6c 20 74 68 | .Core.Protocol).is.a.protocol.th |
04c0 | 61 74 20 72 75 6e 73 20 6f 76 65 72 20 49 50 58 20 61 6e 64 20 69 73 0a 09 20 20 75 73 65 64 20 | at.runs.over.IPX.and.is....used. |
04e0 | 62 79 20 4e 6f 76 65 6c 6c 20 4e 65 74 57 61 72 65 20 63 6c 69 65 6e 74 73 20 74 6f 20 74 61 6c | by.Novell.NetWare.clients.to.tal |
0500 | 6b 20 74 6f 20 66 69 6c 65 20 73 65 72 76 65 72 73 2e 20 20 49 74 20 69 73 20 74 6f 0a 09 20 20 | k.to.file.servers...It.is.to.... |
0520 | 49 50 58 20 77 68 61 74 20 4e 46 53 20 69 73 20 74 6f 20 54 43 50 2f 49 50 2c 20 69 66 20 74 68 | IPX.what.NFS.is.to.TCP/IP,.if.th |
0540 | 61 74 20 68 65 6c 70 73 2e 20 20 53 61 79 69 6e 67 20 59 20 68 65 72 65 20 61 6c 6c 6f 77 73 20 | at.helps...Saying.Y.here.allows. |
0560 | 79 6f 75 0a 09 20 20 74 6f 20 6d 6f 75 6e 74 20 4e 65 74 57 61 72 65 20 66 69 6c 65 20 73 65 72 | you....to.mount.NetWare.file.ser |
0580 | 76 65 72 20 76 6f 6c 75 6d 65 73 20 61 6e 64 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 6d 20 6a | ver.volumes.and.to.access.them.j |
05a0 | 75 73 74 20 6c 69 6b 65 0a 09 20 20 61 6e 79 20 6f 74 68 65 72 20 55 6e 69 78 20 64 69 72 65 63 | ust.like....any.other.Unix.direc |
05c0 | 74 6f 72 79 2e 20 20 46 6f 72 20 64 65 74 61 69 6c 73 2c 20 70 6c 65 61 73 65 20 72 65 61 64 20 | tory...For.details,.please.read. |
05e0 | 74 68 65 20 66 69 6c 65 0a 09 20 20 3c 66 69 6c 65 3a 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f | the.file....<file:Documentation/ |
0600 | 66 69 6c 65 73 79 73 74 65 6d 73 2f 6e 63 70 66 73 2e 74 78 74 3e 20 69 6e 20 74 68 65 20 6b 65 | filesystems/ncpfs.txt>.in.the.ke |
0620 | 72 6e 65 6c 20 73 6f 75 72 63 65 20 61 6e 64 0a 09 20 20 74 68 65 20 49 50 58 2d 48 4f 57 54 4f | rnel.source.and....the.IPX-HOWTO |
0640 | 20 66 72 6f 6d 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 74 6c 64 70 2e 6f 72 67 2f 64 6f 63 73 2e | .from.<http://www.tldp.org/docs. |
0660 | 68 74 6d 6c 23 68 6f 77 74 6f 3e 2e 0a 0a 09 20 20 59 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 | html#howto>......You.do.not.have |
0680 | 20 74 6f 20 73 61 79 20 59 20 68 65 72 65 20 69 66 20 79 6f 75 20 77 61 6e 74 20 79 6f 75 72 20 | .to.say.Y.here.if.you.want.your. |
06a0 | 4c 69 6e 75 78 20 62 6f 78 20 74 6f 20 61 63 74 20 61 73 20 61 0a 09 20 20 66 69 6c 65 20 2a 73 | Linux.box.to.act.as.a....file.*s |
06c0 | 65 72 76 65 72 2a 20 66 6f 72 20 4e 6f 76 65 6c 6c 20 4e 65 74 57 61 72 65 20 63 6c 69 65 6e 74 | erver*.for.Novell.NetWare.client |
06e0 | 73 2e 0a 0a 09 20 20 47 65 6e 65 72 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 | s......General.information.about |
0700 | 20 68 6f 77 20 74 6f 20 63 6f 6e 6e 65 63 74 20 4c 69 6e 75 78 2c 20 57 69 6e 64 6f 77 73 20 6d | .how.to.connect.Linux,.Windows.m |
0720 | 61 63 68 69 6e 65 73 20 61 6e 64 0a 09 20 20 4d 61 63 73 20 69 73 20 6f 6e 20 74 68 65 20 57 57 | achines.and....Macs.is.on.the.WW |
0740 | 57 20 61 74 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 65 61 74 73 2e 63 6f 6d 2f 6c 69 6e 75 78 5f | W.at.<http://www.eats.com/linux_ |
0760 | 6d 61 63 5f 77 69 6e 2e 68 74 6d 6c 3e 2e 0a 0a 09 20 20 54 6f 20 63 6f 6d 70 69 6c 65 20 74 68 | mac_win.html>......To.compile.th |
0780 | 69 73 20 61 73 20 61 20 6d 6f 64 75 6c 65 2c 20 63 68 6f 6f 73 65 20 4d 20 68 65 72 65 3a 20 74 | is.as.a.module,.choose.M.here:.t |
07a0 | 68 65 20 6d 6f 64 75 6c 65 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 0a 09 20 20 6e 63 70 66 | he.module.will.be.called....ncpf |
07c0 | 73 2e 20 20 53 61 79 20 4e 20 75 6e 6c 65 73 73 20 79 6f 75 20 61 72 65 20 63 6f 6e 6e 65 63 74 | s...Say.N.unless.you.are.connect |
07e0 | 65 64 20 74 6f 20 61 20 4e 6f 76 65 6c 6c 20 6e 65 74 77 6f 72 6b 2e 0a 0a 63 6f 6e 66 69 67 20 | ed.to.a.Novell.network...config. |
0800 | 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 62 6f 6f 6c 20 22 50 61 63 6b | NCPFS_PACKET_SIGNING..bool."Pack |
0820 | 65 74 20 73 69 67 6e 61 74 75 72 65 73 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 | et.signatures"..depends.on.NCP_F |
0840 | 53 0a 09 68 65 6c 70 0a 09 20 20 4e 43 50 20 61 6c 6c 6f 77 73 20 70 61 63 6b 65 74 73 20 74 6f | S..help....NCP.allows.packets.to |
0860 | 20 62 65 20 73 69 67 6e 65 64 20 66 6f 72 20 73 74 72 6f 6e 67 65 72 20 73 65 63 75 72 69 74 79 | .be.signed.for.stronger.security |
0880 | 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 0a 09 20 20 73 65 63 75 72 69 74 79 2c 20 73 61 79 20 59 | ..If.you.want....security,.say.Y |
08a0 | 2e 20 20 4e 6f 72 6d 61 6c 20 75 73 65 72 73 20 63 61 6e 20 6c 65 61 76 65 20 69 74 20 6f 66 66 | ...Normal.users.can.leave.it.off |
08c0 | 2e 20 20 54 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 75 73 65 0a 09 20 20 70 61 63 6b 65 74 20 73 | ...To.be.able.to.use....packet.s |
08e0 | 69 67 6e 69 6e 67 20 79 6f 75 20 6d 75 73 74 20 75 73 65 20 6e 63 70 66 73 20 3e 20 32 2e 30 2e | igning.you.must.use.ncpfs.>.2.0. |
0900 | 31 32 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a | 12...config.NCPFS_IOCTL_LOCKING. |
0920 | 09 62 6f 6f 6c 20 22 50 72 6f 70 72 69 65 74 61 72 79 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 22 | .bool."Proprietary.file.locking" |
0940 | 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c | ..depends.on.NCP_FS..help....All |
0960 | 6f 77 73 20 6c 6f 63 6b 69 6e 67 20 6f 66 20 72 65 63 6f 72 64 73 20 6f 6e 20 72 65 6d 6f 74 65 | ows.locking.of.records.on.remote |
0980 | 20 76 6f 6c 75 6d 65 73 2e 20 20 53 61 79 20 4e 20 75 6e 6c 65 73 73 20 79 6f 75 20 68 61 76 65 | .volumes...Say.N.unless.you.have |
09a0 | 0a 09 20 20 73 70 65 63 69 61 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 20 61 | ....special.applications.which.a |
09c0 | 72 65 20 61 62 6c 65 20 74 6f 20 75 74 69 6c 69 7a 65 20 74 68 69 73 20 6c 6f 63 6b 69 6e 67 20 | re.able.to.utilize.this.locking. |
09e0 | 73 63 68 65 6d 65 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 62 6f | scheme...config.NCPFS_STRONG..bo |
0a00 | 6f 6c 20 22 43 6c 65 61 72 20 72 65 6d 6f 76 65 2f 64 65 6c 65 74 65 20 69 6e 68 69 62 69 74 20 | ol."Clear.remove/delete.inhibit. |
0a20 | 77 68 65 6e 20 6e 65 65 64 65 64 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a | when.needed"..depends.on.NCP_FS. |
0a40 | 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6f 66 20 | .help....Allows.manipulation.of. |
0a60 | 66 69 6c 65 73 20 66 6c 61 67 67 65 64 20 61 73 20 44 65 6c 65 74 65 20 6f 72 20 52 65 6e 61 6d | files.flagged.as.Delete.or.Renam |
0a80 | 65 20 49 6e 68 69 62 69 74 2e 0a 09 20 20 54 6f 20 75 73 65 20 74 68 69 73 20 66 65 61 74 75 72 | e.Inhibit.....To.use.this.featur |
0aa0 | 65 20 79 6f 75 20 6d 75 73 74 20 6d 6f 75 6e 74 20 76 6f 6c 75 6d 65 73 20 77 69 74 68 20 74 68 | e.you.must.mount.volumes.with.th |
0ac0 | 65 20 6e 63 70 6d 6f 75 6e 74 0a 09 20 20 70 61 72 61 6d 65 74 65 72 20 22 2d 73 22 20 28 6e 63 | e.ncpmount....parameter."-s".(nc |
0ae0 | 70 66 73 2d 32 2e 30 2e 31 32 20 61 6e 64 20 6e 65 77 65 72 29 2e 20 20 53 61 79 20 59 20 75 6e | pfs-2.0.12.and.newer)...Say.Y.un |
0b00 | 6c 65 73 73 20 79 6f 75 20 61 72 65 20 6e 6f 74 0a 09 20 20 6d 6f 75 6e 74 69 6e 67 20 76 6f 6c | less.you.are.not....mounting.vol |
0b20 | 75 6d 65 73 20 77 69 74 68 20 2d 66 20 34 34 34 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f | umes.with.-f.444...config.NCPFS_ |
0b40 | 4e 46 53 5f 4e 53 0a 09 62 6f 6f 6c 20 22 55 73 65 20 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 20 | NFS_NS..bool."Use.NFS.namespace. |
0b60 | 69 66 20 61 76 61 69 6c 61 62 6c 65 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 | if.available"..depends.on.NCP_FS |
0b80 | 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 74 69 6c 69 7a 65 20 | ..help....Allows.you.to.utilize. |
0ba0 | 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 20 6f 6e 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 73 | NFS.namespace.on.NetWare.servers |
0bc0 | 2e 20 20 49 74 20 62 72 69 6e 67 73 0a 09 20 20 79 6f 75 20 63 61 73 65 20 73 65 6e 73 69 74 69 | ...It.brings....you.case.sensiti |
0be0 | 76 65 20 66 69 6c 65 6e 61 6d 65 73 2e 20 20 53 61 79 20 59 2e 20 20 59 6f 75 20 63 61 6e 20 64 | ve.filenames...Say.Y...You.can.d |
0c00 | 69 73 61 62 6c 65 20 69 74 20 61 74 0a 09 20 20 6d 6f 75 6e 74 2d 74 69 6d 65 20 77 69 74 68 20 | isable.it.at....mount-time.with. |
0c20 | 74 68 65 20 60 2d 4e 20 6e 66 73 27 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 6e 63 70 6d 6f 75 | the.`-N.nfs'.parameter.of.ncpmou |
0c40 | 6e 74 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 0a 09 62 6f 6f 6c 20 22 | nt...config.NCPFS_OS2_NS..bool." |
0c60 | 55 73 65 20 4c 4f 4e 47 20 28 4f 53 2f 32 29 20 6e 61 6d 65 73 70 61 63 65 20 69 66 20 61 76 61 | Use.LONG.(OS/2).namespace.if.ava |
0c80 | 69 6c 61 62 6c 65 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 | ilable"..depends.on.NCP_FS..help |
0ca0 | 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 74 69 6c 69 7a 65 20 4f 53 32 2f 4c 4f | ....Allows.you.to.utilize.OS2/LO |
0cc0 | 4e 47 20 6e 61 6d 65 73 70 61 63 65 20 6f 6e 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 73 2e | NG.namespace.on.NetWare.servers. |
0ce0 | 0a 09 20 20 46 69 6c 65 6e 61 6d 65 73 20 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65 20 | ....Filenames.in.this.namespace. |
0d00 | 61 72 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 32 35 35 20 63 68 61 72 61 63 74 65 72 73 2c 20 74 | are.limited.to.255.characters,.t |
0d20 | 68 65 79 20 61 72 65 0a 09 20 20 63 61 73 65 20 69 6e 73 65 6e 73 69 74 69 76 65 2c 20 61 6e 64 | hey.are....case.insensitive,.and |
0d40 | 20 63 61 73 65 20 69 6e 20 6e 61 6d 65 73 20 69 73 20 70 72 65 73 65 72 76 65 64 2e 20 20 53 61 | .case.in.names.is.preserved...Sa |
0d60 | 79 20 59 2e 20 20 59 6f 75 20 63 61 6e 0a 09 20 20 64 69 73 61 62 6c 65 20 69 74 20 61 74 20 6d | y.Y...You.can....disable.it.at.m |
0d80 | 6f 75 6e 74 20 74 69 6d 65 20 77 69 74 68 20 74 68 65 20 2d 4e 20 6f 73 32 20 70 61 72 61 6d 65 | ount.time.with.the.-N.os2.parame |
0da0 | 74 65 72 20 6f 66 20 6e 63 70 6d 6f 75 6e 74 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 53 | ter.of.ncpmount...config.NCPFS_S |
0dc0 | 4d 41 4c 4c 44 4f 53 0a 09 62 6f 6f 6c 20 22 4c 6f 77 65 72 63 61 73 65 20 44 4f 53 20 66 69 6c | MALLDOS..bool."Lowercase.DOS.fil |
0de0 | 65 6e 61 6d 65 73 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 2d 2d 2d 68 | enames"..depends.on.NCP_FS..---h |
0e00 | 65 6c 70 2d 2d 2d 0a 09 20 20 49 66 20 79 6f 75 20 73 61 79 20 59 20 68 65 72 65 2c 20 65 76 65 | elp---....If.you.say.Y.here,.eve |
0e20 | 72 79 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 20 61 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 20 | ry.filename.on.a.NetWare.server. |
0e40 | 76 6f 6c 75 6d 65 20 75 73 69 6e 67 0a 09 20 20 74 68 65 20 4f 53 32 2f 4c 4f 4e 47 20 6e 61 6d | volume.using....the.OS2/LONG.nam |
0e60 | 65 73 70 61 63 65 20 61 6e 64 20 63 72 65 61 74 65 64 20 75 6e 64 65 72 20 44 4f 53 20 6f 72 20 | espace.and.created.under.DOS.or. |
0e80 | 6f 6e 20 61 20 76 6f 6c 75 6d 65 20 75 73 69 6e 67 0a 09 20 20 44 4f 53 20 6e 61 6d 65 73 70 61 | on.a.volume.using....DOS.namespa |
0ea0 | 63 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 63 61 73 | ce.will.be.converted.to.lowercas |
0ec0 | 65 20 63 68 61 72 61 63 74 65 72 73 2e 0a 09 20 20 53 61 79 69 6e 67 20 4e 20 68 65 72 65 20 77 | e.characters.....Saying.N.here.w |
0ee0 | 69 6c 6c 20 67 69 76 65 20 79 6f 75 20 74 68 65 73 65 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20 | ill.give.you.these.filenames.in. |
0f00 | 75 70 70 65 72 63 61 73 65 2e 0a 0a 09 20 20 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 63 6f | uppercase......This.is.only.a.co |
0f20 | 73 6d 65 74 69 63 20 6f 70 74 69 6f 6e 20 73 69 6e 63 65 20 74 68 65 20 4f 53 32 2f 4c 4f 4e 47 | smetic.option.since.the.OS2/LONG |
0f40 | 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 63 61 73 65 0a 09 20 20 69 6e 73 65 6e 73 69 74 69 76 | .namespace.is.case....insensitiv |
0f60 | 65 2e 20 54 68 65 20 6f 6e 6c 79 20 6d 61 6a 6f 72 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 69 | e..The.only.major.reason.for.thi |
0f80 | 73 20 6f 70 74 69 6f 6e 20 69 73 20 62 61 63 6b 77 61 72 64 0a 09 20 20 63 6f 6d 70 61 74 69 62 | s.option.is.backward....compatib |
0fa0 | 69 6c 69 74 79 20 77 68 65 6e 20 6d 6f 76 69 6e 67 20 66 72 6f 6d 20 44 4f 53 20 74 6f 20 4f 53 | ility.when.moving.from.DOS.to.OS |
0fc0 | 32 2f 4c 4f 4e 47 20 6e 61 6d 65 73 70 61 63 65 20 73 75 70 70 6f 72 74 2e 0a 09 20 20 4c 6f 6e | 2/LONG.namespace.support.....Lon |
0fe0 | 67 20 66 69 6c 65 6e 61 6d 65 73 20 28 63 72 65 61 74 65 64 20 62 79 20 57 69 6e 39 35 29 20 77 | g.filenames.(created.by.Win95).w |
1000 | 69 6c 6c 20 6e 6f 74 20 62 65 20 61 66 66 65 63 74 65 64 2e 0a 0a 09 20 20 54 68 69 73 20 6f 70 | ill.not.be.affected......This.op |
1020 | 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 73 6f 6c 76 65 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 | tion.does.not.solve.the.problem. |
1040 | 74 68 61 74 20 66 69 6c 65 6e 61 6d 65 73 20 61 70 70 65 61 72 0a 09 20 20 64 69 66 66 65 72 65 | that.filenames.appear....differe |
1060 | 6e 74 6c 79 20 75 6e 64 65 72 20 4c 69 6e 75 78 20 61 6e 64 20 75 6e 64 65 72 20 57 69 6e 64 6f | ntly.under.Linux.and.under.Windo |
1080 | 77 73 2c 20 73 69 6e 63 65 20 57 69 6e 64 6f 77 73 20 64 6f 65 73 20 61 6e 0a 09 20 20 61 64 64 | ws,.since.Windows.does.an....add |
10a0 | 69 74 69 6f 6e 61 6c 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e | itional.conversions.on.the.clien |
10c0 | 74 20 73 69 64 65 2e 20 59 6f 75 20 63 61 6e 20 61 63 68 69 65 76 65 20 73 69 6d 69 6c 61 72 0a | t.side..You.can.achieve.similar. |
10e0 | 09 20 20 65 66 66 65 63 74 73 20 62 79 20 73 61 79 69 6e 67 20 59 20 74 6f 20 22 41 6c 6c 6f 77 | ...effects.by.saying.Y.to."Allow |
1100 | 20 75 73 69 6e 67 20 6f 66 20 4e 61 74 69 76 65 20 4c 61 6e 67 75 61 67 65 20 53 75 70 70 6f 72 | .using.of.Native.Language.Suppor |
1120 | 74 22 0a 09 20 20 62 65 6c 6f 77 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 4e 4c 53 0a 09 | t"....below...config.NCPFS_NLS.. |
1140 | 62 6f 6f 6c 20 22 55 73 65 20 4e 61 74 69 76 65 20 4c 61 6e 67 75 61 67 65 20 53 75 70 70 6f 72 | bool."Use.Native.Language.Suppor |
1160 | 74 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 73 65 6c 65 63 74 20 4e 4c | t"..depends.on.NCP_FS..select.NL |
1180 | 53 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 73 65 20 63 6f 64 | S..help....Allows.you.to.use.cod |
11a0 | 65 70 61 67 65 73 20 61 6e 64 20 49 2f 4f 20 63 68 61 72 73 65 74 73 20 66 6f 72 20 66 69 6c 65 | epages.and.I/O.charsets.for.file |
11c0 | 20 6e 61 6d 65 0a 09 20 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 74 68 65 | .name....translation.between.the |
11e0 | 20 73 65 72 76 65 72 20 66 69 6c 65 20 73 79 73 74 65 6d 20 61 6e 64 20 69 6e 70 75 74 2f 6f 75 | .server.file.system.and.input/ou |
1200 | 74 70 75 74 2e 20 54 68 69 73 0a 09 20 20 6d 61 79 20 62 65 20 75 73 65 66 75 6c 2c 20 69 66 20 | tput..This....may.be.useful,.if. |
1220 | 79 6f 75 20 77 61 6e 74 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 73 65 72 76 65 72 20 77 69 | you.want.to.access.the.server.wi |
1240 | 74 68 20 6f 74 68 65 72 20 6f 70 65 72 61 74 69 6e 67 0a 09 20 20 73 79 73 74 65 6d 73 2c 20 65 | th.other.operating....systems,.e |
1260 | 2e 67 2e 20 57 69 6e 64 6f 77 73 20 39 35 2e 20 53 65 65 20 61 6c 73 6f 20 4e 4c 53 20 66 6f 72 | .g..Windows.95..See.also.NLS.for |
1280 | 20 6d 6f 72 65 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 09 20 20 54 6f 20 73 65 6c 65 63 74 | .more.Information......To.select |
12a0 | 20 63 6f 64 65 70 61 67 65 73 20 61 6e 64 20 49 2f 4f 20 63 68 61 72 73 65 74 73 20 75 73 65 20 | .codepages.and.I/O.charsets.use. |
12c0 | 6e 63 70 66 73 2d 32 2e 32 2e 30 2e 31 33 20 6f 72 20 6e 65 77 65 72 2e 0a 0a 63 6f 6e 66 69 67 | ncpfs-2.2.0.13.or.newer...config |
12e0 | 20 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 62 6f 6f 6c 20 22 45 6e 61 62 6c 65 20 73 79 6d 62 | .NCPFS_EXTRAS..bool."Enable.symb |
1300 | 6f 6c 69 63 20 6c 69 6e 6b 73 20 61 6e 64 20 65 78 65 63 75 74 65 20 66 6c 61 67 73 22 0a 09 64 | olic.links.and.execute.flags"..d |
1320 | 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 0a 09 20 20 54 68 69 73 20 65 | epends.on.NCP_FS..help....This.e |
1340 | 6e 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 73 | nables.the.use.of.symbolic.links |
1360 | 20 61 6e 64 20 61 6e 20 65 78 65 63 75 74 65 20 70 65 72 6d 69 73 73 69 6f 6e 0a 09 20 20 62 69 | .and.an.execute.permission....bi |
1380 | 74 20 6f 6e 20 4e 43 50 46 53 2e 20 54 68 65 20 66 69 6c 65 20 73 65 72 76 65 72 20 6e 65 65 64 | t.on.NCPFS..The.file.server.need |
13a0 | 20 6e 6f 74 20 68 61 76 65 20 6c 6f 6e 67 20 6e 61 6d 65 20 73 70 61 63 65 20 6f 72 20 4e 46 53 | .not.have.long.name.space.or.NFS |
13c0 | 0a 09 20 20 6e 61 6d 65 20 73 70 61 63 65 20 6c 6f 61 64 65 64 20 66 6f 72 20 74 68 65 73 65 20 | ....name.space.loaded.for.these. |
13e0 | 74 6f 20 77 6f 72 6b 2e 0a 0a 09 20 20 54 6f 20 75 73 65 20 74 68 65 20 6e 65 77 20 61 74 74 72 | to.work......To.use.the.new.attr |
1400 | 69 62 75 74 65 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 6f 20 75 73 65 | ibutes,.it.is.recommended.to.use |
1420 | 20 74 68 65 20 66 6c 61 67 73 0a 09 20 20 27 2d 66 20 36 30 30 20 2d 64 20 37 35 35 27 20 6f 6e | .the.flags....'-f.600.-d.755'.on |
1440 | 20 74 68 65 20 6e 63 70 6d 6f 75 6e 74 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0a 0a 00 00 00 | .the.ncpmount.command.line...... |
1460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
15a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
15c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
15e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1600 | 6e 63 70 66 73 2f 66 69 6c 65 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/file.c.................... |
1620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
1680 | 30 30 31 33 34 31 32 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 32 35 32 00 20 30 00 00 00 | 0013412.13023323142.012252..0... |
16a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
16c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
16e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1700 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
1720 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
1740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
17a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
17c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
17e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1800 | 2f 2a 0a 20 2a 20 20 66 69 6c 65 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 | /*..*..file.c..*..*..Copyright.( |
1820 | 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 | C).1995,.1996.by.Volker.Lendecke |
1840 | 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 | ..*..Modified.1997.Peter.Waltenb |
1860 | 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 | erg,.Bill.Hawes,.David.Woodhouse |
1880 | 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 | .for.2.1.dcache..*..*/..#define. |
18a0 | 70 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 | pr_fmt(fmt).KBUILD_MODNAME.":.". |
18c0 | 66 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 0a 23 | fmt..#include.<asm/uaccess.h>..# |
18e0 | 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | include.<linux/time.h>.#include. |
1900 | 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | <linux/kernel.h>.#include.<linux |
1920 | 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e | /errno.h>.#include.<linux/fcntl. |
1940 | 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c | h>.#include.<linux/stat.h>.#incl |
1960 | 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | ude.<linux/mm.h>.#include.<linux |
1980 | 2f 76 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 | /vmalloc.h>.#include.<linux/sche |
19a0 | 64 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 73 74 61 74 69 | d.h>..#include."ncp_fs.h"..stati |
19c0 | 63 20 69 6e 74 20 6e 63 70 5f 66 73 79 6e 63 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c | c.int.ncp_fsync(struct.file.*fil |
19e0 | 65 2c 20 6c 6f 66 66 5f 74 20 73 74 61 72 74 2c 20 6c 6f 66 66 5f 74 20 65 6e 64 2c 20 69 6e 74 | e,.loff_t.start,.loff_t.end,.int |
1a00 | 20 64 61 74 61 73 79 6e 63 29 0a 7b 0a 09 72 65 74 75 72 6e 20 66 69 6c 65 6d 61 70 5f 77 72 69 | .datasync).{..return.filemap_wri |
1a20 | 74 65 5f 61 6e 64 5f 77 61 69 74 5f 72 61 6e 67 65 28 66 69 6c 65 2d 3e 66 5f 6d 61 70 70 69 6e | te_and_wait_range(file->f_mappin |
1a40 | 67 2c 20 73 74 61 72 74 2c 20 65 6e 64 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 4f 70 65 6e 20 61 20 | g,.start,.end);.}../*..*.Open.a. |
1a60 | 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 65 61 64 2f 77 72 69 | file.with.the.specified.read/wri |
1a80 | 74 65 20 6d 6f 64 65 2e 0a 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 73 | te.mode...*/.int.ncp_make_open(s |
1aa0 | 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 69 6e 74 20 72 69 67 68 74 29 0a 7b | truct.inode.*inode,.int.right).{ |
1ac0 | 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a 09 69 6e 74 20 61 63 63 65 73 73 3b 0a 0a 09 65 72 72 6f | ..int.error;..int.access;...erro |
1ae0 | 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 20 7b 0a 09 09 70 72 | r.=.-EINVAL;..if.(!inode).{...pr |
1b00 | 5f 65 72 72 28 22 25 73 3a 20 67 6f 74 20 4e 55 4c 4c 20 69 6e 6f 64 65 5c 6e 22 2c 20 5f 5f 66 | _err("%s:.got.NULL.inode\n",.__f |
1b20 | 75 6e 63 5f 5f 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 64 62 67 | unc__);...goto.out;..}...ncp_dbg |
1b40 | 28 31 2c 20 22 6f 70 65 6e 65 64 3d 25 64 2c 20 76 6f 6c 75 6d 65 20 23 20 25 75 2c 20 64 69 72 | (1,."opened=%d,.volume.#.%u,.dir |
1b60 | 20 65 6e 74 72 79 20 23 20 25 75 5c 6e 22 2c 0a 09 09 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e | .entry.#.%u\n",...atomic_read(&N |
1b80 | 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 2c 20 0a 09 09 4e 43 50 | CP_FINFO(inode)->opened),....NCP |
1ba0 | 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 0a 09 09 4e 43 50 | _FINFO(inode)->volNumber,....NCP |
1bc0 | 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 65 72 72 6f | _FINFO(inode)->dirEntNum);..erro |
1be0 | 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 | r.=.-EACCES;..mutex_lock(&NCP_FI |
1c00 | 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 69 66 20 28 21 61 | NFO(inode)->open_mutex);..if.(!a |
1c20 | 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 | tomic_read(&NCP_FINFO(inode)->op |
1c40 | 65 6e 65 64 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f | ened)).{...struct.ncp_entry_info |
1c60 | 20 66 69 6e 66 6f 3b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 09 2f 2a 20 74 72 69 65 | .finfo;...int.result;..../*.trie |
1c80 | 73 20 6d 61 78 2e 20 72 69 67 68 74 73 20 2a 2f 0a 09 09 66 69 6e 66 6f 2e 61 63 63 65 73 73 20 | s.max..rights.*/...finfo.access. |
1ca0 | 3d 20 4f 5f 52 44 57 52 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 | =.O_RDWR;...result.=.ncp_open_cr |
1cc0 | 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 52 28 69 | eate_file_or_subdir(NCP_SERVER(i |
1ce0 | 6e 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 | node),......inode,.NULL,.OC_MODE |
1d00 | 5f 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 52 45 41 44 20 7c 20 41 52 5f 57 52 49 54 | _OPEN,......0,.AR_READ.|.AR_WRIT |
1d20 | 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 21 72 65 73 75 6c 74 29 0a 09 09 09 67 6f | E,.&finfo);...if.(!result)....go |
1d40 | 74 6f 20 75 70 64 61 74 65 3b 0a 09 09 2f 2a 20 52 44 57 52 20 64 69 64 20 6e 6f 74 20 73 75 63 | to.update;.../*.RDWR.did.not.suc |
1d60 | 63 65 65 64 65 64 2c 20 74 72 79 20 72 65 61 64 6f 6e 6c 79 20 6f 72 20 77 72 69 74 65 6f 6e 6c | ceeded,.try.readonly.or.writeonl |
1d80 | 79 20 61 73 20 72 65 71 75 65 73 74 65 64 20 2a 2f 0a 09 09 73 77 69 74 63 68 20 28 72 69 67 68 | y.as.requested.*/...switch.(righ |
1da0 | 74 29 20 7b 0a 09 09 09 63 61 73 65 20 4f 5f 52 44 4f 4e 4c 59 3a 0a 09 09 09 09 66 69 6e 66 6f | t).{....case.O_RDONLY:.....finfo |
1dc0 | 2e 61 63 63 65 73 73 20 3d 20 4f 5f 52 44 4f 4e 4c 59 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d | .access.=.O_RDONLY;.....result.= |
1de0 | 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 | .ncp_open_create_file_or_subdir( |
1e00 | 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e | NCP_SERVER(inode),......inode,.N |
1e20 | 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 52 45 | ULL,.OC_MODE_OPEN,......0,.AR_RE |
1e40 | 41 44 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 | AD,.&finfo);.....break;....case. |
1e60 | 4f 5f 57 52 4f 4e 4c 59 3a 0a 09 09 09 09 66 69 6e 66 6f 2e 61 63 63 65 73 73 20 3d 20 4f 5f 57 | O_WRONLY:.....finfo.access.=.O_W |
1e80 | 52 4f 4e 4c 59 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 | RONLY;.....result.=.ncp_open_cre |
1ea0 | 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e | ate_file_or_subdir(NCP_SERVER(in |
1ec0 | 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 5f | ode),......inode,.NULL,.OC_MODE_ |
1ee0 | 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b | OPEN,......0,.AR_WRITE,.&finfo); |
1f00 | 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a | .....break;...}...if.(result).{. |
1f20 | 09 09 09 6e 63 70 5f 76 64 62 67 28 22 66 61 69 6c 65 64 2c 20 72 65 73 75 6c 74 3d 25 64 5c 6e | ...ncp_vdbg("failed,.result=%d\n |
1f40 | 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 75 6e 6c 6f 63 6b 3b 0a | ",.result);....goto.out_unlock;. |
1f60 | 09 09 7d 0a 09 09 2f 2a 0a 09 09 20 2a 20 55 70 64 61 74 65 20 74 68 65 20 69 6e 6f 64 65 20 69 | ..}.../*....*.Update.the.inode.i |
1f80 | 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 09 09 20 2a 2f 0a 09 75 70 64 61 74 65 3a 0a 09 09 6e 63 70 | nformation.....*/..update:...ncp |
1fa0 | 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 | _update_inode(inode,.&finfo);... |
1fc0 | 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 | atomic_set(&NCP_FINFO(inode)->op |
1fe0 | 65 6e 65 64 2c 20 31 29 3b 0a 09 7d 0a 0a 09 61 63 63 65 73 73 20 3d 20 4e 43 50 5f 46 49 4e 46 | ened,.1);..}...access.=.NCP_FINF |
2000 | 4f 28 69 6e 6f 64 65 29 2d 3e 61 63 63 65 73 73 3b 0a 09 6e 63 70 5f 76 64 62 67 28 22 66 69 6c | O(inode)->access;..ncp_vdbg("fil |
2020 | 65 20 6f 70 65 6e 2c 20 61 63 63 65 73 73 3d 25 78 5c 6e 22 2c 20 61 63 63 65 73 73 29 3b 0a 09 | e.open,.access=%x\n",.access);.. |
2040 | 69 66 20 28 61 63 63 65 73 73 20 3d 3d 20 72 69 67 68 74 20 7c 7c 20 61 63 63 65 73 73 20 3d 3d | if.(access.==.right.||.access.== |
2060 | 20 4f 5f 52 44 57 52 29 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 69 6e 63 28 26 4e 43 50 5f 46 49 4e | .O_RDWR).{...atomic_inc(&NCP_FIN |
2080 | 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 3b 0a 09 09 65 72 72 6f 72 20 3d 20 30 3b | FO(inode)->opened);...error.=.0; |
20a0 | 0a 09 7d 0a 0a 6f 75 74 5f 75 6e 6c 6f 63 6b 3a 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 | ..}..out_unlock:..mutex_unlock(& |
20c0 | 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 6f | NCP_FINFO(inode)->open_mutex);.o |
20e0 | 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 73 69 | ut:..return.error;.}..static.ssi |
2100 | 7a 65 5f 74 0a 6e 63 70 5f 66 69 6c 65 5f 72 65 61 64 5f 69 74 65 72 28 73 74 72 75 63 74 20 6b | ze_t.ncp_file_read_iter(struct.k |
2120 | 69 6f 63 62 20 2a 69 6f 63 62 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 74 6f 29 | iocb.*iocb,.struct.iov_iter.*to) |
2140 | 0a 7b 0a 09 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 20 3d 20 69 6f 63 62 2d 3e 6b 69 | .{..struct.file.*file.=.iocb->ki |
2160 | 5f 66 69 6c 70 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 | _filp;..struct.inode.*inode.=.fi |
2180 | 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 69 7a 65 5f 74 20 61 6c 72 65 61 64 79 5f | le_inode(file);..size_t.already_ |
21a0 | 72 65 61 64 20 3d 20 30 3b 0a 09 6f 66 66 5f 74 20 70 6f 73 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f | read.=.0;..off_t.pos.=.iocb->ki_ |
21c0 | 70 6f 73 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 65 72 72 6f 72 | pos;..size_t.bufsize;..int.error |
21e0 | 3b 0a 09 76 6f 69 64 20 2a 66 72 65 65 70 61 67 65 3b 0a 09 73 69 7a 65 5f 74 20 66 72 65 65 6c | ;..void.*freepage;..size_t.freel |
2200 | 65 6e 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 65 6e 74 65 72 20 25 70 44 32 5c 6e 22 2c | en;...ncp_dbg(1,."enter.%pD2\n", |
2220 | 20 66 69 6c 65 29 3b 0a 0a 09 69 66 20 28 21 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f | .file);...if.(!iov_iter_count(to |
2240 | 29 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 69 66 20 28 70 6f 73 20 3e 20 69 6e 6f 64 65 2d | ))...return.0;..if.(pos.>.inode- |
2260 | 3e 69 5f 73 62 2d 3e 73 5f 6d 61 78 62 79 74 65 73 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 | >i_sb->s_maxbytes)...return.0;.. |
2280 | 69 6f 76 5f 69 74 65 72 5f 74 72 75 6e 63 61 74 65 28 74 6f 2c 20 69 6e 6f 64 65 2d 3e 69 5f 73 | iov_iter_truncate(to,.inode->i_s |
22a0 | 62 2d 3e 73 5f 6d 61 78 62 79 74 65 73 20 2d 20 70 6f 73 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 | b->s_maxbytes.-.pos);...error.=. |
22c0 | 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 52 44 4f 4e 4c 59 29 3b 0a | ncp_make_open(inode,.O_RDONLY);. |
22e0 | 09 69 66 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6f 70 65 6e | .if.(error).{...ncp_dbg(1,."open |
2300 | 20 66 61 69 6c 65 64 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 20 65 72 72 6f 72 29 3b 0a 09 09 | .failed,.error=%d\n",.error);... |
2320 | 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 09 7d 0a 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e 43 50 | return.error;..}...bufsize.=.NCP |
2340 | 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 65 | _SERVER(inode)->buffer_size;...e |
2360 | 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 66 72 65 65 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 61 64 | rror.=.-EIO;..freelen.=.ncp_read |
2380 | 5f 62 6f 75 6e 63 65 5f 73 69 7a 65 28 62 75 66 73 69 7a 65 29 3b 0a 09 66 72 65 65 70 61 67 65 | _bounce_size(bufsize);..freepage |
23a0 | 20 3d 20 76 6d 61 6c 6c 6f 63 28 66 72 65 65 6c 65 6e 29 3b 0a 09 69 66 20 28 21 66 72 65 65 70 | .=.vmalloc(freelen);..if.(!freep |
23c0 | 61 67 65 29 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 09 65 72 72 6f 72 20 3d 20 30 3b 0a | age)...goto.outrel;..error.=.0;. |
23e0 | 09 2f 2a 20 46 69 72 73 74 20 72 65 61 64 20 69 6e 20 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 | ./*.First.read.in.as.much.as.pos |
2400 | 73 69 62 6c 65 20 66 6f 72 20 65 61 63 68 20 62 75 66 73 69 7a 65 2e 20 2a 2f 0a 09 77 68 69 6c | sible.for.each.bufsize..*/..whil |
2420 | 65 20 28 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f 29 29 20 7b 0a 09 09 69 6e 74 20 72 | e.(iov_iter_count(to)).{...int.r |
2440 | 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 73 69 7a 65 5f 74 20 74 6f 5f 72 65 61 64 20 | ead_this_time;...size_t.to_read. |
2460 | 3d 20 6d 69 6e 5f 74 28 73 69 7a 65 5f 74 2c 0a 09 09 09 09 20 20 20 20 20 62 75 66 73 69 7a 65 | =.min_t(size_t,..........bufsize |
2480 | 20 2d 20 28 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 2c 0a 09 09 09 09 20 20 20 20 20 69 6f 76 | .-.(pos.%.bufsize),..........iov |
24a0 | 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f 29 29 3b 0a 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 | _iter_count(to));....error.=.ncp |
24c0 | 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a | _read_bounce(NCP_SERVER(inode),. |
24e0 | 09 09 09 20 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 | .....NCP_FINFO(inode)->file_hand |
2500 | 6c 65 2c 0a 09 09 09 09 70 6f 73 2c 20 74 6f 5f 72 65 61 64 2c 20 74 6f 2c 20 26 72 65 61 64 5f | le,.....pos,.to_read,.to,.&read_ |
2520 | 74 68 69 73 5f 74 69 6d 65 2c 20 0a 09 09 09 09 66 72 65 65 70 61 67 65 2c 20 66 72 65 65 6c 65 | this_time,......freepage,.freele |
2540 | 6e 29 3b 0a 09 09 69 66 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 | n);...if.(error).{....error.=.-E |
2560 | 49 4f 3b 09 2f 2a 20 4e 57 20 65 72 72 6e 6f 20 2d 3e 20 4c 69 6e 75 78 20 65 72 72 6e 6f 20 2a | IO;./*.NW.errno.->.Linux.errno.* |
2580 | 2f 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 70 6f 73 20 2b 3d 20 72 65 61 64 5f 74 68 | /....break;...}...pos.+=.read_th |
25a0 | 69 73 5f 74 69 6d 65 3b 0a 09 09 61 6c 72 65 61 64 79 5f 72 65 61 64 20 2b 3d 20 72 65 61 64 5f | is_time;...already_read.+=.read_ |
25c0 | 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 69 66 20 28 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 | this_time;....if.(read_this_time |
25e0 | 20 21 3d 20 74 6f 5f 72 65 61 64 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 76 66 72 65 65 | .!=.to_read)....break;..}..vfree |
2600 | 28 66 72 65 65 70 61 67 65 29 3b 0a 0a 09 69 6f 63 62 2d 3e 6b 69 5f 70 6f 73 20 3d 20 70 6f 73 | (freepage);...iocb->ki_pos.=.pos |
2620 | 3b 0a 0a 09 66 69 6c 65 5f 61 63 63 65 73 73 65 64 28 66 69 6c 65 29 3b 0a 0a 09 6e 63 70 5f 64 | ;...file_accessed(file);...ncp_d |
2640 | 62 67 28 31 2c 20 22 65 78 69 74 20 25 70 44 32 5c 6e 22 2c 20 66 69 6c 65 29 3b 0a 6f 75 74 72 | bg(1,."exit.%pD2\n",.file);.outr |
2660 | 65 6c 3a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 09 09 0a 09 | el:..ncp_inode_close(inode);.... |
2680 | 72 65 74 75 72 6e 20 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3f 20 61 6c 72 65 61 64 79 5f 72 65 | return.already_read.?.already_re |
26a0 | 61 64 20 3a 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 73 69 7a 65 5f 74 0a 6e 63 | ad.:.error;.}..static.ssize_t.nc |
26c0 | 70 5f 66 69 6c 65 5f 77 72 69 74 65 5f 69 74 65 72 28 73 74 72 75 63 74 20 6b 69 6f 63 62 20 2a | p_file_write_iter(struct.kiocb.* |
26e0 | 69 6f 63 62 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 66 72 6f 6d 29 0a 7b 0a 09 | iocb,.struct.iov_iter.*from).{.. |
2700 | 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f 66 69 6c | struct.file.*file.=.iocb->ki_fil |
2720 | 70 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 | p;..struct.inode.*inode.=.file_i |
2740 | 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 69 7a 65 5f 74 20 61 6c 72 65 61 64 79 5f 77 72 69 74 | node(file);..size_t.already_writ |
2760 | 74 65 6e 20 3d 20 30 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 65 | ten.=.0;..size_t.bufsize;..int.e |
2780 | 72 72 6e 6f 3b 0a 09 76 6f 69 64 20 2a 62 6f 75 6e 63 65 62 75 66 66 65 72 3b 0a 09 6f 66 66 5f | rrno;..void.*bouncebuffer;..off_ |
27a0 | 74 20 70 6f 73 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 65 6e 74 65 72 20 25 70 44 32 5c | t.pos;...ncp_dbg(1,."enter.%pD2\ |
27c0 | 6e 22 2c 20 66 69 6c 65 29 3b 0a 09 65 72 72 6e 6f 20 3d 20 67 65 6e 65 72 69 63 5f 77 72 69 74 | n",.file);..errno.=.generic_writ |
27e0 | 65 5f 63 68 65 63 6b 73 28 69 6f 63 62 2c 20 66 72 6f 6d 29 3b 0a 09 69 66 20 28 65 72 72 6e 6f | e_checks(iocb,.from);..if.(errno |
2800 | 20 3c 3d 20 30 29 0a 09 09 72 65 74 75 72 6e 20 65 72 72 6e 6f 3b 0a 0a 09 65 72 72 6e 6f 20 3d | .<=.0)...return.errno;...errno.= |
2820 | 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e 4c 59 29 3b | .ncp_make_open(inode,.O_WRONLY); |
2840 | 0a 09 69 66 20 28 65 72 72 6e 6f 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6f 70 65 | ..if.(errno).{...ncp_dbg(1,."ope |
2860 | 6e 20 66 61 69 6c 65 64 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 20 65 72 72 6e 6f 29 3b 0a 09 | n.failed,.error=%d\n",.errno);.. |
2880 | 09 72 65 74 75 72 6e 20 65 72 72 6e 6f 3b 0a 09 7d 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e 43 50 | .return.errno;..}..bufsize.=.NCP |
28a0 | 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 65 | _SERVER(inode)->buffer_size;...e |
28c0 | 72 72 6e 6f 20 3d 20 66 69 6c 65 5f 75 70 64 61 74 65 5f 74 69 6d 65 28 66 69 6c 65 29 3b 0a 09 | rrno.=.file_update_time(file);.. |
28e0 | 69 66 20 28 65 72 72 6e 6f 29 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 0a 09 62 6f 75 6e | if.(errno)...goto.outrel;...boun |
2900 | 63 65 62 75 66 66 65 72 20 3d 20 76 6d 61 6c 6c 6f 63 28 62 75 66 73 69 7a 65 29 3b 0a 09 69 66 | cebuffer.=.vmalloc(bufsize);..if |
2920 | 20 28 21 62 6f 75 6e 63 65 62 75 66 66 65 72 29 20 7b 0a 09 09 65 72 72 6e 6f 20 3d 20 2d 45 49 | .(!bouncebuffer).{...errno.=.-EI |
2940 | 4f 3b 09 2f 2a 20 2d 45 4e 4f 4d 45 4d 20 2a 2f 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a | O;./*.-ENOMEM.*/...goto.outrel;. |
2960 | 09 7d 0a 09 70 6f 73 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f 70 6f 73 3b 0a 09 77 68 69 6c 65 20 28 | .}..pos.=.iocb->ki_pos;..while.( |
2980 | 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 66 72 6f 6d 29 29 20 7b 0a 09 09 69 6e 74 20 77 72 | iov_iter_count(from)).{...int.wr |
29a0 | 69 74 74 65 6e 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 73 69 7a 65 5f 74 20 74 6f 5f 77 72 69 | itten_this_time;...size_t.to_wri |
29c0 | 74 65 20 3d 20 6d 69 6e 5f 74 28 73 69 7a 65 5f 74 2c 0a 09 09 09 09 20 20 20 20 20 20 62 75 66 | te.=.min_t(size_t,...........buf |
29e0 | 73 69 7a 65 20 2d 20 28 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 2c 0a 09 09 09 09 20 20 20 20 | size.-.(pos.%.bufsize),......... |
2a00 | 20 20 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 66 72 6f 6d 29 29 3b 0a 0a 09 09 69 66 20 28 | ..iov_iter_count(from));....if.( |
2a20 | 63 6f 70 79 5f 66 72 6f 6d 5f 69 74 65 72 28 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 74 6f 5f | copy_from_iter(bouncebuffer,.to_ |
2a40 | 77 72 69 74 65 2c 20 66 72 6f 6d 29 20 21 3d 20 74 6f 5f 77 72 69 74 65 29 20 7b 0a 09 09 09 65 | write,.from).!=.to_write).{....e |
2a60 | 72 72 6e 6f 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 | rrno.=.-EFAULT;....break;...}... |
2a80 | 69 66 20 28 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 | if.(ncp_write_kernel(NCP_SERVER( |
2aa0 | 69 6e 6f 64 65 29 2c 20 0a 09 09 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d | inode),........NCP_FINFO(inode)- |
2ac0 | 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 20 20 20 20 70 6f 73 2c 20 74 6f 5f 77 72 69 74 | >file_handle,.......pos,.to_writ |
2ae0 | 65 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 26 77 72 69 74 74 65 6e 5f 74 68 69 73 5f 74 | e,.bouncebuffer,.&written_this_t |
2b00 | 69 6d 65 29 20 21 3d 20 30 29 20 7b 0a 09 09 09 65 72 72 6e 6f 20 3d 20 2d 45 49 4f 3b 0a 09 09 | ime).!=.0).{....errno.=.-EIO;... |
2b20 | 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 70 6f 73 20 2b 3d 20 77 72 69 74 74 65 6e 5f 74 68 69 | .break;...}...pos.+=.written_thi |
2b40 | 73 5f 74 69 6d 65 3b 0a 09 09 61 6c 72 65 61 64 79 5f 77 72 69 74 74 65 6e 20 2b 3d 20 77 72 69 | s_time;...already_written.+=.wri |
2b60 | 74 74 65 6e 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 69 66 20 28 77 72 69 74 74 65 6e 5f 74 | tten_this_time;....if.(written_t |
2b80 | 68 69 73 5f 74 69 6d 65 20 21 3d 20 74 6f 5f 77 72 69 74 65 29 0a 09 09 09 62 72 65 61 6b 3b 0a | his_time.!=.to_write)....break;. |
2ba0 | 09 7d 0a 09 76 66 72 65 65 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 0a 09 69 6f 63 62 2d | .}..vfree(bouncebuffer);...iocb- |
2bc0 | 3e 6b 69 5f 70 6f 73 20 3d 20 70 6f 73 3b 0a 0a 09 69 66 20 28 70 6f 73 20 3e 20 69 5f 73 69 7a | >ki_pos.=.pos;...if.(pos.>.i_siz |
2be0 | 65 5f 72 65 61 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 28 69 6e | e_read(inode)).{...inode_lock(in |
2c00 | 6f 64 65 29 3b 0a 09 09 69 66 20 28 70 6f 73 20 3e 20 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e | ode);...if.(pos.>.i_size_read(in |
2c20 | 6f 64 65 29 29 0a 09 09 09 69 5f 73 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c 20 70 6f 73 | ode))....i_size_write(inode,.pos |
2c40 | 29 3b 0a 09 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 09 6e 63 | );...inode_unlock(inode);..}..nc |
2c60 | 70 5f 64 62 67 28 31 2c 20 22 65 78 69 74 20 25 70 44 32 5c 6e 22 2c 20 66 69 6c 65 29 3b 0a 6f | p_dbg(1,."exit.%pD2\n",.file);.o |
2c80 | 75 74 72 65 6c 3a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 09 | utrel:..ncp_inode_close(inode);. |
2ca0 | 09 0a 09 72 65 74 75 72 6e 20 61 6c 72 65 61 64 79 5f 77 72 69 74 74 65 6e 20 3f 20 61 6c 72 65 | ...return.already_written.?.alre |
2cc0 | 61 64 79 5f 77 72 69 74 74 65 6e 20 3a 20 65 72 72 6e 6f 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 | ady_written.:.errno;.}..static.i |
2ce0 | 6e 74 20 6e 63 70 5f 72 65 6c 65 61 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f | nt.ncp_release(struct.inode.*ino |
2d00 | 64 65 2c 20 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 29 20 7b 0a 09 69 66 20 28 6e 63 | de,.struct.file.*file).{..if.(nc |
2d20 | 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 | p_make_closed(inode)).{...ncp_db |
2d40 | 67 28 31 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 63 6c 6f 73 65 5c 6e 22 29 3b 0a 09 7d 0a 09 72 | g(1,."failed.to.close\n");..}..r |
2d60 | 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 | eturn.0;.}..const.struct.file_op |
2d80 | 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 3d 0a 7b | erations.ncp_file_operations.=.{ |
2da0 | 0a 09 2e 6c 6c 73 65 65 6b 09 09 3d 20 67 65 6e 65 72 69 63 5f 66 69 6c 65 5f 6c 6c 73 65 65 6b | ...llseek..=.generic_file_llseek |
2dc0 | 2c 0a 09 2e 72 65 61 64 5f 69 74 65 72 09 3d 20 6e 63 70 5f 66 69 6c 65 5f 72 65 61 64 5f 69 74 | ,...read_iter.=.ncp_file_read_it |
2de0 | 65 72 2c 0a 09 2e 77 72 69 74 65 5f 69 74 65 72 09 3d 20 6e 63 70 5f 66 69 6c 65 5f 77 72 69 74 | er,...write_iter.=.ncp_file_writ |
2e00 | 65 5f 69 74 65 72 2c 0a 09 2e 75 6e 6c 6f 63 6b 65 64 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 69 | e_iter,...unlocked_ioctl.=.ncp_i |
2e20 | 6f 63 74 6c 2c 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 2e 63 6f 6d | octl,.#ifdef.CONFIG_COMPAT...com |
2e40 | 70 61 74 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 2c 0a 23 65 | pat_ioctl.=.ncp_compat_ioctl,.#e |
2e60 | 6e 64 69 66 0a 09 2e 6d 6d 61 70 09 09 3d 20 6e 63 70 5f 6d 6d 61 70 2c 0a 09 2e 72 65 6c 65 61 | ndif...mmap..=.ncp_mmap,...relea |
2e80 | 73 65 09 3d 20 6e 63 70 5f 72 65 6c 65 61 73 65 2c 0a 09 2e 66 73 79 6e 63 09 09 3d 20 6e 63 70 | se.=.ncp_release,...fsync..=.ncp |
2ea0 | 5f 66 73 79 6e 63 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f | _fsync,.};..const.struct.inode_o |
2ec0 | 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 | perations.ncp_file_inode_operati |
2ee0 | 6f 6e 73 20 3d 0a 7b 0a 09 2e 73 65 74 61 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 | ons.=.{...setattr.=.ncp_notify_c |
2f00 | 68 61 6e 67 65 2c 0a 7d 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | hange,.};....................... |
2f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3000 | 6e 63 70 66 73 2f 67 65 74 6f 70 74 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/getopt.c.................. |
3020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
3080 | 30 30 30 33 35 34 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 33 36 00 20 30 00 00 00 | 0003540.13023323142.012636..0... |
30a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
30c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
30e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3100 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
3120 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
3140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
31a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
31c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
31e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3200 | 2f 2a 0a 20 2a 20 67 65 74 6f 70 74 2e 63 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 | /*..*.getopt.c..*/..#define.pr_f |
3220 | 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a | mt(fmt).KBUILD_MODNAME.":.".fmt. |
3240 | 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c | .#include.<linux/kernel.h>.#incl |
3260 | 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c | ude.<linux/string.h>..#include.< |
3280 | 61 73 6d 2f 65 72 72 6e 6f 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 67 65 74 6f 70 74 2e 68 | asm/errno.h>..#include."getopt.h |
32a0 | 22 0a 0a 2f 2a 2a 0a 20 2a 09 6e 63 70 5f 67 65 74 6f 70 74 20 2d 20 6f 70 74 69 6f 6e 20 70 61 | "../**..*.ncp_getopt.-.option.pa |
32c0 | 72 73 65 72 0a 20 2a 09 40 63 61 6c 6c 65 72 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 61 6c | rser..*.@caller:.name.of.the.cal |
32e0 | 6c 65 72 2c 20 66 6f 72 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 0a 20 2a 09 40 6f 70 74 69 | ler,.for.error.messages..*.@opti |
3300 | 6f 6e 73 3a 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 73 74 72 69 6e 67 0a 20 2a 09 40 6f 70 74 73 | ons:.the.options.string..*.@opts |
3320 | 3a 20 61 6e 20 61 72 72 61 79 20 6f 66 20 26 73 74 72 75 63 74 20 6f 70 74 69 6f 6e 20 65 6e 74 | :.an.array.of.&struct.option.ent |
3340 | 72 69 65 73 20 63 6f 6e 74 72 6f 6c 6c 69 6e 67 20 70 61 72 73 65 72 20 6f 70 65 72 61 74 69 6f | ries.controlling.parser.operatio |
3360 | 6e 73 0a 20 2a 09 40 6f 70 74 6f 70 74 3a 20 6f 75 74 70 75 74 3b 20 77 69 6c 6c 20 63 6f 6e 74 | ns..*.@optopt:.output;.will.cont |
3380 | 61 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 74 69 6f 6e 0a 20 2a 09 40 6f 70 74 61 72 | ain.the.current.option..*.@optar |
33a0 | 67 3a 20 6f 75 74 70 75 74 3b 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 76 61 6c 75 | g:.output;.will.contain.the.valu |
33c0 | 65 20 28 69 66 20 6f 6e 65 20 65 78 69 73 74 73 29 0a 20 2a 09 40 76 61 6c 75 65 3a 20 6f 75 74 | e.(if.one.exists)..*.@value:.out |
33e0 | 70 75 74 3b 20 6d 61 79 20 62 65 20 4e 55 4c 4c 3b 20 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 | put;.may.be.NULL;.will.be.overwr |
3400 | 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 0a 20 2a 09 | itten.with.the.integer.value..*. |
3420 | 09 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 72 67 75 6d 65 6e 74 2e 0a 20 2a 0a 20 2a 09 | .of.the.current.argument...*..*. |
3440 | 48 65 6c 70 65 72 20 74 6f 20 70 61 72 73 65 20 6f 70 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 66 | Helper.to.parse.options.on.the.f |
3460 | 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 6d 6f 75 6e 74 20 28 22 61 3d 62 2c 63 3d 64 2c 65 2c | ormat.used.by.mount.("a=b,c=d,e, |
3480 | 66 22 29 2e 0a 20 2a 09 52 65 74 75 72 6e 73 20 6f 70 74 73 2d 3e 76 61 6c 20 69 66 20 61 20 6d | f")...*.Returns.opts->val.if.a.m |
34a0 | 61 74 63 68 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 27 6f 70 74 73 27 20 61 72 72 61 | atching.entry.in.the.'opts'.arra |
34c0 | 79 20 69 73 20 66 6f 75 6e 64 2c 0a 20 2a 09 30 20 77 68 65 6e 20 6e 6f 20 6d 6f 72 65 20 74 6f | y.is.found,..*.0.when.no.more.to |
34e0 | 6b 65 6e 73 20 61 72 65 20 66 6f 75 6e 64 2c 20 2d 31 20 69 66 20 61 6e 20 65 72 72 6f 72 20 69 | kens.are.found,.-1.if.an.error.i |
3500 | 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 2e 0a 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 67 65 74 6f 70 | s.encountered...*/.int.ncp_getop |
3520 | 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 61 6c 6c 65 72 2c 20 63 68 61 72 20 2a 2a 6f 70 74 | t(const.char.*caller,.char.**opt |
3540 | 69 6f 6e 73 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 2a 6f | ions,.const.struct.ncp_option.*o |
3560 | 70 74 73 2c 0a 09 20 20 20 20 20 20 20 63 68 61 72 20 2a 2a 6f 70 74 6f 70 74 2c 20 63 68 61 72 | pts,.........char.**optopt,.char |
3580 | 20 2a 2a 6f 70 74 61 72 67 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 2a 76 61 6c 75 65 29 | .**optarg,.unsigned.long.*value) |
35a0 | 0a 7b 0a 09 63 68 61 72 20 2a 74 6f 6b 65 6e 3b 0a 09 63 68 61 72 20 2a 76 61 6c 3b 0a 0a 09 64 | .{..char.*token;..char.*val;...d |
35c0 | 6f 20 7b 0a 09 09 69 66 20 28 28 74 6f 6b 65 6e 20 3d 20 73 74 72 73 65 70 28 6f 70 74 69 6f 6e | o.{...if.((token.=.strsep(option |
35e0 | 73 2c 20 22 2c 22 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 | s,.",")).==.NULL)....return.0;.. |
3600 | 7d 20 77 68 69 6c 65 20 28 2a 74 6f 6b 65 6e 20 3d 3d 20 27 5c 30 27 29 3b 0a 09 69 66 20 28 6f | }.while.(*token.==.'\0');..if.(o |
3620 | 70 74 6f 70 74 29 0a 09 09 2a 6f 70 74 6f 70 74 20 3d 20 74 6f 6b 65 6e 3b 0a 0a 09 69 66 20 28 | ptopt)...*optopt.=.token;...if.( |
3640 | 28 76 61 6c 20 3d 20 73 74 72 63 68 72 20 28 74 6f 6b 65 6e 2c 20 27 3d 27 29 29 20 21 3d 20 4e | (val.=.strchr.(token,.'=')).!=.N |
3660 | 55 4c 4c 29 20 7b 0a 09 09 2a 76 61 6c 2b 2b 20 3d 20 30 3b 0a 09 7d 0a 09 2a 6f 70 74 61 72 67 | ULL).{...*val++.=.0;..}..*optarg |
3680 | 20 3d 20 76 61 6c 3b 0a 09 66 6f 72 20 28 3b 20 6f 70 74 73 2d 3e 6e 61 6d 65 3b 20 6f 70 74 73 | .=.val;..for.(;.opts->name;.opts |
36a0 | 2b 2b 29 20 7b 0a 09 09 69 66 20 28 21 73 74 72 63 6d 70 28 6f 70 74 73 2d 3e 6e 61 6d 65 2c 20 | ++).{...if.(!strcmp(opts->name,. |
36c0 | 74 6f 6b 65 6e 29 29 20 7b 0a 09 09 09 69 66 20 28 21 76 61 6c 29 20 7b 0a 09 09 09 09 69 66 20 | token)).{....if.(!val).{.....if. |
36e0 | 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 4e 4f 50 41 52 41 4d 29 20 7b 0a | (opts->has_arg.&.OPT_NOPARAM).{. |
3700 | 09 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 09 7d 0a 09 09 09 | .....return.opts->val;.....}.... |
3720 | 09 70 72 5f 69 6e 66 6f 28 22 25 73 3a 20 74 68 65 20 25 73 20 6f 70 74 69 6f 6e 20 72 65 71 75 | .pr_info("%s:.the.%s.option.requ |
3740 | 69 72 65 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 5c 6e 22 2c 0a 09 09 09 09 09 63 61 6c 6c 65 72 | ires.an.argument\n",......caller |
3760 | 2c 20 74 6f 6b 65 6e 29 3b 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 | ,.token);.....return.-EINVAL;... |
3780 | 09 7d 0a 09 09 09 69 66 20 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 49 4e | .}....if.(opts->has_arg.&.OPT_IN |
37a0 | 54 29 20 7b 0a 09 09 09 09 69 6e 74 20 72 63 20 3d 20 6b 73 74 72 74 6f 75 6c 28 76 61 6c 2c 20 | T).{.....int.rc.=.kstrtoul(val,. |
37c0 | 30 2c 20 76 61 6c 75 65 29 3b 0a 0a 09 09 09 09 69 66 20 28 72 63 29 20 7b 0a 09 09 09 09 09 70 | 0,.value);......if.(rc).{......p |
37e0 | 72 5f 69 6e 66 6f 28 22 25 73 3a 20 69 6e 76 61 6c 69 64 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 | r_info("%s:.invalid.numeric.valu |
3800 | 65 20 69 6e 20 25 73 3d 25 73 5c 6e 22 2c 0a 09 09 09 09 09 09 63 61 6c 6c 65 72 2c 20 74 6f 6b | e.in.%s=%s\n",.......caller,.tok |
3820 | 65 6e 2c 20 76 61 6c 29 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 72 63 3b 0a 09 09 09 09 7d 0a | en,.val);......return.rc;.....}. |
3840 | 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 7d 0a 09 09 09 69 66 | ....return.opts->val;....}....if |
3860 | 20 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 53 54 52 49 4e 47 29 20 7b 0a | .(opts->has_arg.&.OPT_STRING).{. |
3880 | 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 7d 0a 09 09 09 70 72 | ....return.opts->val;....}....pr |
38a0 | 5f 69 6e 66 6f 28 22 25 73 3a 20 75 6e 65 78 70 65 63 74 65 64 20 61 72 67 75 6d 65 6e 74 20 25 | _info("%s:.unexpected.argument.% |
38c0 | 73 20 74 6f 20 74 68 65 20 25 73 20 6f 70 74 69 6f 6e 5c 6e 22 2c 0a 09 09 09 09 63 61 6c 6c 65 | s.to.the.%s.option\n",.....calle |
38e0 | 72 2c 20 76 61 6c 2c 20 74 6f 6b 65 6e 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 | r,.val,.token);....return.-EINVA |
3900 | 4c 3b 0a 09 09 7d 0a 09 7d 0a 09 70 72 5f 69 6e 66 6f 28 22 25 73 3a 20 55 6e 72 65 63 6f 67 6e | L;...}..}..pr_info("%s:.Unrecogn |
3920 | 69 7a 65 64 20 6d 6f 75 6e 74 20 6f 70 74 69 6f 6e 20 25 73 5c 6e 22 2c 20 63 61 6c 6c 65 72 2c | ized.mount.option.%s\n",.caller, |
3940 | 20 74 6f 6b 65 6e 29 3b 0a 09 72 65 74 75 72 6e 20 2d 45 4f 50 4e 4f 54 53 55 50 50 3b 0a 7d 0a | .token);..return.-EOPNOTSUPP;.}. |
3960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
39a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
39c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
39e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3a00 | 6e 63 70 66 73 2f 67 65 74 6f 70 74 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/getopt.h.................. |
3a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3a60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
3a80 | 30 30 30 30 35 35 37 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 35 30 00 20 30 00 00 00 | 0000557.13023323142.012650..0... |
3aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3b00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
3b20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
3b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3c00 | 23 69 66 6e 64 65 66 20 5f 4c 49 4e 55 58 5f 47 45 54 4f 50 54 5f 48 0a 23 64 65 66 69 6e 65 20 | #ifndef._LINUX_GETOPT_H.#define. |
3c20 | 5f 4c 49 4e 55 58 5f 47 45 54 4f 50 54 5f 48 0a 0a 23 64 65 66 69 6e 65 20 4f 50 54 5f 4e 4f 50 | _LINUX_GETOPT_H..#define.OPT_NOP |
3c40 | 41 52 41 4d 09 31 0a 23 64 65 66 69 6e 65 20 4f 50 54 5f 49 4e 54 09 09 32 0a 23 64 65 66 69 6e | ARAM.1.#define.OPT_INT..2.#defin |
3c60 | 65 20 4f 50 54 5f 53 54 52 49 4e 47 09 34 0a 73 74 72 75 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e | e.OPT_STRING.4.struct.ncp_option |
3c80 | 20 7b 0a 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 | .{..const.char.*name;..unsigned. |
3ca0 | 69 6e 74 20 68 61 73 5f 61 72 67 3b 0a 09 69 6e 74 20 76 61 6c 3b 0a 7d 3b 0a 0a 65 78 74 65 72 | int.has_arg;..int.val;.};..exter |
3cc0 | 6e 20 69 6e 74 20 6e 63 70 5f 67 65 74 6f 70 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 61 6c | n.int.ncp_getopt(const.char.*cal |
3ce0 | 6c 65 72 2c 20 63 68 61 72 20 2a 2a 6f 70 74 69 6f 6e 73 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 | ler,.char.**options,.const.struc |
3d00 | 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 2a 6f 70 74 73 2c 0a 09 09 20 20 20 20 20 20 63 68 61 72 | t.ncp_option.*opts,.........char |
3d20 | 20 2a 2a 6f 70 74 6f 70 74 2c 20 63 68 61 72 20 2a 2a 6f 70 74 61 72 67 2c 20 75 6e 73 69 67 6e | .**optopt,.char.**optarg,.unsign |
3d40 | 65 64 20 6c 6f 6e 67 20 2a 76 61 6c 75 65 29 3b 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 4c 49 4e | ed.long.*value);..#endif./*._LIN |
3d60 | 55 58 5f 47 45 54 4f 50 54 5f 48 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | UX_GETOPT_H.*/.................. |
3d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3e00 | 6e 63 70 66 73 2f 69 6e 6f 64 65 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/inode.c................... |
3e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3e60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
3e80 | 30 30 36 36 33 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 33 35 00 20 30 00 00 00 | 0066300.13023323142.012435..0... |
3ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3f00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
3f20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
3f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
3fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
4000 | 2f 2a 0a 20 2a 20 20 69 6e 6f 64 65 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 | /*..*..inode.c..*..*..Copyright. |
4020 | 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b | (C).1995,.1996.by.Volker.Lendeck |
4040 | 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 6e 64 69 61 6e 20 62 79 | e..*..Modified.for.big.endian.by |
4060 | 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 53 2e 20 4d 69 6c 6c 65 | .J.F..Chadima.and.David.S..Mille |
4080 | 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e | r..*..Modified.1997.Peter.Walten |
40a0 | 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 | berg,.Bill.Hawes,.David.Woodhous |
40c0 | 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 | e.for.2.1.dcache..*..Modified.19 |
40e0 | 39 38 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c 53 0a 20 2a 20 20 | 98.Wolfram.Pienkoss.for.NLS..*.. |
4100 | 4d 6f 64 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 | Modified.2000.Ben.Harris,.Univer |
4120 | 73 69 74 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 | sity.of.Cambridge.for.NFS.NS.met |
4140 | 61 2d 69 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 6d 74 28 66 6d | a-info..*..*/..#define.pr_fmt(fm |
4160 | 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a 0a 23 69 6e 63 | t).KBUILD_MODNAME.":.".fmt..#inc |
4180 | 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6f 64 75 6c 65 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 | lude.<linux/module.h>..#include. |
41a0 | 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 62 79 | <asm/uaccess.h>.#include.<asm/by |
41c0 | 74 65 6f 72 64 65 72 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 | teorder.h>..#include.<linux/time |
41e0 | 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 | .h>.#include.<linux/kernel.h>.#i |
4200 | 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 | nclude.<linux/mm.h>.#include.<li |
4220 | 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 | nux/string.h>.#include.<linux/st |
4240 | 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 | at.h>.#include.<linux/errno.h>.# |
4260 | 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 69 6c 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | include.<linux/file.h>.#include. |
4280 | 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f | <linux/fcntl.h>.#include.<linux/ |
42a0 | 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 6d 61 6c 6c 6f 63 2e | slab.h>.#include.<linux/vmalloc. |
42c0 | 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 6e 69 74 2e 68 3e 0a 23 69 6e 63 6c | h>.#include.<linux/init.h>.#incl |
42e0 | 75 64 65 20 3c 6c 69 6e 75 78 2f 76 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 | ude.<linux/vfs.h>.#include.<linu |
4300 | 78 2f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 65 71 5f 66 | x/mount.h>.#include.<linux/seq_f |
4320 | 69 6c 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 61 6d 65 69 2e 68 3e 0a | ile.h>.#include.<linux/namei.h>. |
4340 | 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 2f 73 6f 63 6b 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 | .#include.<net/sock.h>..#include |
4360 | 20 22 6e 63 70 5f 66 73 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 67 65 74 6f 70 74 2e 68 22 0a | ."ncp_fs.h".#include."getopt.h". |
4380 | 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 4d 4f 44 45 20 30 | .#define.NCP_DEFAULT_FILE_MODE.0 |
43a0 | 36 30 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 | 600.#define.NCP_DEFAULT_DIR_MODE |
43c0 | 20 30 37 30 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 5f 4f | .0700.#define.NCP_DEFAULT_TIME_O |
43e0 | 55 54 20 31 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f | UT.10.#define.NCP_DEFAULT_RETRY_ |
4400 | 43 4f 55 4e 54 20 32 30 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 65 76 69 63 74 5f | COUNT.20..static.void.ncp_evict_ |
4420 | 69 6e 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 29 3b 0a 73 74 61 74 69 63 20 76 6f | inode(struct.inode.*);.static.vo |
4440 | 69 64 20 6e 63 70 5f 70 75 74 5f 73 75 70 65 72 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c | id.ncp_put_super(struct.super_bl |
4460 | 6f 63 6b 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 74 61 74 66 73 28 73 | ock.*);.static.int..ncp_statfs(s |
4480 | 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 6b 73 74 61 74 66 73 20 2a | truct.dentry.*,.struct.kstatfs.* |
44a0 | 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 68 6f 77 5f 6f 70 74 69 6f 6e 73 28 | );.static.int..ncp_show_options( |
44c0 | 73 74 72 75 63 74 20 73 65 71 5f 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 | struct.seq_file.*,.struct.dentry |
44e0 | 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 6b 6d 65 6d 5f 63 61 63 68 65 20 2a | .*);..static.struct.kmem_cache.* |
4500 | 20 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 3b 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 | .ncp_inode_cachep;..static.struc |
4520 | 74 20 69 6e 6f 64 65 20 2a 6e 63 70 5f 61 6c 6c 6f 63 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 20 | t.inode.*ncp_alloc_inode(struct. |
4540 | 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 | super_block.*sb).{..struct.ncp_i |
4560 | 6e 6f 64 65 5f 69 6e 66 6f 20 2a 65 69 3b 0a 09 65 69 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 | node_info.*ei;..ei.=.(struct.ncp |
4580 | 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 29 6b 6d 65 6d 5f 63 61 63 68 65 5f 61 6c 6c 6f 63 28 6e | _inode_info.*)kmem_cache_alloc(n |
45a0 | 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 | cp_inode_cachep,.GFP_KERNEL);..i |
45c0 | 66 20 28 21 65 69 29 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 09 72 65 74 75 72 6e 20 26 | f.(!ei)...return.NULL;..return.& |
45e0 | 65 69 2d 3e 76 66 73 5f 69 6e 6f 64 65 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 | ei->vfs_inode;.}..static.void.nc |
4600 | 70 5f 69 5f 63 61 6c 6c 62 61 63 6b 28 73 74 72 75 63 74 20 72 63 75 5f 68 65 61 64 20 2a 68 65 | p_i_callback(struct.rcu_head.*he |
4620 | 61 64 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 63 6f 6e | ad).{..struct.inode.*inode.=.con |
4640 | 74 61 69 6e 65 72 5f 6f 66 28 68 65 61 64 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 2c 20 69 5f | tainer_of(head,.struct.inode,.i_ |
4660 | 72 63 75 29 3b 0a 09 6b 6d 65 6d 5f 63 61 63 68 65 5f 66 72 65 65 28 6e 63 70 5f 69 6e 6f 64 65 | rcu);..kmem_cache_free(ncp_inode |
4680 | 5f 63 61 63 68 65 70 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 29 3b 0a 7d 0a 0a 73 | _cachep,.NCP_FINFO(inode));.}..s |
46a0 | 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 28 73 74 72 | tatic.void.ncp_destroy_inode(str |
46c0 | 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 63 61 6c 6c 5f 72 63 75 28 26 69 | uct.inode.*inode).{..call_rcu(&i |
46e0 | 6e 6f 64 65 2d 3e 69 5f 72 63 75 2c 20 6e 63 70 5f 69 5f 63 61 6c 6c 62 61 63 6b 29 3b 0a 7d 0a | node->i_rcu,.ncp_i_callback);.}. |
4700 | 0a 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e 69 74 5f 6f 6e 63 65 28 76 6f 69 64 20 2a 66 6f 6f | .static.void.init_once(void.*foo |
4720 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 65 69 20 3d | ).{..struct.ncp_inode_info.*ei.= |
4740 | 20 28 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 29 20 66 6f 6f 3b 0a | .(struct.ncp_inode_info.*).foo;. |
4760 | 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 65 69 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 | ..mutex_init(&ei->open_mutex);.. |
4780 | 69 6e 6f 64 65 5f 69 6e 69 74 5f 6f 6e 63 65 28 26 65 69 2d 3e 76 66 73 5f 69 6e 6f 64 65 29 3b | inode_init_once(&ei->vfs_inode); |
47a0 | 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 69 6e 69 74 5f 69 6e 6f 64 65 63 61 63 68 65 28 76 | .}..static.int.init_inodecache(v |
47c0 | 6f 69 64 29 0a 7b 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 20 3d 20 6b 6d 65 6d 5f | oid).{..ncp_inode_cachep.=.kmem_ |
47e0 | 63 61 63 68 65 5f 63 72 65 61 74 65 28 22 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 22 2c 0a | cache_create("ncp_inode_cache",. |
4800 | 09 09 09 09 09 20 20 20 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 | ..........sizeof(struct.ncp_inod |
4820 | 65 5f 69 6e 66 6f 29 2c 0a 09 09 09 09 09 20 20 20 20 20 30 2c 20 28 53 4c 41 42 5f 52 45 43 4c | e_info),...........0,.(SLAB_RECL |
4840 | 41 49 4d 5f 41 43 43 4f 55 4e 54 7c 0a 09 09 09 09 09 09 53 4c 41 42 5f 4d 45 4d 5f 53 50 52 45 | AIM_ACCOUNT|.......SLAB_MEM_SPRE |
4860 | 41 44 7c 53 4c 41 42 5f 41 43 43 4f 55 4e 54 29 2c 0a 09 09 09 09 09 20 20 20 20 20 69 6e 69 74 | AD|SLAB_ACCOUNT),...........init |
4880 | 5f 6f 6e 63 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 20 3d 3d | _once);..if.(ncp_inode_cachep.== |
48a0 | 20 4e 55 4c 4c 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 72 65 74 75 72 6e | .NULL)...return.-ENOMEM;..return |
48c0 | 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 | .0;.}..static.void.destroy_inode |
48e0 | 63 61 63 68 65 28 76 6f 69 64 29 0a 7b 0a 09 2f 2a 0a 09 20 2a 20 4d 61 6b 65 20 73 75 72 65 20 | cache(void).{../*...*.Make.sure. |
4900 | 61 6c 6c 20 64 65 6c 61 79 65 64 20 72 63 75 20 66 72 65 65 20 69 6e 6f 64 65 73 20 61 72 65 20 | all.delayed.rcu.free.inodes.are. |
4920 | 66 6c 75 73 68 65 64 20 62 65 66 6f 72 65 20 77 65 0a 09 20 2a 20 64 65 73 74 72 6f 79 20 63 61 | flushed.before.we...*.destroy.ca |
4940 | 63 68 65 2e 0a 09 20 2a 2f 0a 09 72 63 75 5f 62 61 72 72 69 65 72 28 29 3b 0a 09 6b 6d 65 6d 5f | che....*/..rcu_barrier();..kmem_ |
4960 | 63 61 63 68 65 5f 64 65 73 74 72 6f 79 28 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 29 3b | cache_destroy(ncp_inode_cachep); |
4980 | 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6d 6f 75 6e 74 28 73 74 72 75 63 | .}..static.int.ncp_remount(struc |
49a0 | 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 2c 20 69 6e 74 20 2a 66 6c 61 67 73 2c 20 63 | t.super_block.*sb,.int.*flags,.c |
49c0 | 68 61 72 2a 20 64 61 74 61 29 0a 7b 0a 09 73 79 6e 63 5f 66 69 6c 65 73 79 73 74 65 6d 28 73 62 | har*.data).{..sync_filesystem(sb |
49e0 | 29 3b 0a 09 2a 66 6c 61 67 73 20 7c 3d 20 4d 53 5f 4e 4f 44 49 52 41 54 49 4d 45 3b 0a 09 72 65 | );..*flags.|=.MS_NODIRATIME;..re |
4a00 | 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 | turn.0;.}..static.const.struct.s |
4a20 | 75 70 65 72 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 73 6f 70 73 20 3d 0a 7b 0a 09 2e 61 | uper_operations.ncp_sops.=.{...a |
4a40 | 6c 6c 6f 63 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 61 6c 6c 6f 63 5f 69 6e 6f 64 65 2c 0a 09 2e | lloc_inode.=.ncp_alloc_inode,... |
4a60 | 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 64 65 73 74 72 6f 79 5f 69 6e 6f 64 | destroy_inode.=.ncp_destroy_inod |
4a80 | 65 2c 0a 09 2e 64 72 6f 70 5f 69 6e 6f 64 65 09 3d 20 67 65 6e 65 72 69 63 5f 64 65 6c 65 74 65 | e,...drop_inode.=.generic_delete |
4aa0 | 5f 69 6e 6f 64 65 2c 0a 09 2e 65 76 69 63 74 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 65 76 69 63 | _inode,...evict_inode.=.ncp_evic |
4ac0 | 74 5f 69 6e 6f 64 65 2c 0a 09 2e 70 75 74 5f 73 75 70 65 72 09 3d 20 6e 63 70 5f 70 75 74 5f 73 | t_inode,...put_super.=.ncp_put_s |
4ae0 | 75 70 65 72 2c 0a 09 2e 73 74 61 74 66 73 09 09 3d 20 6e 63 70 5f 73 74 61 74 66 73 2c 0a 09 2e | uper,...statfs..=.ncp_statfs,... |
4b00 | 72 65 6d 6f 75 6e 74 5f 66 73 09 3d 20 6e 63 70 5f 72 65 6d 6f 75 6e 74 2c 0a 09 2e 73 68 6f 77 | remount_fs.=.ncp_remount,...show |
4b20 | 5f 6f 70 74 69 6f 6e 73 09 3d 20 6e 63 70 5f 73 68 6f 77 5f 6f 70 74 69 6f 6e 73 2c 0a 7d 3b 0a | _options.=.ncp_show_options,.};. |
4b40 | 0a 2f 2a 0a 20 2a 20 46 69 6c 6c 20 69 6e 20 74 68 65 20 6e 63 70 66 73 2d 73 70 65 63 69 66 69 | ./*..*.Fill.in.the.ncpfs-specifi |
4b60 | 63 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 6f 64 65 2e 0a 20 2a 2f 0a | c.information.in.the.inode...*/. |
4b80 | 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 64 69 72 65 6e 74 28 73 74 | static.void.ncp_update_dirent(st |
4ba0 | 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e | ruct.inode.*inode,.struct.ncp_en |
4bc0 | 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 | try_info.*nwinfo).{..NCP_FINFO(i |
4be0 | 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 6e 77 69 6e 66 6f 2d 3e 69 2e 44 6f 73 | node)->DosDirNum.=.nwinfo->i.Dos |
4c00 | 44 69 72 4e 75 6d 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e | DirNum;..NCP_FINFO(inode)->dirEn |
4c20 | 74 4e 75 6d 20 3d 20 6e 77 69 6e 66 6f 2d 3e 69 2e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 4e 43 50 | tNum.=.nwinfo->i.dirEntNum;..NCP |
4c40 | 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 6e 77 69 6e 66 | _FINFO(inode)->volNumber.=.nwinf |
4c60 | 6f 2d 3e 76 6f 6c 75 6d 65 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e | o->volume;.}..void.ncp_update_in |
4c80 | 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 | ode(struct.inode.*inode,.struct. |
4ca0 | 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 6e 63 70 5f 75 | ncp_entry_info.*nwinfo).{..ncp_u |
4cc0 | 70 64 61 74 65 5f 64 69 72 65 6e 74 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 09 4e 43 | pdate_dirent(inode,.nwinfo);..NC |
4ce0 | 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 6e 77 69 6e 66 6f 2d | P_FINFO(inode)->nwattr.=.nwinfo- |
4d00 | 3e 69 2e 61 74 74 72 69 62 75 74 65 73 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 | >i.attributes;..NCP_FINFO(inode) |
4d20 | 2d 3e 61 63 63 65 73 73 20 3d 20 6e 77 69 6e 66 6f 2d 3e 61 63 63 65 73 73 3b 0a 09 6d 65 6d 63 | ->access.=.nwinfo->access;..memc |
4d40 | 70 79 28 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 | py(NCP_FINFO(inode)->file_handle |
4d60 | 2c 20 6e 77 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 73 69 7a 65 6f 66 | ,.nwinfo->file_handle,....sizeof |
4d80 | 28 6e 77 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 29 3b 0a 09 6e 63 70 5f 64 62 67 | (nwinfo->file_handle));..ncp_dbg |
4da0 | 28 31 2c 20 22 75 70 64 61 74 65 64 20 25 73 2c 20 76 6f 6c 6e 75 6d 3d 25 64 2c 20 64 69 72 65 | (1,."updated.%s,.volnum=%d,.dire |
4dc0 | 6e 74 3d 25 75 5c 6e 22 2c 0a 09 09 6e 77 69 6e 66 6f 2d 3e 69 2e 65 6e 74 72 79 4e 61 6d 65 2c | nt=%u\n",...nwinfo->i.entryName, |
4de0 | 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 | .NCP_FINFO(inode)->volNumber,... |
4e00 | 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 7d 0a | NCP_FINFO(inode)->dirEntNum);.}. |
4e20 | 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 64 61 74 65 73 28 73 74 | .static.void.ncp_update_dates(st |
4e40 | 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 | ruct.inode.*inode,.struct.nw_inf |
4e60 | 6f 5f 73 74 72 75 63 74 20 2a 6e 77 69 29 0a 7b 0a 09 2f 2a 20 4e 46 53 20 6e 61 6d 65 73 70 61 | o_struct.*nwi).{../*.NFS.namespa |
4e80 | 63 65 20 6d 6f 64 65 20 6f 76 65 72 72 69 64 65 73 20 6f 74 68 65 72 73 20 69 66 20 69 74 27 73 | ce.mode.overrides.others.if.it's |
4ea0 | 20 73 65 74 2e 20 2a 2f 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 28 25 73 29 20 6e 66 73 2e 6d | .set..*/..ncp_dbg(1,."(%s).nfs.m |
4ec0 | 6f 64 65 3d 30 25 6f 5c 6e 22 2c 20 6e 77 69 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 6e 77 69 2d | ode=0%o\n",.nwi->entryName,.nwi- |
4ee0 | 3e 6e 66 73 2e 6d 6f 64 65 29 3b 0a 09 69 66 20 28 6e 77 69 2d 3e 6e 66 73 2e 6d 6f 64 65 29 20 | >nfs.mode);..if.(nwi->nfs.mode). |
4f00 | 7b 0a 09 09 2f 2a 20 58 58 58 20 53 65 63 75 72 69 74 79 3f 20 2a 2f 0a 09 09 69 6e 6f 64 65 2d | {.../*.XXX.Security?.*/...inode- |
4f20 | 3e 69 5f 6d 6f 64 65 20 3d 20 6e 77 69 2d 3e 6e 66 73 2e 6d 6f 64 65 3b 0a 09 7d 0a 0a 09 69 6e | >i_mode.=.nwi->nfs.mode;..}...in |
4f40 | 6f 64 65 2d 3e 69 5f 62 6c 6f 63 6b 73 20 3d 20 28 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e 6f | ode->i_blocks.=.(i_size_read(ino |
4f60 | 64 65 29 20 2b 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 20 2d 20 31 29 20 3e 3e 20 4e 43 50 | de).+.NCP_BLOCK_SIZE.-.1).>>.NCP |
4f80 | 5f 42 4c 4f 43 4b 5f 53 48 49 46 54 3b 0a 0a 09 69 6e 6f 64 65 2d 3e 69 5f 6d 74 69 6d 65 2e 74 | _BLOCK_SHIFT;...inode->i_mtime.t |
4fa0 | 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 6e 77 69 2d 3e 6d | v_sec.=.ncp_date_dos2unix(nwi->m |
4fc0 | 6f 64 69 66 79 54 69 6d 65 2c 20 6e 77 69 2d 3e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 09 69 6e | odifyTime,.nwi->modifyDate);..in |
4fe0 | 6f 64 65 2d 3e 69 5f 63 74 69 6d 65 2e 74 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 | ode->i_ctime.tv_sec.=.ncp_date_d |
5000 | 6f 73 32 75 6e 69 78 28 6e 77 69 2d 3e 63 72 65 61 74 69 6f 6e 54 69 6d 65 2c 20 6e 77 69 2d 3e | os2unix(nwi->creationTime,.nwi-> |
5020 | 63 72 65 61 74 69 6f 6e 44 61 74 65 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 61 74 69 6d 65 2e 74 | creationDate);..inode->i_atime.t |
5040 | 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 30 2c 20 6e 77 69 | v_sec.=.ncp_date_dos2unix(0,.nwi |
5060 | 2d 3e 6c 61 73 74 41 63 63 65 73 73 44 61 74 65 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 61 74 69 | ->lastAccessDate);..inode->i_ati |
5080 | 6d 65 2e 74 76 5f 6e 73 65 63 20 3d 20 30 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 6d 74 69 6d 65 2e | me.tv_nsec.=.0;..inode->i_mtime. |
50a0 | 74 76 5f 6e 73 65 63 20 3d 20 30 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 63 74 69 6d 65 2e 74 76 5f | tv_nsec.=.0;..inode->i_ctime.tv_ |
50c0 | 6e 73 65 63 20 3d 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 | nsec.=.0;.}..static.void.ncp_upd |
50e0 | 61 74 65 5f 61 74 74 72 73 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 | ate_attrs(struct.inode.*inode,.s |
5100 | 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a | truct.ncp_entry_info.*nwinfo).{. |
5120 | 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 6e 77 69 20 3d 20 26 6e | .struct.nw_info_struct.*nwi.=.&n |
5140 | 77 69 6e 66 6f 2d 3e 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 | winfo->i;..struct.ncp_server.*se |
5160 | 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 0a 09 69 66 20 28 | rver.=.NCP_SERVER(inode);...if.( |
5180 | 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 20 7b 0a 09 09 69 6e 6f 64 | nwi->attributes.&.aDIR).{...inod |
51a0 | 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 3b 0a | e->i_mode.=.server->m.dir_mode;. |
51c0 | 09 09 2f 2a 20 66 6f 72 20 64 69 72 65 63 74 6f 72 69 65 73 20 64 61 74 61 53 74 72 65 61 6d 53 | ../*.for.directories.dataStreamS |
51e0 | 69 7a 65 20 73 65 65 6d 73 20 74 6f 20 62 65 20 73 6f 6d 65 0a 09 09 20 20 20 4f 62 6a 65 63 74 | ize.seems.to.be.some......Object |
5200 | 20 49 44 20 3f 3f 3f 20 2a 2f 0a 09 09 69 5f 73 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c | .ID.???.*/...i_size_write(inode, |
5220 | 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 75 33 | .NCP_BLOCK_SIZE);..}.else.{...u3 |
5240 | 32 20 73 69 7a 65 3b 0a 0a 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 73 65 72 76 65 | 2.size;....inode->i_mode.=.serve |
5260 | 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 73 69 7a 65 20 3d 20 6c 65 33 32 5f 74 6f | r->m.file_mode;...size.=.le32_to |
5280 | 5f 63 70 75 28 6e 77 69 2d 3e 64 61 74 61 53 74 72 65 61 6d 53 69 7a 65 29 3b 0a 09 09 69 5f 73 | _cpu(nwi->dataStreamSize);...i_s |
52a0 | 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c 20 73 69 7a 65 29 3b 0a 23 69 66 64 65 66 20 43 | ize_write(inode,.size);.#ifdef.C |
52c0 | 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 09 69 66 20 28 28 73 65 72 76 65 72 | ONFIG_NCPFS_EXTRAS...if.((server |
52e0 | 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 28 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 7c 4e 43 | ->m.flags.&.(NCP_MOUNT_EXTRAS|NC |
5300 | 50 5f 4d 4f 55 4e 54 5f 53 59 4d 4c 49 4e 4b 53 29 29 20 0a 09 09 20 26 26 20 28 6e 77 69 2d 3e | P_MOUNT_SYMLINKS)).....&&.(nwi-> |
5320 | 61 74 74 72 69 62 75 74 65 73 20 26 20 61 53 48 41 52 45 44 29 29 20 7b 0a 09 09 09 73 77 69 74 | attributes.&.aSHARED)).{....swit |
5340 | 63 68 20 28 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 28 61 48 49 44 44 45 4e 7c 61 | ch.(nwi->attributes.&.(aHIDDEN|a |
5360 | 53 59 53 54 45 4d 29 29 20 7b 0a 09 09 09 09 63 61 73 65 20 61 48 49 44 44 45 4e 3a 0a 09 09 09 | SYSTEM)).{.....case.aHIDDEN:.... |
5380 | 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e | ..if.(server->m.flags.&.NCP_MOUN |
53a0 | 54 5f 53 59 4d 4c 49 4e 4b 53 29 20 7b 0a 09 09 09 09 09 09 69 66 20 28 2f 2a 20 28 73 69 7a 65 | T_SYMLINKS).{.......if.(/*.(size |
53c0 | 20 3e 3d 20 4e 43 50 5f 4d 49 4e 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 29 0a 09 09 09 09 09 09 | .>=.NCP_MIN_SYMLINK_SIZE)....... |
53e0 | 20 26 26 20 2a 2f 20 28 73 69 7a 65 20 3c 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f | .&&.*/.(size.<=.NCP_MAX_SYMLINK_ |
5400 | 53 49 5a 45 29 29 20 7b 0a 09 09 09 09 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 | SIZE)).{........inode->i_mode.=. |
5420 | 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 26 20 7e 53 5f 49 46 4d 54 29 20 7c 20 53 5f 49 46 | (inode->i_mode.&.~S_IFMT).|.S_IF |
5440 | 4c 4e 4b 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c | LNK;........NCP_FINFO(inode)->fl |
5460 | 61 67 73 20 7c 3d 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d 4c 49 4e 4b 3b 0a 09 09 09 09 | ags.|=.NCPI_KLUDGE_SYMLINK;..... |
5480 | 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 2f 2a | ...break;.......}......}....../* |
54a0 | 20 46 41 4c 4c 54 48 52 4f 55 47 48 20 2a 2f 0a 09 09 09 09 63 61 73 65 20 30 3a 0a 09 09 09 09 | .FALLTHROUGH.*/.....case.0:..... |
54c0 | 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 | .if.(server->m.flags.&.NCP_MOUNT |
54e0 | 5f 45 58 54 52 41 53 29 0a 09 09 09 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 7c 3d 20 | _EXTRAS).......inode->i_mode.|=. |
5500 | 53 5f 49 52 55 47 4f 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 63 61 73 65 20 61 53 | S_IRUGO;......break;.....case.aS |
5520 | 59 53 54 45 4d 3a 0a 09 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 | YSTEM:......if.(server->m.flags. |
5540 | 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 29 0a 09 09 09 09 09 09 69 6e 6f 64 65 2d | &.NCP_MOUNT_EXTRAS).......inode- |
5560 | 3e 69 5f 6d 6f 64 65 20 7c 3d 20 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3e 3e 20 32 29 20 | >i_mode.|=.(inode->i_mode.>>.2). |
5580 | 26 20 53 5f 49 58 55 47 4f 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 2f 2a 20 63 61 | &.S_IXUGO;......break;...../*.ca |
55a0 | 73 65 20 61 53 59 53 54 45 4d 7c 61 48 49 44 44 45 4e 3a 20 2a 2f 0a 09 09 09 09 64 65 66 61 75 | se.aSYSTEM|aHIDDEN:.*/.....defau |
55c0 | 6c 74 3a 0a 09 09 09 09 09 2f 2a 20 72 65 73 65 72 76 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e | lt:....../*.reserved.combination |
55e0 | 20 2a 2f 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 7d 0a 09 09 7d 0a 23 65 6e 64 69 66 0a | .*/......break;....}...}.#endif. |
5600 | 09 7d 0a 09 69 66 20 28 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 61 52 4f 4e 4c 59 | .}..if.(nwi->attributes.&.aRONLY |
5620 | 29 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 26 3d 20 7e 53 5f 49 57 55 47 4f 3b 0a 7d 0a 0a | ).inode->i_mode.&=.~S_IWUGO;.}.. |
5640 | 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 28 73 74 72 75 63 74 20 69 6e | void.ncp_update_inode2(struct.in |
5660 | 6f 64 65 2a 20 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 | ode*.inode,.struct.ncp_entry_inf |
5680 | 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e | o.*nwinfo).{..NCP_FINFO(inode)-> |
56a0 | 66 6c 61 67 73 20 3d 20 30 3b 0a 09 69 66 20 28 21 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e 43 | flags.=.0;..if.(!atomic_read(&NC |
56c0 | 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 29 20 7b 0a 09 09 4e 43 50 | P_FINFO(inode)->opened)).{...NCP |
56e0 | 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 6e 77 69 6e 66 6f 2d 3e | _FINFO(inode)->nwattr.=.nwinfo-> |
5700 | 69 2e 61 74 74 72 69 62 75 74 65 73 3b 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 61 74 74 72 73 | i.attributes;...ncp_update_attrs |
5720 | 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 75 70 64 61 74 65 | (inode,.nwinfo);..}...ncp_update |
5740 | 5f 64 61 74 65 73 28 69 6e 6f 64 65 2c 20 26 6e 77 69 6e 66 6f 2d 3e 69 29 3b 0a 09 6e 63 70 5f | _dates(inode,.&nwinfo->i);..ncp_ |
5760 | 75 70 64 61 74 65 5f 64 69 72 65 6e 74 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 7d 0a | update_dirent(inode,.nwinfo);.}. |
5780 | 0a 2f 2a 0a 20 2a 20 46 69 6c 6c 20 69 6e 20 74 68 65 20 69 6e 6f 64 65 20 62 61 73 65 64 20 6f | ./*..*.Fill.in.the.inode.based.o |
57a0 | 6e 20 74 68 65 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 20 | n.the.ncp_entry_info.structure.. |
57c0 | 20 55 73 65 64 20 6f 6e 6c 79 20 66 6f 72 20 62 72 61 6e 64 20 6e 65 77 20 69 6e 6f 64 65 73 2e | .Used.only.for.brand.new.inodes. |
57e0 | 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 73 65 74 5f 61 74 74 72 28 73 74 | ..*/.static.void.ncp_set_attr(st |
5800 | 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e | ruct.inode.*inode,.struct.ncp_en |
5820 | 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f | try_info.*nwinfo).{..struct.ncp_ |
5840 | 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 | server.*server.=.NCP_SERVER(inod |
5860 | 65 29 3b 0a 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 3d 20 | e);...NCP_FINFO(inode)->flags.=. |
5880 | 30 3b 0a 09 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 61 74 74 72 73 28 69 6e 6f 64 65 2c 20 6e 77 | 0;....ncp_update_attrs(inode,.nw |
58a0 | 69 6e 66 6f 29 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 69 6e 6f 64 65 2d 3e 69 5f 6d 6f | info);...ncp_dbg(2,."inode->i_mo |
58c0 | 64 65 20 3d 20 25 75 5c 6e 22 2c 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 3b 0a 0a 09 73 65 | de.=.%u\n",.inode->i_mode);...se |
58e0 | 74 5f 6e 6c 69 6e 6b 28 69 6e 6f 64 65 2c 20 31 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 75 69 64 | t_nlink(inode,.1);..inode->i_uid |
5900 | 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 67 69 64 20 | .=.server->m.uid;..inode->i_gid. |
5920 | 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 3b 0a 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 64 61 | =.server->m.gid;...ncp_update_da |
5940 | 74 65 73 28 69 6e 6f 64 65 2c 20 26 6e 77 69 6e 66 6f 2d 3e 69 29 3b 0a 09 6e 63 70 5f 75 70 64 | tes(inode,.&nwinfo->i);..ncp_upd |
5960 | 61 74 65 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 7d 0a 0a 23 69 66 | ate_inode(inode,.nwinfo);.}..#if |
5980 | 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c | .defined(CONFIG_NCPFS_EXTRAS).|| |
59a0 | 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 73 74 | .defined(CONFIG_NCPFS_NFS_NS).st |
59c0 | 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f | atic.const.struct.inode_operatio |
59e0 | 6e 73 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 | ns.ncp_symlink_inode_operations. |
5a00 | 3d 20 7b 0a 09 2e 72 65 61 64 6c 69 6e 6b 09 3d 20 67 65 6e 65 72 69 63 5f 72 65 61 64 6c 69 6e | =.{...readlink.=.generic_readlin |
5a20 | 6b 2c 0a 09 2e 67 65 74 5f 6c 69 6e 6b 09 3d 20 70 61 67 65 5f 67 65 74 5f 6c 69 6e 6b 2c 0a 09 | k,...get_link.=.page_get_link,.. |
5a40 | 2e 73 65 74 61 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 2c 0a 7d 3b | .setattr.=.ncp_notify_change,.}; |
5a60 | 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 47 65 74 20 61 20 6e 65 77 20 69 6e 6f 64 65 2e 0a | .#endif../*..*.Get.a.new.inode.. |
5a80 | 20 2a 2f 0a 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 20 0a 6e 63 70 5f 69 67 65 74 28 73 74 72 | .*/.struct.inode.*..ncp_iget(str |
5aa0 | 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 2c 20 73 74 72 75 63 74 20 6e 63 70 5f | uct.super_block.*sb,.struct.ncp_ |
5ac0 | 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 | entry_info.*info).{..struct.inod |
5ae0 | 65 20 2a 69 6e 6f 64 65 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a | e.*inode;...if.(info.==.NULL).{. |
5b00 | 09 09 70 72 5f 65 72 72 28 22 25 73 3a 20 69 6e 66 6f 20 69 73 20 4e 55 4c 4c 5c 6e 22 2c 20 5f | ..pr_err("%s:.info.is.NULL\n",._ |
5b20 | 5f 66 75 6e 63 5f 5f 29 3b 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 09 7d 0a 0a 09 69 6e | _func__);...return.NULL;..}...in |
5b40 | 6f 64 65 20 3d 20 6e 65 77 5f 69 6e 6f 64 65 28 73 62 29 3b 0a 09 69 66 20 28 69 6e 6f 64 65 29 | ode.=.new_inode(sb);..if.(inode) |
5b60 | 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 | .{...atomic_set(&NCP_FINFO(inode |
5b80 | 29 2d 3e 6f 70 65 6e 65 64 2c 20 69 6e 66 6f 2d 3e 6f 70 65 6e 65 64 29 3b 0a 0a 09 09 69 6e 6f | )->opened,.info->opened);....ino |
5ba0 | 64 65 2d 3e 69 5f 69 6e 6f 20 3d 20 69 6e 66 6f 2d 3e 69 6e 6f 3b 0a 09 09 6e 63 70 5f 73 65 74 | de->i_ino.=.info->ino;...ncp_set |
5bc0 | 5f 61 74 74 72 28 69 6e 6f 64 65 2c 20 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 53 5f 49 53 52 45 | _attr(inode,.info);...if.(S_ISRE |
5be0 | 47 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f | G(inode->i_mode)).{....inode->i_ |
5c00 | 6f 70 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b | op.=.&ncp_file_inode_operations; |
5c20 | 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 66 6f 70 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 6f 70 65 | ....inode->i_fop.=.&ncp_file_ope |
5c40 | 72 61 74 69 6f 6e 73 3b 0a 09 09 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 53 44 49 52 28 69 6e | rations;...}.else.if.(S_ISDIR(in |
5c60 | 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6f 70 20 3d | ode->i_mode)).{....inode->i_op.= |
5c80 | 20 26 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 09 09 09 69 | .&ncp_dir_inode_operations;....i |
5ca0 | 6e 6f 64 65 2d 3e 69 5f 66 6f 70 20 3d 20 26 6e 63 70 5f 64 69 72 5f 6f 70 65 72 61 74 69 6f 6e | node->i_fop.=.&ncp_dir_operation |
5cc0 | 73 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 | s;.#ifdef.CONFIG_NCPFS_NFS_NS... |
5ce0 | 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 53 43 48 52 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 | }.else.if.(S_ISCHR(inode->i_mode |
5d00 | 29 20 7c 7c 20 53 5f 49 53 42 4c 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 20 7c 7c 20 53 | ).||.S_ISBLK(inode->i_mode).||.S |
5d20 | 5f 49 53 46 49 46 4f 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 20 7c 7c 20 53 5f 49 53 53 4f | _ISFIFO(inode->i_mode).||.S_ISSO |
5d40 | 43 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 69 74 5f 73 70 65 | CK(inode->i_mode)).{....init_spe |
5d60 | 63 69 61 6c 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 2c | cial_inode(inode,.inode->i_mode, |
5d80 | 0a 09 09 09 09 6e 65 77 5f 64 65 63 6f 64 65 5f 64 65 76 28 69 6e 66 6f 2d 3e 69 2e 6e 66 73 2e | .....new_decode_dev(info->i.nfs. |
5da0 | 72 64 65 76 29 29 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 | rdev));.#endif.#if.defined(CONFI |
5dc0 | 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 | G_NCPFS_EXTRAS).||.defined(CONFI |
5de0 | 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 09 09 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 | G_NCPFS_NFS_NS)...}.else.if.(S_I |
5e00 | 53 4c 4e 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d | SLNK(inode->i_mode)).{....inode- |
5e20 | 3e 69 5f 6f 70 20 3d 20 26 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 | >i_op.=.&ncp_symlink_inode_opera |
5e40 | 74 69 6f 6e 73 3b 0a 09 09 09 69 6e 6f 64 65 5f 6e 6f 68 69 67 68 6d 65 6d 28 69 6e 6f 64 65 29 | tions;....inode_nohighmem(inode) |
5e60 | 3b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2e 61 5f 6f 70 73 20 3d 20 26 6e 63 70 5f | ;....inode->i_data.a_ops.=.&ncp_ |
5e80 | 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 3b 0a 23 65 6e 64 69 66 0a 09 09 7d 20 65 6c 73 65 20 7b 0a | symlink_aops;.#endif...}.else.{. |
5ea0 | 09 09 09 6d 61 6b 65 5f 62 61 64 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 3b 0a 09 09 7d 0a 09 09 | ...make_bad_inode(inode);...}... |
5ec0 | 69 6e 73 65 72 74 5f 69 6e 6f 64 65 5f 68 61 73 68 28 69 6e 6f 64 65 29 3b 0a 09 7d 20 65 6c 73 | insert_inode_hash(inode);..}.els |
5ee0 | 65 0a 09 09 70 72 5f 65 72 72 28 22 25 73 3a 20 69 67 65 74 20 66 61 69 6c 65 64 21 5c 6e 22 2c | e...pr_err("%s:.iget.failed!\n", |
5f00 | 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 72 65 74 75 72 6e 20 69 6e 6f 64 65 3b 0a 7d 0a 0a 73 74 | .__func__);..return.inode;.}..st |
5f20 | 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 65 76 69 63 74 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 | atic.void.ncp_evict_inode(struct |
5f40 | 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 74 72 75 6e 63 61 74 65 5f 69 6e 6f 64 65 | .inode.*inode).{..truncate_inode |
5f60 | 5f 70 61 67 65 73 5f 66 69 6e 61 6c 28 26 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 29 3b 0a 09 63 | _pages_final(&inode->i_data);..c |
5f80 | 6c 65 61 72 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 3b 0a 0a 09 69 66 20 28 53 5f 49 53 44 49 52 | lear_inode(inode);...if.(S_ISDIR |
5fa0 | 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 32 2c 20 | (inode->i_mode)).{...ncp_dbg(2,. |
5fc0 | 22 70 75 74 20 64 69 72 65 63 74 6f 72 79 20 25 6c 64 5c 6e 22 2c 20 69 6e 6f 64 65 2d 3e 69 5f | "put.directory.%ld\n",.inode->i_ |
5fe0 | 69 6e 6f 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 | ino);..}...if.(ncp_make_closed(i |
6000 | 6e 6f 64 65 29 20 21 3d 20 30 29 20 7b 0a 09 09 2f 2a 20 57 65 20 63 61 6e 27 74 20 64 6f 20 61 | node).!=.0).{.../*.We.can't.do.a |
6020 | 6e 79 74 68 69 6e 67 20 62 75 74 20 63 6f 6d 70 6c 61 69 6e 2e 20 2a 2f 0a 09 09 70 72 5f 65 72 | nything.but.complain..*/...pr_er |
6040 | 72 28 22 25 73 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6c 6f 73 65 5c 6e 22 2c 20 5f 5f 66 75 6e | r("%s:.could.not.close\n",.__fun |
6060 | 63 5f 5f 29 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 73 74 6f 70 | c__);..}.}..static.void.ncp_stop |
6080 | 5f 74 61 73 6b 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 | _tasks(struct.ncp_server.*server |
60a0 | 29 20 7b 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 20 3d 20 73 65 72 76 65 72 2d 3e 6e | ).{..struct.sock*.sk.=.server->n |
60c0 | 63 70 5f 73 6f 63 6b 2d 3e 73 6b 3b 0a 0a 09 6c 6f 63 6b 5f 73 6f 63 6b 28 73 6b 29 3b 0a 09 73 | cp_sock->sk;...lock_sock(sk);..s |
60e0 | 6b 2d 3e 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 20 3d 20 73 65 72 76 65 72 2d 3e 65 72 72 | k->sk_error_report.=.server->err |
6100 | 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 73 6b 2d 3e 73 6b 5f 64 61 74 61 5f 72 65 61 64 79 20 20 20 | or_report;..sk->sk_data_ready... |
6120 | 3d 20 73 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 3b 0a 09 73 6b 2d 3e 73 6b 5f 77 72 | =.server->data_ready;..sk->sk_wr |
6140 | 69 74 65 5f 73 70 61 63 65 20 20 3d 20 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 65 | ite_space..=.server->write_space |
6160 | 3b 0a 09 72 65 6c 65 61 73 65 5f 73 6f 63 6b 28 73 6b 29 3b 0a 09 64 65 6c 5f 74 69 6d 65 72 5f | ;..release_sock(sk);..del_timer_ |
6180 | 73 79 6e 63 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 0a 09 66 6c 75 | sync(&server->timeout_tm);...flu |
61a0 | 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 09 69 66 20 28 73 | sh_work(&server->rcv.tq);..if.(s |
61c0 | 6b 2d 3e 73 6b 5f 73 6f 63 6b 65 74 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 | k->sk_socket->type.==.SOCK_STREA |
61e0 | 4d 29 0a 09 09 66 6c 75 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 74 71 29 3b | M)...flush_work(&server->tx.tq); |
6200 | 0a 09 65 6c 73 65 0a 09 09 66 6c 75 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 74 69 6d | ..else...flush_work(&server->tim |
6220 | 65 6f 75 74 5f 74 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 68 6f | eout_tq);.}..static.int..ncp_sho |
6240 | 77 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 73 65 71 5f 66 69 6c 65 20 2a 73 65 71 2c 20 | w_options(struct.seq_file.*seq,. |
6260 | 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 72 6f 6f 74 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e | struct.dentry.*root).{..struct.n |
6280 | 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 72 6f 6f 74 | cp_server.*server.=.NCP_SBP(root |
62a0 | 2d 3e 64 5f 73 62 29 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 74 6d 70 3b 0a 0a 09 69 66 | ->d_sb);..unsigned.int.tmp;...if |
62c0 | 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 2c 20 47 4c 4f 42 41 4c 5f | .(!uid_eq(server->m.uid,.GLOBAL_ |
62e0 | 52 4f 4f 54 5f 55 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 75 | ROOT_UID))...seq_printf(seq,.",u |
6300 | 69 64 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 26 | id=%u",.......from_kuid_munged(& |
6320 | 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 29 29 3b 0a 09 | init_user_ns,.server->m.uid));.. |
6340 | 69 66 20 28 21 67 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 2c 20 47 4c 4f 42 41 | if.(!gid_eq(server->m.gid,.GLOBA |
6360 | 4c 5f 52 4f 4f 54 5f 47 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 | L_ROOT_GID))...seq_printf(seq,." |
6380 | 2c 67 69 64 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d 5f 6b 67 69 64 5f 6d 75 6e 67 65 64 | ,gid=%u",.......from_kgid_munged |
63a0 | 28 26 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 29 29 3b | (&init_user_ns,.server->m.gid)); |
63c0 | 0a 09 69 66 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f | ..if.(!uid_eq(server->m.mounted_ |
63e0 | 75 69 64 2c 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 | uid,.GLOBAL_ROOT_UID))...seq_pri |
6400 | 6e 74 66 28 73 65 71 2c 20 22 2c 6f 77 6e 65 72 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d | ntf(seq,.",owner=%u",.......from |
6420 | 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 26 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 | _kuid_munged(&init_user_ns,.serv |
6440 | 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 29 3b 0a 09 74 6d 70 20 3d 20 73 65 72 76 | er->m.mounted_uid));..tmp.=.serv |
6460 | 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 41 4c 4c 55 47 4f 3b 0a 09 69 66 | er->m.file_mode.&.S_IALLUGO;..if |
6480 | 20 28 74 6d 70 20 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 4d 4f 44 45 29 0a | .(tmp.!=.NCP_DEFAULT_FILE_MODE). |
64a0 | 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 6d 6f 64 65 3d 30 25 6f 22 2c 20 74 | ..seq_printf(seq,.",mode=0%o",.t |
64c0 | 6d 70 29 3b 0a 09 74 6d 70 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 26 | mp);..tmp.=.server->m.dir_mode.& |
64e0 | 20 53 5f 49 41 4c 4c 55 47 4f 3b 0a 09 69 66 20 28 74 6d 70 20 21 3d 20 4e 43 50 5f 44 45 46 41 | .S_IALLUGO;..if.(tmp.!=.NCP_DEFA |
6500 | 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 | ULT_DIR_MODE)...seq_printf(seq,. |
6520 | 22 2c 64 69 72 6d 6f 64 65 3d 30 25 6f 22 2c 20 74 6d 70 29 3b 0a 09 69 66 20 28 73 65 72 76 65 | ",dirmode=0%o",.tmp);..if.(serve |
6540 | 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d | r->m.time_out.!=.NCP_DEFAULT_TIM |
6560 | 45 5f 4f 55 54 20 2a 20 48 5a 20 2f 20 31 30 30 29 20 7b 0a 09 09 74 6d 70 20 3d 20 73 65 72 76 | E_OUT.*.HZ./.100).{...tmp.=.serv |
6580 | 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 2a 20 31 30 30 20 2f 20 48 5a 3b 0a 09 09 73 65 71 | er->m.time_out.*.100./.HZ;...seq |
65a0 | 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 74 69 6d 65 6f 75 74 3d 25 75 22 2c 20 74 6d 70 29 | _printf(seq,.",timeout=%u",.tmp) |
65c0 | 3b 0a 09 7d 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 | ;..}..if.(server->m.retry_count. |
65e0 | 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f 43 4f 55 4e 54 29 0a 09 09 73 65 | !=.NCP_DEFAULT_RETRY_COUNT)...se |
6600 | 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 72 65 74 72 79 3d 25 75 22 2c 20 73 65 72 76 65 | q_printf(seq,.",retry=%u",.serve |
6620 | 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e | r->m.retry_count);..if.(server-> |
6640 | 6d 2e 66 6c 61 67 73 20 21 3d 20 30 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 | m.flags.!=.0)...seq_printf(seq,. |
6660 | 22 2c 66 6c 61 67 73 3d 25 6c 75 22 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 29 3b 0a | ",flags=%lu",.server->m.flags);. |
6680 | 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 20 21 3d 20 4e 55 4c 4c 29 | .if.(server->m.wdog_pid.!=.NULL) |
66a0 | 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 77 64 6f 67 70 69 64 3d 25 75 22 | ...seq_printf(seq,.",wdogpid=%u" |
66c0 | 2c 20 70 69 64 5f 76 6e 72 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 29 29 3b 0a | ,.pid_vnr(server->m.wdog_pid));. |
66e0 | 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 | ..return.0;.}..static.const.stru |
6700 | 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 6e 63 70 5f 6f 70 74 73 5b 5d 20 3d 20 7b 0a 09 7b 20 | ct.ncp_option.ncp_opts[].=.{..{. |
6720 | 22 75 69 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 75 27 20 7d 2c 0a 09 7b 20 22 67 69 64 22 2c | "uid",.OPT_INT,.'u'.},..{."gid", |
6740 | 09 4f 50 54 5f 49 4e 54 2c 09 27 67 27 20 7d 2c 0a 09 7b 20 22 6f 77 6e 65 72 22 2c 09 4f 50 54 | .OPT_INT,.'g'.},..{."owner",.OPT |
6760 | 5f 49 4e 54 2c 09 27 6f 27 20 7d 2c 0a 09 7b 20 22 6d 6f 64 65 22 2c 09 4f 50 54 5f 49 4e 54 2c | _INT,.'o'.},..{."mode",.OPT_INT, |
6780 | 09 27 6d 27 20 7d 2c 0a 09 7b 20 22 64 69 72 6d 6f 64 65 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 | .'m'.},..{."dirmode",.OPT_INT,.' |
67a0 | 64 27 20 7d 2c 0a 09 7b 20 22 74 69 6d 65 6f 75 74 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 74 27 | d'.},..{."timeout",.OPT_INT,.'t' |
67c0 | 20 7d 2c 0a 09 7b 20 22 72 65 74 72 79 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 72 27 20 7d 2c 0a | .},..{."retry",.OPT_INT,.'r'.},. |
67e0 | 09 7b 20 22 66 6c 61 67 73 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 66 27 20 7d 2c 0a 09 7b 20 22 | .{."flags",.OPT_INT,.'f'.},..{." |
6800 | 77 64 6f 67 70 69 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 77 27 20 7d 2c 0a 09 7b 20 22 6e 63 | wdogpid",.OPT_INT,.'w'.},..{."nc |
6820 | 70 66 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 6e 27 20 7d 2c 0a 09 7b 20 22 69 6e 66 6f 66 64 | pfd",.OPT_INT,.'n'.},..{."infofd |
6840 | 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 69 27 20 7d 2c 09 2f 2a 20 76 35 20 2a 2f 0a 09 7b 20 22 | ",.OPT_INT,.'i'.},./*.v5.*/..{." |
6860 | 76 65 72 73 69 6f 6e 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 76 27 20 7d 2c 0a 09 7b 20 4e 55 4c | version",.OPT_INT,.'v'.},..{.NUL |
6880 | 4c 2c 09 09 30 2c 09 09 30 20 7d 20 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 70 | L,..0,..0.}.};..static.int.ncp_p |
68a0 | 61 72 73 65 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 | arse_options(struct.ncp_mount_da |
68c0 | 74 61 5f 6b 65 72 6e 65 6c 20 2a 64 61 74 61 2c 20 63 68 61 72 20 2a 6f 70 74 69 6f 6e 73 29 20 | ta_kernel.*data,.char.*options). |
68e0 | 7b 0a 09 69 6e 74 20 6f 70 74 76 61 6c 3b 0a 09 63 68 61 72 20 2a 6f 70 74 61 72 67 3b 0a 09 75 | {..int.optval;..char.*optarg;..u |
6900 | 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6f 70 74 69 6e 74 3b 0a 09 69 6e 74 20 76 65 72 73 69 6f | nsigned.long.optint;..int.versio |
6920 | 6e 20 3d 20 30 3b 0a 09 69 6e 74 20 72 65 74 3b 0a 0a 09 64 61 74 61 2d 3e 66 6c 61 67 73 20 3d | n.=.0;..int.ret;...data->flags.= |
6940 | 20 30 3b 0a 09 64 61 74 61 2d 3e 69 6e 74 5f 66 6c 61 67 73 20 3d 20 30 3b 0a 09 64 61 74 61 2d | .0;..data->int_flags.=.0;..data- |
6960 | 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 3b 0a | >mounted_uid.=.GLOBAL_ROOT_UID;. |
6980 | 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d 20 4e 55 4c 4c 3b 0a 09 64 61 74 61 2d 3e 6e | .data->wdog_pid.=.NULL;..data->n |
69a0 | 63 70 5f 66 64 20 3d 20 7e 30 3b 0a 09 64 61 74 61 2d 3e 74 69 6d 65 5f 6f 75 74 20 3d 20 4e 43 | cp_fd.=.~0;..data->time_out.=.NC |
69c0 | 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 5f 4f 55 54 3b 0a 09 64 61 74 61 2d 3e 72 65 74 72 79 | P_DEFAULT_TIME_OUT;..data->retry |
69e0 | 5f 63 6f 75 6e 74 20 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f 43 4f 55 4e 54 | _count.=.NCP_DEFAULT_RETRY_COUNT |
6a00 | 3b 0a 09 64 61 74 61 2d 3e 75 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 3b 0a | ;..data->uid.=.GLOBAL_ROOT_UID;. |
6a20 | 09 64 61 74 61 2d 3e 67 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 47 49 44 3b 0a 09 64 | .data->gid.=.GLOBAL_ROOT_GID;..d |
6a40 | 61 74 61 2d 3e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c | ata->file_mode.=.NCP_DEFAULT_FIL |
6a60 | 45 5f 4d 4f 44 45 3b 0a 09 64 61 74 61 2d 3e 64 69 72 5f 6d 6f 64 65 20 3d 20 4e 43 50 5f 44 45 | E_MODE;..data->dir_mode.=.NCP_DE |
6a80 | 46 41 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 3b 0a 09 64 61 74 61 2d 3e 69 6e 66 6f 5f 66 64 20 3d | FAULT_DIR_MODE;..data->info_fd.= |
6aa0 | 20 2d 31 3b 0a 09 64 61 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d 20 30 3b 0a | .-1;..data->mounted_vol[0].=.0;. |
6ac0 | 09 0a 09 77 68 69 6c 65 20 28 28 6f 70 74 76 61 6c 20 3d 20 6e 63 70 5f 67 65 74 6f 70 74 28 22 | ...while.((optval.=.ncp_getopt(" |
6ae0 | 6e 63 70 66 73 22 2c 20 26 6f 70 74 69 6f 6e 73 2c 20 6e 63 70 5f 6f 70 74 73 2c 20 4e 55 4c 4c | ncpfs",.&options,.ncp_opts,.NULL |
6b00 | 2c 20 26 6f 70 74 61 72 67 2c 20 26 6f 70 74 69 6e 74 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 72 | ,.&optarg,.&optint)).!=.0).{...r |
6b20 | 65 74 20 3d 20 6f 70 74 76 61 6c 3b 0a 09 09 69 66 20 28 72 65 74 20 3c 20 30 29 0a 09 09 09 67 | et.=.optval;...if.(ret.<.0)....g |
6b40 | 6f 74 6f 20 65 72 72 3b 0a 09 09 73 77 69 74 63 68 20 28 6f 70 74 76 61 6c 29 20 7b 0a 09 09 09 | oto.err;...switch.(optval).{.... |
6b60 | 63 61 73 65 20 27 75 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b | case.'u':.....data->uid.=.make_k |
6b80 | 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a | uid(current_user_ns(),.optint);. |
6ba0 | 09 09 09 09 69 66 20 28 21 75 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 75 69 64 29 29 20 7b | ....if.(!uid_valid(data->uid)).{ |
6bc0 | 0a 09 09 09 09 09 72 65 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 | ......ret.=.-EINVAL;......goto.e |
6be0 | 72 72 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 67 27 | rr;.....}.....break;....case.'g' |
6c00 | 3a 0a 09 09 09 09 64 61 74 61 2d 3e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 | :.....data->gid.=.make_kgid(curr |
6c20 | 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 69 66 20 28 | ent_user_ns(),.optint);.....if.( |
6c40 | 21 67 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 67 69 64 29 29 20 7b 0a 09 09 09 09 09 72 65 | !gid_valid(data->gid)).{......re |
6c60 | 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 09 09 09 | t.=.-EINVAL;......goto.err;..... |
6c80 | 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 6f 27 3a 0a 09 09 09 09 64 61 | }.....break;....case.'o':.....da |
6ca0 | 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 | ta->mounted_uid.=.make_kuid(curr |
6cc0 | 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 69 66 20 28 | ent_user_ns(),.optint);.....if.( |
6ce0 | 21 75 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 29 20 7b | !uid_valid(data->mounted_uid)).{ |
6d00 | 0a 09 09 09 09 09 72 65 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 | ......ret.=.-EINVAL;......goto.e |
6d20 | 72 72 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 6d 27 | rr;.....}.....break;....case.'m' |
6d40 | 3a 0a 09 09 09 09 64 61 74 61 2d 3e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 6f 70 74 69 6e 74 3b 0a | :.....data->file_mode.=.optint;. |
6d60 | 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 64 27 3a 0a 09 09 09 09 64 61 74 61 | ....break;....case.'d':.....data |
6d80 | 2d 3e 64 69 72 5f 6d 6f 64 65 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a | ->dir_mode.=.optint;.....break;. |
6da0 | 09 09 09 63 61 73 65 20 27 74 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 74 69 6d 65 5f 6f 75 74 20 | ...case.'t':.....data->time_out. |
6dc0 | 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 72 27 | =.optint;.....break;....case.'r' |
6de0 | 3a 0a 09 09 09 09 64 61 74 61 2d 3e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6f 70 74 69 6e 74 | :.....data->retry_count.=.optint |
6e00 | 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 66 27 3a 0a 09 09 09 09 64 61 | ;.....break;....case.'f':.....da |
6e20 | 74 61 2d 3e 66 6c 61 67 73 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 | ta->flags.=.optint;.....break;.. |
6e40 | 09 09 63 61 73 65 20 27 77 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d | ..case.'w':.....data->wdog_pid.= |
6e60 | 20 66 69 6e 64 5f 67 65 74 5f 70 69 64 28 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 62 72 65 61 6b | .find_get_pid(optint);.....break |
6e80 | 3b 0a 09 09 09 63 61 73 65 20 27 6e 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 6e 63 70 5f 66 64 20 | ;....case.'n':.....data->ncp_fd. |
6ea0 | 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 69 27 | =.optint;.....break;....case.'i' |
6ec0 | 3a 0a 09 09 09 09 64 61 74 61 2d 3e 69 6e 66 6f 5f 66 64 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 | :.....data->info_fd.=.optint;... |
6ee0 | 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 76 27 3a 0a 09 09 09 09 72 65 74 20 3d 20 | ..break;....case.'v':.....ret.=. |
6f00 | 2d 45 43 48 52 4e 47 3b 0a 09 09 09 09 69 66 20 28 6f 70 74 69 6e 74 20 3c 20 4e 43 50 5f 4d 4f | -ECHRNG;.....if.(optint.<.NCP_MO |
6f20 | 55 4e 54 5f 56 45 52 53 49 4f 4e 5f 56 34 29 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 | UNT_VERSION_V4)......goto.err;.. |
6f40 | 09 09 09 69 66 20 28 6f 70 74 69 6e 74 20 3e 20 4e 43 50 5f 4d 4f 55 4e 54 5f 56 45 52 53 49 4f | ...if.(optint.>.NCP_MOUNT_VERSIO |
6f60 | 4e 5f 56 35 29 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 09 09 09 76 65 72 73 69 6f 6e | N_V5)......goto.err;.....version |
6f80 | 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 0a 09 09 7d 0a 09 7d | .=.optint;.....break;.......}..} |
6fa0 | 0a 09 72 65 74 75 72 6e 20 30 3b 0a 65 72 72 3a 0a 09 70 75 74 5f 70 69 64 28 64 61 74 61 2d 3e | ..return.0;.err:..put_pid(data-> |
6fc0 | 77 64 6f 67 5f 70 69 64 29 3b 0a 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d 20 4e 55 4c | wdog_pid);..data->wdog_pid.=.NUL |
6fe0 | 4c 3b 0a 09 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 | L;..return.ret;.}..static.int.nc |
7000 | 70 5f 66 69 6c 6c 5f 73 75 70 65 72 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 | p_fill_super(struct.super_block. |
7020 | 2a 73 62 2c 20 76 6f 69 64 20 2a 72 61 77 5f 64 61 74 61 2c 20 69 6e 74 20 73 69 6c 65 6e 74 29 | *sb,.void.*raw_data,.int.silent) |
7040 | 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 6b 65 72 6e 65 6c | .{..struct.ncp_mount_data_kernel |
7060 | 20 64 61 74 61 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 | .data;..struct.ncp_server.*serve |
7080 | 72 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 72 6f 6f 74 5f 69 6e 6f 64 65 3b 0a 09 73 | r;..struct.inode.*root_inode;..s |
70a0 | 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 3b 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a | truct.socket.*sock;..int.error;. |
70c0 | 09 69 6e 74 20 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 3b 0a 23 69 66 64 65 66 20 43 4f 4e | .int.default_bufsize;.#ifdef.CON |
70e0 | 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 69 6e 74 20 6f 70 | FIG_NCPFS_PACKET_SIGNING..int.op |
7100 | 74 69 6f 6e 73 3b 0a 23 65 6e 64 69 66 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f | tions;.#endif..struct.ncp_entry_ |
7120 | 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 64 61 74 61 2c 20 30 2c 20 73 | info.finfo;...memset(&data,.0,.s |
7140 | 69 7a 65 6f 66 28 64 61 74 61 29 29 3b 0a 09 73 65 72 76 65 72 20 3d 20 6b 7a 61 6c 6c 6f 63 28 | izeof(data));..server.=.kzalloc( |
7160 | 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 29 2c 20 47 46 50 5f 4b | sizeof(struct.ncp_server),.GFP_K |
7180 | 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 73 65 72 76 65 72 29 0a 09 09 72 65 74 75 72 6e 20 2d | ERNEL);..if.(!server)...return.- |
71a0 | 45 4e 4f 4d 45 4d 3b 0a 09 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 20 3d 20 73 65 72 76 65 72 3b | ENOMEM;..sb->s_fs_info.=.server; |
71c0 | 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 69 66 20 28 72 61 77 5f 64 61 74 | ...error.=.-EFAULT;..if.(raw_dat |
71e0 | 61 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 73 77 69 74 63 68 20 28 | a.==.NULL)...goto.out;..switch.( |
7200 | 2a 28 69 6e 74 2a 29 72 61 77 5f 64 61 74 61 29 20 7b 0a 09 09 63 61 73 65 20 4e 43 50 5f 4d 4f | *(int*)raw_data).{...case.NCP_MO |
7220 | 55 4e 54 5f 56 45 52 53 49 4f 4e 3a 0a 09 09 09 7b 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 | UNT_VERSION:....{.....struct.ncp |
7240 | 5f 6d 6f 75 6e 74 5f 64 61 74 61 2a 20 6d 64 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f | _mount_data*.md.=.(struct.ncp_mo |
7260 | 75 6e 74 5f 64 61 74 61 2a 29 72 61 77 5f 64 61 74 61 3b 0a 0a 09 09 09 09 64 61 74 61 2e 66 6c | unt_data*)raw_data;......data.fl |
7280 | 61 67 73 20 3d 20 6d 64 2d 3e 66 6c 61 67 73 3b 0a 09 09 09 09 64 61 74 61 2e 69 6e 74 5f 66 6c | ags.=.md->flags;.....data.int_fl |
72a0 | 61 67 73 20 3d 20 4e 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f 50 4f 53 53 49 42 | ags.=.NCP_IMOUNT_LOGGEDIN_POSSIB |
72c0 | 4c 45 3b 0a 09 09 09 09 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d 61 6b 65 5f | LE;.....data.mounted_uid.=.make_ |
72e0 | 6b 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 6d 6f 75 6e | kuid(current_user_ns(),.md->moun |
7300 | 74 65 64 5f 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 77 64 6f 67 5f 70 69 64 20 3d 20 66 69 | ted_uid);.....data.wdog_pid.=.fi |
7320 | 6e 64 5f 67 65 74 5f 70 69 64 28 6d 64 2d 3e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 09 09 09 64 61 | nd_get_pid(md->wdog_pid);.....da |
7340 | 74 61 2e 6e 63 70 5f 66 64 20 3d 20 6d 64 2d 3e 6e 63 70 5f 66 64 3b 0a 09 09 09 09 64 61 74 61 | ta.ncp_fd.=.md->ncp_fd;.....data |
7360 | 2e 74 69 6d 65 5f 6f 75 74 20 3d 20 6d 64 2d 3e 74 69 6d 65 5f 6f 75 74 3b 0a 09 09 09 09 64 61 | .time_out.=.md->time_out;.....da |
7380 | 74 61 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6d 64 2d 3e 72 65 74 72 79 5f 63 6f 75 6e 74 | ta.retry_count.=.md->retry_count |
73a0 | 3b 0a 09 09 09 09 64 61 74 61 2e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 65 | ;.....data.uid.=.make_kuid(curre |
73c0 | 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 | nt_user_ns(),.md->uid);.....data |
73e0 | 2e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 | .gid.=.make_kgid(current_user_ns |
7400 | 28 29 2c 20 6d 64 2d 3e 67 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 66 69 6c 65 5f 6d 6f 64 65 | (),.md->gid);.....data.file_mode |
7420 | 20 3d 20 6d 64 2d 3e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 64 69 72 5f 6d | .=.md->file_mode;.....data.dir_m |
7440 | 6f 64 65 20 3d 20 6d 64 2d 3e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 69 6e 66 | ode.=.md->dir_mode;.....data.inf |
7460 | 6f 5f 66 64 20 3d 20 2d 31 3b 0a 09 09 09 09 6d 65 6d 63 70 79 28 64 61 74 61 2e 6d 6f 75 6e 74 | o_fd.=.-1;.....memcpy(data.mount |
7480 | 65 64 5f 76 6f 6c 2c 20 6d 64 2d 3e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 2c 0a 09 09 09 09 09 4e 43 | ed_vol,.md->mounted_vol,......NC |
74a0 | 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 4e 2b 31 29 3b 0a 09 09 09 7d 0a 09 09 09 62 72 65 61 6b 3b | P_VOLNAME_LEN+1);....}....break; |
74c0 | 0a 09 09 63 61 73 65 20 4e 43 50 5f 4d 4f 55 4e 54 5f 56 45 52 53 49 4f 4e 5f 56 34 3a 0a 09 09 | ...case.NCP_MOUNT_VERSION_V4:... |
74e0 | 09 7b 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 76 34 2a | .{.....struct.ncp_mount_data_v4* |
7500 | 20 6d 64 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 76 34 2a | .md.=.(struct.ncp_mount_data_v4* |
7520 | 29 72 61 77 5f 64 61 74 61 3b 0a 0a 09 09 09 09 64 61 74 61 2e 66 6c 61 67 73 20 3d 20 6d 64 2d | )raw_data;......data.flags.=.md- |
7540 | 3e 66 6c 61 67 73 3b 0a 09 09 09 09 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d | >flags;.....data.mounted_uid.=.m |
7560 | 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e | ake_kuid(current_user_ns(),.md-> |
7580 | 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 77 64 6f 67 5f 70 69 64 20 | mounted_uid);.....data.wdog_pid. |
75a0 | 3d 20 66 69 6e 64 5f 67 65 74 5f 70 69 64 28 6d 64 2d 3e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 09 | =.find_get_pid(md->wdog_pid);... |
75c0 | 09 09 64 61 74 61 2e 6e 63 70 5f 66 64 20 3d 20 6d 64 2d 3e 6e 63 70 5f 66 64 3b 0a 09 09 09 09 | ..data.ncp_fd.=.md->ncp_fd;..... |
75e0 | 64 61 74 61 2e 74 69 6d 65 5f 6f 75 74 20 3d 20 6d 64 2d 3e 74 69 6d 65 5f 6f 75 74 3b 0a 09 09 | data.time_out.=.md->time_out;... |
7600 | 09 09 64 61 74 61 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6d 64 2d 3e 72 65 74 72 79 5f 63 | ..data.retry_count.=.md->retry_c |
7620 | 6f 75 6e 74 3b 0a 09 09 09 09 64 61 74 61 2e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 | ount;.....data.uid.=.make_kuid(c |
7640 | 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 75 69 64 29 3b 0a 09 09 09 09 | urrent_user_ns(),.md->uid);..... |
7660 | 64 61 74 61 2e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 | data.gid.=.make_kgid(current_use |
7680 | 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 67 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 66 69 6c 65 5f | r_ns(),.md->gid);.....data.file_ |
76a0 | 6d 6f 64 65 20 3d 20 6d 64 2d 3e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 64 | mode.=.md->file_mode;.....data.d |
76c0 | 69 72 5f 6d 6f 64 65 20 3d 20 6d 64 2d 3e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 | ir_mode.=.md->dir_mode;.....data |
76e0 | 2e 69 6e 66 6f 5f 66 64 20 3d 20 2d 31 3b 0a 09 09 09 7d 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 | .info_fd.=.-1;....}....break;... |
7700 | 64 65 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 43 48 52 4e 47 3b 0a 09 09 09 | default:....error.=.-ECHRNG;.... |
7720 | 69 66 20 28 6d 65 6d 63 6d 70 28 72 61 77 5f 64 61 74 61 2c 20 22 76 65 72 73 22 2c 20 34 29 20 | if.(memcmp(raw_data,."vers",.4). |
7740 | 3d 3d 20 30 29 20 7b 0a 09 09 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 70 61 72 73 65 5f 6f 70 | ==.0).{.....error.=.ncp_parse_op |
7760 | 74 69 6f 6e 73 28 26 64 61 74 61 2c 20 72 61 77 5f 64 61 74 61 29 3b 0a 09 09 09 7d 0a 09 09 09 | tions(&data,.raw_data);....}.... |
7780 | 69 66 20 28 65 72 72 6f 72 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 62 72 65 61 | if.(error).....goto.out;....brea |
77a0 | 6b 3b 0a 09 7d 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 69 66 20 28 21 75 69 | k;..}..error.=.-EINVAL;..if.(!ui |
77c0 | 64 5f 76 61 6c 69 64 28 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 20 7c 7c 20 21 75 69 | d_valid(data.mounted_uid).||.!ui |
77e0 | 64 5f 76 61 6c 69 64 28 64 61 74 61 2e 75 69 64 29 20 7c 7c 0a 09 20 20 20 20 21 67 69 64 5f 76 | d_valid(data.uid).||......!gid_v |
7800 | 61 6c 69 64 28 64 61 74 61 2e 67 69 64 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 73 6f 63 | alid(data.gid))...goto.out;..soc |
7820 | 6b 20 3d 20 73 6f 63 6b 66 64 5f 6c 6f 6f 6b 75 70 28 64 61 74 61 2e 6e 63 70 5f 66 64 2c 20 26 | k.=.sockfd_lookup(data.ncp_fd,.& |
7840 | 65 72 72 6f 72 29 3b 0a 09 69 66 20 28 21 73 6f 63 6b 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a | error);..if.(!sock)...goto.out;. |
7860 | 0a 09 69 66 20 28 73 6f 63 6b 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 | ..if.(sock->type.==.SOCK_STREAM) |
7880 | 0a 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 20 3d 20 30 78 46 30 30 30 3b 0a 09 65 6c | ...default_bufsize.=.0xF000;..el |
78a0 | 73 65 0a 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 20 3d 20 31 30 32 34 3b 0a 0a 09 73 | se...default_bufsize.=.1024;...s |
78c0 | 62 2d 3e 73 5f 66 6c 61 67 73 20 7c 3d 20 4d 53 5f 4e 4f 44 49 52 41 54 49 4d 45 3b 09 2f 2a 20 | b->s_flags.|=.MS_NODIRATIME;./*. |
78e0 | 70 72 6f 62 61 62 6c 79 20 65 76 65 6e 20 6e 6f 61 74 69 6d 65 20 2a 2f 0a 09 73 62 2d 3e 73 5f | probably.even.noatime.*/..sb->s_ |
7900 | 6d 61 78 62 79 74 65 73 20 3d 20 30 78 46 46 46 46 46 46 46 46 55 3b 0a 09 73 62 2d 3e 73 5f 62 | maxbytes.=.0xFFFFFFFFU;..sb->s_b |
7920 | 6c 6f 63 6b 73 69 7a 65 20 3d 20 31 30 32 34 3b 09 2f 2a 20 45 68 2e 2e 2e 20 20 49 73 20 74 68 | locksize.=.1024;./*.Eh.....Is.th |
7940 | 69 73 20 63 6f 72 72 65 63 74 3f 20 2a 2f 0a 09 73 62 2d 3e 73 5f 62 6c 6f 63 6b 73 69 7a 65 5f | is.correct?.*/..sb->s_blocksize_ |
7960 | 62 69 74 73 20 3d 20 31 30 3b 0a 09 73 62 2d 3e 73 5f 6d 61 67 69 63 20 3d 20 4e 43 50 5f 53 55 | bits.=.10;..sb->s_magic.=.NCP_SU |
7980 | 50 45 52 5f 4d 41 47 49 43 3b 0a 09 73 62 2d 3e 73 5f 6f 70 20 3d 20 26 6e 63 70 5f 73 6f 70 73 | PER_MAGIC;..sb->s_op.=.&ncp_sops |
79a0 | 3b 0a 09 73 62 2d 3e 73 5f 64 5f 6f 70 20 3d 20 26 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 | ;..sb->s_d_op.=.&ncp_dentry_oper |
79c0 | 61 74 69 6f 6e 73 3b 0a 09 73 62 2d 3e 73 5f 62 64 69 20 3d 20 26 73 65 72 76 65 72 2d 3e 62 64 | ations;..sb->s_bdi.=.&server->bd |
79e0 | 69 3b 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 6d 65 6d 73 | i;...server.=.NCP_SBP(sb);..mems |
7a00 | 65 74 28 73 65 72 76 65 72 2c 20 30 2c 20 73 69 7a 65 6f 66 28 2a 73 65 72 76 65 72 29 29 3b 0a | et(server,.0,.sizeof(*server));. |
7a20 | 0a 09 65 72 72 6f 72 20 3d 20 62 64 69 5f 73 65 74 75 70 5f 61 6e 64 5f 72 65 67 69 73 74 65 72 | ..error.=.bdi_setup_and_register |
7a40 | 28 26 73 65 72 76 65 72 2d 3e 62 64 69 2c 20 22 6e 63 70 66 73 22 29 3b 0a 09 69 66 20 28 65 72 | (&server->bdi,."ncpfs");..if.(er |
7a60 | 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 66 70 75 74 3b 0a 0a 09 73 65 72 76 65 72 2d 3e | ror)...goto.out_fput;...server-> |
7a80 | 6e 63 70 5f 73 6f 63 6b 20 3d 20 73 6f 63 6b 3b 0a 09 0a 09 69 66 20 28 64 61 74 61 2e 69 6e 66 | ncp_sock.=.sock;....if.(data.inf |
7aa0 | 6f 5f 66 64 20 21 3d 20 2d 31 29 20 7b 0a 09 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 69 | o_fd.!=.-1).{...struct.socket.*i |
7ac0 | 6e 66 6f 5f 73 6f 63 6b 20 3d 20 73 6f 63 6b 66 64 5f 6c 6f 6f 6b 75 70 28 64 61 74 61 2e 69 6e | nfo_sock.=.sockfd_lookup(data.in |
7ae0 | 66 6f 5f 66 64 2c 20 26 65 72 72 6f 72 29 3b 0a 09 09 69 66 20 28 21 69 6e 66 6f 5f 73 6f 63 6b | fo_fd,.&error);...if.(!info_sock |
7b00 | 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 62 64 69 3b 0a 09 09 73 65 72 76 65 72 2d 3e 69 6e 66 | )....goto.out_bdi;...server->inf |
7b20 | 6f 5f 73 6f 63 6b 20 3d 20 69 6e 66 6f 5f 73 6f 63 6b 3b 0a 09 09 65 72 72 6f 72 20 3d 20 2d 45 | o_sock.=.info_sock;...error.=.-E |
7b40 | 42 41 44 46 44 3b 0a 09 09 69 66 20 28 69 6e 66 6f 5f 73 6f 63 6b 2d 3e 74 79 70 65 20 21 3d 20 | BADFD;...if.(info_sock->type.!=. |
7b60 | 53 4f 43 4b 5f 53 54 52 45 41 4d 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 66 70 75 74 32 3b 0a | SOCK_STREAM)....goto.out_fput2;. |
7b80 | 09 7d 0a 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 20 30 3b 09 2a 2f 0a 09 6d 75 74 | .}../*.server->lock.=.0;.*/..mut |
7ba0 | 65 78 5f 69 6e 69 74 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 09 73 65 72 76 65 72 | ex_init(&server->mutex);..server |
7bc0 | 2d 3e 70 61 63 6b 65 74 20 3d 20 4e 55 4c 4c 3b 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 62 75 66 66 | ->packet.=.NULL;./*.server->buff |
7be0 | 65 72 5f 73 69 7a 65 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f | er_size.=.0;.*/./*.server->conn_ |
7c00 | 73 74 61 74 75 73 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 64 | status.=.0;.*/./*.server->root_d |
7c20 | 65 6e 74 72 79 20 3d 20 4e 55 4c 4c 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 | entry.=.NULL;.*/./*.server->root |
7c40 | 5f 73 65 74 75 70 65 64 20 3d 20 30 3b 09 2a 2f 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 73 65 | _setuped.=.0;.*/..mutex_init(&se |
7c60 | 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 23 69 66 64 65 66 20 43 | rver->root_setup_lock);.#ifdef.C |
7c80 | 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 2f 2a 09 73 65 | ONFIG_NCPFS_PACKET_SIGNING./*.se |
7ca0 | 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 | rver->sign_wanted.=.0;.*/./*.ser |
7cc0 | 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 30 3b 09 2a 2f 0a 23 65 6e 64 69 66 0a | ver->sign_active.=.0;.*/.#endif. |
7ce0 | 09 69 6e 69 74 5f 72 77 73 65 6d 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 | .init_rwsem(&server->auth_rwsem) |
7d00 | 3b 0a 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 4e 43 50 5f | ;..server->auth.auth_type.=.NCP_ |
7d20 | 41 55 54 48 5f 4e 4f 4e 45 3b 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 | AUTH_NONE;./*.server->auth.objec |
7d40 | 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 61 75 | t_name_len.=.0;.*/./*.server->au |
7d60 | 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 09 2a 2f 0a 2f 2a 09 73 65 72 | th.object_name.=.NULL;.*/./*.ser |
7d80 | 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 74 79 70 65 20 3d 20 30 3b 09 09 2a 2f 0a 2f | ver->auth.object_type.=.0;..*/./ |
7da0 | 2a 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 30 3b 09 09 09 2a 2f 0a 2f 2a 09 | *.server->priv.len.=.0;...*/./*. |
7dc0 | 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 09 09 2a 2f 0a 0a 09 | server->priv.data.=.NULL;..*/... |
7de0 | 73 65 72 76 65 72 2d 3e 6d 20 3d 20 64 61 74 61 3b 0a 09 2f 2a 20 41 6c 74 68 6f 75 67 68 20 61 | server->m.=.data;../*.Although.a |
7e00 | 6e 79 74 68 69 6e 67 20 70 72 6f 64 75 63 69 6e 67 20 74 68 69 73 20 69 73 20 62 75 67 67 79 2c | nything.producing.this.is.buggy, |
7e20 | 20 69 74 20 68 61 70 70 65 6e 73 0a 09 20 20 20 6e 6f 77 20 62 65 63 61 75 73 65 20 6f 66 20 50 | .it.happens.....now.because.of.P |
7e40 | 41 54 48 5f 4d 41 58 20 63 68 61 6e 67 65 73 2e 2e 20 2a 2f 0a 09 69 66 20 28 73 65 72 76 65 72 | ATH_MAX.changes...*/..if.(server |
7e60 | 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 3c 20 31 29 20 7b 0a 09 09 73 65 72 76 65 72 2d 3e 6d 2e | ->m.time_out.<.1).{...server->m. |
7e80 | 74 69 6d 65 5f 6f 75 74 20 3d 20 31 30 3b 0a 09 09 70 72 5f 69 6e 66 6f 28 22 59 6f 75 20 6e 65 | time_out.=.10;...pr_info("You.ne |
7ea0 | 65 64 20 74 6f 20 72 65 63 6f 6d 70 69 6c 65 20 79 6f 75 72 20 6e 63 70 66 73 20 75 74 69 6c 73 | ed.to.recompile.your.ncpfs.utils |
7ec0 | 2e 2e 5c 6e 22 29 3b 0a 09 7d 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 3d | ..\n");..}..server->m.time_out.= |
7ee0 | 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 2a 20 48 5a 20 2f 20 31 30 30 3b 0a | .server->m.time_out.*.HZ./.100;. |
7f00 | 09 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 28 73 65 72 76 65 72 2d 3e | .server->m.file_mode.=.(server-> |
7f20 | 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 52 57 58 55 47 4f 29 20 7c 20 53 5f 49 46 52 | m.file_mode.&.S_IRWXUGO).|.S_IFR |
7f40 | 45 47 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 3d 20 28 73 65 72 76 65 | EG;..server->m.dir_mode.=.(serve |
7f60 | 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 26 20 53 5f 49 52 57 58 55 47 4f 29 20 7c 20 53 5f 49 | r->m.dir_mode.&.S_IRWXUGO).|.S_I |
7f80 | 46 44 49 52 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 | FDIR;..#ifdef.CONFIG_NCPFS_NLS.. |
7fa0 | 2f 2a 20 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 4e 4c 53 20 63 68 61 72 73 65 74 73 | /*.load.the.default.NLS.charsets |
7fc0 | 20 2a 2f 0a 09 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 20 3d 20 6c 6f 61 64 5f 6e 6c 73 5f | .*/..server->nls_vol.=.load_nls_ |
7fe0 | 64 65 66 61 75 6c 74 28 29 3b 0a 09 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 20 3d 20 6c 6f 61 | default();..server->nls_io.=.loa |
8000 | 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 | d_nls_default();.#endif./*.CONFI |
8020 | 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 73 65 72 | G_NCPFS_NLS.*/...atomic_set(&ser |
8040 | 76 65 72 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 2c 20 30 29 3b 09 2f 2a 20 6e 6f 20 63 61 63 68 69 | ver->dentry_ttl,.0);./*.no.cachi |
8060 | 6e 67 20 2a 2f 0a 0a 09 49 4e 49 54 5f 4c 49 53 54 5f 48 45 41 44 28 26 73 65 72 76 65 72 2d 3e | ng.*/...INIT_LIST_HEAD(&server-> |
8080 | 74 78 2e 72 65 71 75 65 73 74 73 29 3b 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 73 65 72 76 65 | tx.requests);..mutex_init(&serve |
80a0 | 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 73 65 72 76 65 72 2d 3e 74 78 2e | r->rcv.creq_mutex);..server->tx. |
80c0 | 63 72 65 71 09 09 3d 20 4e 55 4c 4c 3b 0a 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 09 | creq..=.NULL;..server->rcv.creq. |
80e0 | 3d 20 4e 55 4c 4c 3b 0a 0a 09 69 6e 69 74 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 | =.NULL;...init_timer(&server->ti |
8100 | 6d 65 6f 75 74 5f 74 6d 29 3b 0a 23 75 6e 64 65 66 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a | meout_tm);.#undef.NCP_PACKET_SIZ |
8120 | 45 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 20 31 33 31 30 37 32 | E.#define.NCP_PACKET_SIZE.131072 |
8140 | 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 73 65 72 76 65 72 2d 3e 70 61 63 6b | ..error.=.-ENOMEM;..server->pack |
8160 | 65 74 5f 73 69 7a 65 20 3d 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 3b 0a 09 73 65 72 76 | et_size.=.NCP_PACKET_SIZE;..serv |
8180 | 65 72 2d 3e 70 61 63 6b 65 74 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f | er->packet.=.vmalloc(NCP_PACKET_ |
81a0 | 53 49 5a 45 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 20 3d 3d 20 4e 55 | SIZE);..if.(server->packet.==.NU |
81c0 | 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 6e 6c 73 3b 0a 09 73 65 72 76 65 72 2d 3e 74 78 62 | LL)...goto.out_nls;..server->txb |
81e0 | 75 66 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 29 3b 0a 09 | uf.=.vmalloc(NCP_PACKET_SIZE);.. |
8200 | 69 66 20 28 73 65 72 76 65 72 2d 3e 74 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 | if.(server->txbuf.==.NULL)...got |
8220 | 6f 20 6f 75 74 5f 70 61 63 6b 65 74 3b 0a 09 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 3d 20 76 | o.out_packet;..server->rxbuf.=.v |
8240 | 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 29 3b 0a 09 69 66 20 28 73 65 | malloc(NCP_PACKET_SIZE);..if.(se |
8260 | 72 76 65 72 2d 3e 72 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f | rver->rxbuf.==.NULL)...goto.out_ |
8280 | 74 78 62 75 66 3b 0a 0a 09 6c 6f 63 6b 5f 73 6f 63 6b 28 73 6f 63 6b 2d 3e 73 6b 29 3b 0a 09 73 | txbuf;...lock_sock(sock->sk);..s |
82a0 | 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b | erver->data_ready.=.sock->sk->sk |
82c0 | 5f 64 61 74 61 5f 72 65 61 64 79 3b 0a 09 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 | _data_ready;..server->write_spac |
82e0 | 65 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 77 72 69 74 65 5f 73 70 61 63 65 3b 0a 09 73 | e.=.sock->sk->sk_write_space;..s |
8300 | 65 72 76 65 72 2d 3e 65 72 72 6f 72 5f 72 65 70 6f 72 74 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e | erver->error_report.=.sock->sk-> |
8320 | 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 75 | sk_error_report;..sock->sk->sk_u |
8340 | 73 65 72 5f 64 61 74 61 09 3d 20 73 65 72 76 65 72 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b | ser_data.=.server;..sock->sk->sk |
8360 | 5f 64 61 74 61 5f 72 65 61 64 79 09 20 20 3d 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 | _data_ready...=.ncp_tcp_data_rea |
8380 | 64 79 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 20 3d | dy;..sock->sk->sk_error_report.= |
83a0 | 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 69 66 20 28 73 6f 63 6b | .ncp_tcp_error_report;..if.(sock |
83c0 | 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 20 7b 0a 09 09 73 65 72 76 65 | ->type.==.SOCK_STREAM).{...serve |
83e0 | 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 | r->rcv.ptr.=.(unsigned.char*)&se |
8400 | 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e | rver->rcv.buf;...server->rcv.len |
8420 | 20 3d 20 31 30 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 3b 0a | .=.10;...server->rcv.state.=.0;. |
8440 | 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 2c 20 6e 63 70 | ..INIT_WORK(&server->rcv.tq,.ncp |
8460 | 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 29 3b 0a 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 | _tcp_rcv_proc);...INIT_WORK(&ser |
8480 | 76 65 72 2d 3e 74 78 2e 74 71 2c 20 6e 63 70 5f 74 63 70 5f 74 78 5f 70 72 6f 63 29 3b 0a 09 09 | ver->tx.tq,.ncp_tcp_tx_proc);... |
84a0 | 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 77 72 69 74 65 5f 73 70 61 63 65 20 3d 20 6e 63 70 5f 74 | sock->sk->sk_write_space.=.ncp_t |
84c0 | 63 70 5f 77 72 69 74 65 5f 73 70 61 63 65 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 49 4e 49 54 | cp_write_space;..}.else.{...INIT |
84e0 | 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 2c 20 6e 63 70 64 67 72 61 6d 5f | _WORK(&server->rcv.tq,.ncpdgram_ |
8500 | 72 63 76 5f 70 72 6f 63 29 3b 0a 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e | rcv_proc);...INIT_WORK(&server-> |
8520 | 74 69 6d 65 6f 75 74 5f 74 71 2c 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f | timeout_tq,.ncpdgram_timeout_pro |
8540 | 63 29 3b 0a 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2e 64 61 74 61 20 3d 20 | c);...server->timeout_tm.data.=. |
8560 | 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 73 65 72 76 65 72 3b 0a 09 09 73 65 72 76 65 72 2d | (unsigned.long)server;...server- |
8580 | 3e 74 69 6d 65 6f 75 74 5f 74 6d 2e 66 75 6e 63 74 69 6f 6e 20 3d 20 6e 63 70 64 67 72 61 6d 5f | >timeout_tm.function.=.ncpdgram_ |
85a0 | 74 69 6d 65 6f 75 74 5f 63 61 6c 6c 3b 0a 09 7d 0a 09 72 65 6c 65 61 73 65 5f 73 6f 63 6b 28 73 | timeout_call;..}..release_sock(s |
85c0 | 6f 63 6b 2d 3e 73 6b 29 3b 0a 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 | ock->sk);...ncp_lock_server(serv |
85e0 | 65 72 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 | er);..error.=.ncp_connect(server |
8600 | 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 | );..ncp_unlock_server(server);.. |
8620 | 69 66 20 28 65 72 72 6f 72 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 72 78 62 75 66 3b | if.(error.<.0)...goto.out_rxbuf; |
8640 | 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 4e 43 50 5f 53 42 50 28 73 62 29 20 3d 20 25 70 5c 6e | ..ncp_dbg(1,."NCP_SBP(sb).=.%p\n |
8660 | 22 2c 20 4e 43 50 5f 53 42 50 28 73 62 29 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4d 53 47 | ",.NCP_SBP(sb));...error.=.-EMSG |
8680 | 53 49 5a 45 3b 09 2f 2a 20 2d 45 52 45 4d 4f 54 45 53 49 44 45 49 4e 43 4f 4d 50 41 54 49 42 4c | SIZE;./*.-EREMOTESIDEINCOMPATIBL |
86a0 | 45 20 2a 2f 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f | E.*/.#ifdef.CONFIG_NCPFS_PACKET_ |
86c0 | 53 49 47 4e 49 4e 47 0a 09 69 66 20 28 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 73 69 7a 65 5f | SIGNING..if.(ncp_negotiate_size_ |
86e0 | 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 65 72 76 65 72 2c 20 64 65 66 61 75 6c 74 5f 62 75 66 73 | and_options(server,.default_bufs |
8700 | 69 7a 65 2c 0a 09 09 4e 43 50 5f 44 45 46 41 55 4c 54 5f 4f 50 54 49 4f 4e 53 2c 20 26 28 73 65 | ize,...NCP_DEFAULT_OPTIONS,.&(se |
8720 | 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 29 2c 20 26 6f 70 74 69 6f 6e 73 29 20 3d 3d | rver->buffer_size),.&options).== |
8740 | 20 30 29 0a 09 7b 0a 09 09 69 66 20 28 6f 70 74 69 6f 6e 73 20 21 3d 20 4e 43 50 5f 44 45 46 41 | .0)..{...if.(options.!=.NCP_DEFA |
8760 | 55 4c 54 5f 4f 50 54 49 4f 4e 53 29 0a 09 09 7b 0a 09 09 09 69 66 20 28 6e 63 70 5f 6e 65 67 6f | ULT_OPTIONS)...{....if.(ncp_nego |
8780 | 74 69 61 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 65 72 76 65 72 2c 20 0a | tiate_size_and_options(server,.. |
87a0 | 09 09 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 2c 0a 09 09 09 09 6f 70 74 69 6f 6e 73 | ....default_bufsize,.....options |
87c0 | 20 26 20 32 2c 20 0a 09 09 09 09 26 28 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 | .&.2,......&(server->buffer_size |
87e0 | 29 2c 20 26 6f 70 74 69 6f 6e 73 29 20 21 3d 20 30 29 0a 09 09 09 09 0a 09 09 09 7b 0a 09 09 09 | ),.&options).!=.0).........{.... |
8800 | 09 67 6f 74 6f 20 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 | .goto.out_disconnect;....}...}.. |
8820 | 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 69 66 20 28 | .ncp_lock_server(server);...if.( |
8840 | 6f 70 74 69 6f 6e 73 20 26 20 32 29 0a 09 09 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e | options.&.2)....server->sign_wan |
8860 | 74 65 64 20 3d 20 31 3b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 | ted.=.1;...ncp_unlock_server(ser |
8880 | 76 65 72 29 3b 0a 09 7d 0a 09 65 6c 73 65 20 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 | ver);..}..else..#endif./*.CONFIG |
88a0 | 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 09 69 66 20 28 6e 63 | _NCPFS_PACKET_SIGNING.*/..if.(nc |
88c0 | 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 66 66 65 72 73 69 7a 65 28 73 65 72 76 65 72 2c 20 64 | p_negotiate_buffersize(server,.d |
88e0 | 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 2c 0a 20 20 09 09 09 09 20 20 20 20 20 26 28 73 65 72 | efault_bufsize,............&(ser |
8900 | 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 | ver->buffer_size)).!=.0)...goto. |
8920 | 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 62 75 66 | out_disconnect;..ncp_dbg(1,."buf |
8940 | 73 69 7a 65 20 3d 20 25 64 5c 6e 22 2c 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a | size.=.%d\n",.server->buffer_siz |
8960 | 65 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 66 69 6e 66 6f 2c 20 30 2c 20 73 69 7a 65 6f 66 28 66 | e);...memset(&finfo,.0,.sizeof(f |
8980 | 69 6e 66 6f 29 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 61 74 74 72 69 62 75 74 65 73 09 3d 20 61 44 | info));..finfo.i.attributes.=.aD |
89a0 | 49 52 3b 0a 09 66 69 6e 66 6f 2e 69 2e 64 61 74 61 53 74 72 65 61 6d 53 69 7a 65 09 3d 20 30 3b | IR;..finfo.i.dataStreamSize.=.0; |
89c0 | 09 2f 2a 20 69 67 6e 6f 72 65 64 20 2a 2f 0a 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e 75 | ./*.ignored.*/..finfo.i.dirEntNu |
89e0 | 6d 09 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 2e 44 6f 73 44 69 72 4e 75 6d 09 3d 20 30 3b 0a 23 | m.=.0;..finfo.i.DosDirNum.=.0;.# |
8a00 | 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f 53 0a 09 66 69 6e | ifdef.CONFIG_NCPFS_SMALLDOS..fin |
8a20 | 66 6f 2e 69 2e 4e 53 43 72 65 61 74 6f 72 09 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a 23 65 6e 64 | fo.i.NSCreator.=.NW_NS_DOS;.#end |
8a40 | 69 66 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 09 09 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f | if..finfo.volume..=.NCP_NUMBER_O |
8a60 | 46 5f 56 4f 4c 55 4d 45 53 3b 0a 09 2f 2a 20 73 65 74 20 64 61 74 65 73 20 6f 66 20 6d 6f 75 6e | F_VOLUMES;../*.set.dates.of.moun |
8a80 | 74 70 6f 69 6e 74 20 74 6f 20 4a 61 6e 20 31 2c 20 31 39 38 36 3b 20 30 30 3a 30 30 20 2a 2f 0a | tpoint.to.Jan.1,.1986;.00:00.*/. |
8aa0 | 09 66 69 6e 66 6f 2e 69 2e 63 72 65 61 74 69 6f 6e 54 69 6d 65 09 3d 20 66 69 6e 66 6f 2e 69 2e | .finfo.i.creationTime.=.finfo.i. |
8ac0 | 6d 6f 64 69 66 79 54 69 6d 65 0a 09 09 09 09 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 | modifyTime.....=.cpu_to_le16(0x0 |
8ae0 | 30 30 30 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 63 72 65 61 74 69 6f 6e 44 61 74 65 09 3d 20 66 69 | 000);..finfo.i.creationDate.=.fi |
8b00 | 6e 66 6f 2e 69 2e 6d 6f 64 69 66 79 44 61 74 65 0a 09 09 09 09 3d 20 66 69 6e 66 6f 2e 69 2e 6c | nfo.i.modifyDate.....=.finfo.i.l |
8b20 | 61 73 74 41 63 63 65 73 73 44 61 74 65 0a 09 09 09 09 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 | astAccessDate.....=.cpu_to_le16( |
8b40 | 30 78 30 43 32 31 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 6e 61 6d 65 4c 65 6e 09 09 3d 20 30 3b 0a | 0x0C21);..finfo.i.nameLen..=.0;. |
8b60 | 09 66 69 6e 66 6f 2e 69 2e 65 6e 74 72 79 4e 61 6d 65 5b 30 5d 09 3d 20 27 5c 30 27 3b 0a 0a 09 | .finfo.i.entryName[0].=.'\0';... |
8b80 | 66 69 6e 66 6f 2e 6f 70 65 6e 65 64 09 09 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 6e 6f 09 09 3d | finfo.opened..=.0;..finfo.ino..= |
8ba0 | 20 32 3b 09 2f 2a 20 74 72 61 64 69 74 69 6f 6e 20 2a 2f 0a 0a 09 73 65 72 76 65 72 2d 3e 6e 61 | .2;./*.tradition.*/...server->na |
8bc0 | 6d 65 5f 73 70 61 63 65 5b 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5d 20 3d 20 4e 57 5f 4e 53 5f 44 | me_space[finfo.volume].=.NW_NS_D |
8be0 | 4f 53 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 20 20 20 20 20 20 20 20 72 | OS;...error.=.-ENOMEM;.........r |
8c00 | 6f 6f 74 5f 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 73 62 2c 20 26 66 69 6e 66 6f 29 | oot_inode.=.ncp_iget(sb,.&finfo) |
8c20 | 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 72 6f 6f 74 5f 69 6e 6f 64 65 29 0a 09 09 67 6f 74 | ;.........if.(!root_inode)...got |
8c40 | 6f 20 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 | o.out_disconnect;..ncp_dbg(1,."r |
8c60 | 6f 6f 74 20 76 6f 6c 3d 25 64 5c 6e 22 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 72 6f 6f 74 5f 69 6e | oot.vol=%d\n",.NCP_FINFO(root_in |
8c80 | 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 73 62 2d 3e 73 5f 72 6f 6f 74 20 3d 20 | ode)->volNumber);..sb->s_root.=. |
8ca0 | 64 5f 6d 61 6b 65 5f 72 6f 6f 74 28 72 6f 6f 74 5f 69 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 | d_make_root(root_inode);........ |
8cc0 | 20 69 66 20 28 21 73 62 2d 3e 73 5f 72 6f 6f 74 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 64 69 73 | .if.(!sb->s_root)...goto.out_dis |
8ce0 | 63 6f 6e 6e 65 63 74 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 6f 75 74 5f 64 69 73 63 6f 6e 6e | connect;..return.0;..out_disconn |
8d00 | 65 63 74 3a 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 | ect:..ncp_lock_server(server);.. |
8d20 | 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 75 6e 6c | ncp_disconnect(server);..ncp_unl |
8d40 | 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 6f 75 74 5f 72 78 62 75 66 3a 0a 09 | ock_server(server);.out_rxbuf:.. |
8d60 | 6e 63 70 5f 73 74 6f 70 5f 74 61 73 6b 73 28 73 65 72 76 65 72 29 3b 0a 09 76 66 72 65 65 28 73 | ncp_stop_tasks(server);..vfree(s |
8d80 | 65 72 76 65 72 2d 3e 72 78 62 75 66 29 3b 0a 6f 75 74 5f 74 78 62 75 66 3a 0a 09 76 66 72 65 65 | erver->rxbuf);.out_txbuf:..vfree |
8da0 | 28 73 65 72 76 65 72 2d 3e 74 78 62 75 66 29 3b 0a 6f 75 74 5f 70 61 63 6b 65 74 3a 0a 09 76 66 | (server->txbuf);.out_packet:..vf |
8dc0 | 72 65 65 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 6f 75 74 5f 6e 6c 73 3a 0a 23 69 | ree(server->packet);.out_nls:.#i |
8de0 | 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 75 6e 6c 6f 61 64 5f 6e 6c | fdef.CONFIG_NCPFS_NLS..unload_nl |
8e00 | 73 28 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 73 | s(server->nls_io);..unload_nls(s |
8e20 | 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 29 3b 0a 23 65 6e 64 69 66 0a 09 6d 75 74 65 78 5f 64 | erver->nls_vol);.#endif..mutex_d |
8e40 | 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b | estroy(&server->rcv.creq_mutex); |
8e60 | 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 | ..mutex_destroy(&server->root_se |
8e80 | 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 | tup_lock);..mutex_destroy(&serve |
8ea0 | 72 2d 3e 6d 75 74 65 78 29 3b 0a 6f 75 74 5f 66 70 75 74 32 3a 0a 09 69 66 20 28 73 65 72 76 65 | r->mutex);.out_fput2:..if.(serve |
8ec0 | 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 0a 09 09 73 6f 63 6b 66 64 5f 70 75 74 28 73 65 72 76 65 | r->info_sock)...sockfd_put(serve |
8ee0 | 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 3b 0a 6f 75 74 5f 62 64 69 3a 0a 09 62 64 69 5f 64 65 73 | r->info_sock);.out_bdi:..bdi_des |
8f00 | 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 62 64 69 29 3b 0a 6f 75 74 5f 66 70 75 74 3a 0a 09 73 | troy(&server->bdi);.out_fput:..s |
8f20 | 6f 63 6b 66 64 5f 70 75 74 28 73 6f 63 6b 29 3b 0a 6f 75 74 3a 0a 09 70 75 74 5f 70 69 64 28 64 | ockfd_put(sock);.out:..put_pid(d |
8f40 | 61 74 61 2e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 20 3d 20 | ata.wdog_pid);..sb->s_fs_info.=. |
8f60 | 4e 55 4c 4c 3b 0a 09 6b 66 72 65 65 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 | NULL;..kfree(server);..return.er |
8f80 | 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 6c 61 79 65 64 5f 66 72 65 65 | ror;.}..static.void.delayed_free |
8fa0 | 28 73 74 72 75 63 74 20 72 63 75 5f 68 65 61 64 20 2a 70 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e | (struct.rcu_head.*p).{..struct.n |
8fc0 | 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 | cp_server.*server.=.container_of |
8fe0 | 28 70 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 72 63 75 29 3b 0a 23 69 66 | (p,.struct.ncp_server,.rcu);.#if |
9000 | 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 2f 2a 20 75 6e 6c 6f 61 64 20 | def.CONFIG_NCPFS_NLS../*.unload. |
9020 | 74 68 65 20 4e 4c 53 20 63 68 61 72 73 65 74 73 20 2a 2f 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 | the.NLS.charsets.*/..unload_nls( |
9040 | 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 73 65 | server->nls_vol);..unload_nls(se |
9060 | 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 29 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f | rver->nls_io);.#endif./*.CONFIG_ |
9080 | 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 09 6b 66 72 65 65 28 73 65 72 76 65 72 29 3b 0a 7d 0a 0a | NCPFS_NLS.*/..kfree(server);.}.. |
90a0 | 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 70 75 74 5f 73 75 70 65 72 28 73 74 72 75 63 74 | static.void.ncp_put_super(struct |
90c0 | 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f | .super_block.*sb).{..struct.ncp_ |
90e0 | 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 0a 09 | server.*server.=.NCP_SBP(sb);... |
9100 | 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 64 69 | ncp_lock_server(server);..ncp_di |
9120 | 73 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 | sconnect(server);..ncp_unlock_se |
9140 | 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 0a 09 6e 63 70 5f 73 74 6f 70 5f 74 61 73 6b 73 28 73 | rver(server);...ncp_stop_tasks(s |
9160 | 65 72 76 65 72 29 3b 0a 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d | erver);...mutex_destroy(&server- |
9180 | 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 | >rcv.creq_mutex);..mutex_destroy |
91a0 | 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 6d 75 74 | (&server->root_setup_lock);..mut |
91c0 | 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 0a 09 69 66 | ex_destroy(&server->mutex);...if |
91e0 | 20 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 0a 09 09 73 6f 63 6b 66 64 5f 70 75 | .(server->info_sock)...sockfd_pu |
9200 | 74 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 3b 0a 09 73 6f 63 6b 66 64 5f 70 75 | t(server->info_sock);..sockfd_pu |
9220 | 74 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 29 3b 0a 09 6b 69 6c 6c 5f 70 69 64 28 73 | t(server->ncp_sock);..kill_pid(s |
9240 | 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 2c 20 31 29 3b 0a | erver->m.wdog_pid,.SIGTERM,.1);. |
9260 | 09 70 75 74 5f 70 69 64 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 29 3b 0a 0a 09 | .put_pid(server->m.wdog_pid);... |
9280 | 62 64 69 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 62 64 69 29 3b 0a 09 6b 66 72 65 | bdi_destroy(&server->bdi);..kfre |
92a0 | 65 28 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 29 3b 0a 09 6b 66 72 65 65 28 73 65 72 | e(server->priv.data);..kfree(ser |
92c0 | 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 29 3b 0a 09 76 66 72 65 65 28 73 | ver->auth.object_name);..vfree(s |
92e0 | 65 72 76 65 72 2d 3e 72 78 62 75 66 29 3b 0a 09 76 66 72 65 65 28 73 65 72 76 65 72 2d 3e 74 78 | erver->rxbuf);..vfree(server->tx |
9300 | 62 75 66 29 3b 0a 09 76 66 72 65 65 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 63 | buf);..vfree(server->packet);..c |
9320 | 61 6c 6c 5f 72 63 75 28 26 73 65 72 76 65 72 2d 3e 72 63 75 2c 20 64 65 6c 61 79 65 64 5f 66 72 | all_rcu(&server->rcu,.delayed_fr |
9340 | 65 65 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 73 74 61 74 66 73 28 73 74 | ee);.}..static.int.ncp_statfs(st |
9360 | 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 6b 73 74 61 | ruct.dentry.*dentry,.struct.ksta |
9380 | 74 66 73 20 2a 62 75 66 29 0a 7b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 3b 0a 09 | tfs.*buf).{..struct.dentry*.d;.. |
93a0 | 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f | struct.inode*.i;..struct.ncp_ino |
93c0 | 64 65 5f 69 6e 66 6f 2a 20 6e 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a | de_info*.ni;..struct.ncp_server* |
93e0 | 20 73 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 20 76 69 3b 0a | .s;..struct.ncp_volume_info.vi;. |
9400 | 09 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 20 3d 20 64 65 6e 74 72 79 | .struct.super_block.*sb.=.dentry |
9420 | 2d 3e 64 5f 73 62 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 5f 5f 75 38 20 64 68 3b 0a 09 0a 09 64 | ->d_sb;..int.err;..__u8.dh;....d |
9440 | 20 3d 20 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 69 66 20 28 21 64 29 20 7b 0a 09 09 67 6f 74 6f | .=.sb->s_root;..if.(!d).{...goto |
9460 | 20 64 66 6c 74 3b 0a 09 7d 0a 09 69 20 3d 20 64 5f 69 6e 6f 64 65 28 64 29 3b 0a 09 69 66 20 28 | .dflt;..}..i.=.d_inode(d);..if.( |
9480 | 21 69 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 6e 69 20 3d 20 4e 43 50 5f | !i).{...goto.dflt;..}..ni.=.NCP_ |
94a0 | 46 49 4e 46 4f 28 69 29 3b 0a 09 69 66 20 28 21 6e 69 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c | FINFO(i);..if.(!ni).{...goto.dfl |
94c0 | 74 3b 0a 09 7d 0a 09 73 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 69 66 20 28 21 73 29 | t;..}..s.=.NCP_SBP(sb);..if.(!s) |
94e0 | 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 69 66 20 28 21 73 2d 3e 6d 2e 6d 6f | .{...goto.dflt;..}..if.(!s->m.mo |
9500 | 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a | unted_vol[0]).{...goto.dflt;..}. |
9520 | 0a 09 65 72 72 20 3d 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 2c 20 6e | ..err.=.ncp_dirhandle_alloc(s,.n |
9540 | 69 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 6e 69 2d 3e 44 6f 73 44 69 72 4e 75 6d 2c 20 26 64 68 | i->volNumber,.ni->DosDirNum,.&dh |
9560 | 29 3b 0a 09 69 66 20 28 65 72 72 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 | );..if.(err).{...goto.dflt;..}.. |
9580 | 65 72 72 20 3d 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 74 6f 72 79 5f 69 6e 66 6f 28 73 2c 20 | err.=.ncp_get_directory_info(s,. |
95a0 | 64 68 2c 20 26 76 69 29 3b 0a 09 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 66 72 65 65 28 73 2c | dh,.&vi);..ncp_dirhandle_free(s, |
95c0 | 20 64 68 29 3b 0a 09 69 66 20 28 65 72 72 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 | .dh);..if.(err).{...goto.dflt;.. |
95e0 | 7d 0a 09 62 75 66 2d 3e 66 5f 74 79 70 65 20 3d 20 4e 43 50 5f 53 55 50 45 52 5f 4d 41 47 49 43 | }..buf->f_type.=.NCP_SUPER_MAGIC |
9600 | 3b 0a 09 62 75 66 2d 3e 66 5f 62 73 69 7a 65 20 3d 20 76 69 2e 73 65 63 74 6f 72 73 5f 70 65 72 | ;..buf->f_bsize.=.vi.sectors_per |
9620 | 5f 62 6c 6f 63 6b 20 2a 20 35 31 32 3b 0a 09 62 75 66 2d 3e 66 5f 62 6c 6f 63 6b 73 20 3d 20 76 | _block.*.512;..buf->f_blocks.=.v |
9640 | 69 2e 74 6f 74 61 6c 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 62 66 72 65 65 20 3d 20 | i.total_blocks;..buf->f_bfree.=. |
9660 | 76 69 2e 66 72 65 65 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 62 61 76 61 69 6c 20 3d | vi.free_blocks;..buf->f_bavail.= |
9680 | 20 76 69 2e 66 72 65 65 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 66 69 6c 65 73 20 3d | .vi.free_blocks;..buf->f_files.= |
96a0 | 20 76 69 2e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 3b 0a 09 62 75 66 2d 3e 66 5f 66 | .vi.total_dir_entries;..buf->f_f |
96c0 | 66 72 65 65 20 3d 20 76 69 2e 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 3b | free.=.vi.available_dir_entries; |
96e0 | 0a 09 62 75 66 2d 3e 66 5f 6e 61 6d 65 6c 65 6e 20 3d 20 31 32 3b 0a 09 72 65 74 75 72 6e 20 30 | ..buf->f_namelen.=.12;..return.0 |
9700 | 3b 0a 0a 09 2f 2a 20 57 65 20 63 61 6e 6e 6f 74 20 73 61 79 20 68 6f 77 20 6d 75 63 68 20 64 69 | ;.../*.We.cannot.say.how.much.di |
9720 | 73 6b 20 73 70 61 63 65 20 69 73 20 6c 65 66 74 20 6f 6e 20 61 20 6d 6f 75 6e 74 65 64 0a 09 20 | sk.space.is.left.on.a.mounted... |
9740 | 20 20 4e 65 74 57 61 72 65 20 53 65 72 76 65 72 2c 20 62 65 63 61 75 73 65 20 66 72 65 65 20 73 | ..NetWare.Server,.because.free.s |
9760 | 70 61 63 65 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 6f 76 65 72 0a 09 20 20 20 76 6f 6c | pace.is.distributed.over.....vol |
9780 | 75 6d 65 73 2c 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 6d 69 67 68 74 | umes,.and.the.current.user.might |
97a0 | 20 68 61 76 65 20 64 69 73 6b 20 71 75 6f 74 61 73 2e 20 53 6f 0a 09 20 20 20 66 72 65 65 20 73 | .have.disk.quotas..So.....free.s |
97c0 | 70 61 63 65 20 69 73 20 6e 6f 74 20 74 68 61 74 20 73 69 6d 70 6c 65 20 74 6f 20 64 65 74 65 72 | pace.is.not.that.simple.to.deter |
97e0 | 6d 69 6e 65 2e 20 4f 75 72 20 64 65 63 69 73 69 6f 6e 0a 09 20 20 20 68 65 72 65 20 69 73 20 74 | mine..Our.decision.....here.is.t |
9800 | 6f 20 65 72 72 20 63 6f 6e 73 65 72 76 61 74 69 76 65 6c 79 2e 20 2a 2f 0a 0a 64 66 6c 74 3a 3b | o.err.conservatively..*/..dflt:; |
9820 | 0a 09 62 75 66 2d 3e 66 5f 74 79 70 65 20 3d 20 4e 43 50 5f 53 55 50 45 52 5f 4d 41 47 49 43 3b | ..buf->f_type.=.NCP_SUPER_MAGIC; |
9840 | 0a 09 62 75 66 2d 3e 66 5f 62 73 69 7a 65 20 3d 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 3b | ..buf->f_bsize.=.NCP_BLOCK_SIZE; |
9860 | 0a 09 62 75 66 2d 3e 66 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 62 75 66 2d 3e 66 5f 62 66 72 | ..buf->f_blocks.=.0;..buf->f_bfr |
9880 | 65 65 20 3d 20 30 3b 0a 09 62 75 66 2d 3e 66 5f 62 61 76 61 69 6c 20 3d 20 30 3b 0a 09 62 75 66 | ee.=.0;..buf->f_bavail.=.0;..buf |
98a0 | 2d 3e 66 5f 6e 61 6d 65 6c 65 6e 20 3d 20 31 32 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a | ->f_namelen.=.12;..return.0;.}.. |
98c0 | 69 6e 74 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 28 73 74 72 75 63 74 20 64 65 6e | int.ncp_notify_change(struct.den |
98e0 | 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 69 61 74 74 72 20 2a 61 74 74 72 29 | try.*dentry,.struct.iattr.*attr) |
9900 | 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 | .{..struct.inode.*inode.=.d_inod |
9920 | 65 28 64 65 6e 74 72 79 29 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 5f 5f 6c | e(dentry);..int.result.=.0;..__l |
9940 | 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 | e32.info_mask;..struct.nw_modify |
9960 | 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 | _dos_info.info;..struct.ncp_serv |
9980 | 65 72 20 2a 73 65 72 76 65 72 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 0a 09 73 | er.*server;...result.=.-EIO;...s |
99a0 | 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 69 66 20 28 | erver.=.NCP_SERVER(inode);..if.( |
99c0 | 21 73 65 72 76 65 72 29 09 2f 2a 20 48 6f 77 20 74 68 69 73 20 63 6f 75 6c 64 20 68 61 70 70 65 | !server)./*.How.this.could.happe |
99e0 | 6e 3f 20 2a 2f 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 50 | n?.*/...goto.out;...result.=.-EP |
9a00 | 45 52 4d 3b 0a 09 69 66 20 28 49 53 5f 44 45 41 44 44 49 52 28 64 5f 69 6e 6f 64 65 28 64 65 6e | ERM;..if.(IS_DEADDIR(d_inode(den |
9a20 | 74 72 79 29 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 2f 2a 20 61 67 65 69 6e 67 20 74 | try)))...goto.out;.../*.ageing.t |
9a40 | 68 65 20 64 65 6e 74 72 79 20 74 6f 20 66 6f 72 63 65 20 76 61 6c 69 64 61 74 69 6f 6e 20 2a 2f | he.dentry.to.force.validation.*/ |
9a60 | 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 | ..ncp_age_dentry(server,.dentry) |
9a80 | 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 73 65 74 61 74 74 72 5f 70 72 65 70 61 72 65 28 64 65 6e | ;...result.=.setattr_prepare(den |
9aa0 | 74 72 79 2c 20 61 74 74 72 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 | try,.attr);..if.(result.<.0)...g |
9ac0 | 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 50 45 52 4d 3b 0a 09 69 66 20 | oto.out;...result.=.-EPERM;..if. |
9ae0 | 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 55 49 44 29 20 26 26 20 | ((attr->ia_valid.&.ATTR_UID).&&. |
9b00 | 21 75 69 64 5f 65 71 28 61 74 74 72 2d 3e 69 61 5f 75 69 64 2c 20 73 65 72 76 65 72 2d 3e 6d 2e | !uid_eq(attr->ia_uid,.server->m. |
9b20 | 75 69 64 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 | uid))...goto.out;...if.((attr->i |
9b40 | 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 47 49 44 29 20 26 26 20 21 67 69 64 5f 65 71 28 61 | a_valid.&.ATTR_GID).&&.!gid_eq(a |
9b60 | 74 74 72 2d 3e 69 61 5f 67 69 64 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 29 29 0a 09 09 67 | ttr->ia_gid,.server->m.gid))...g |
9b80 | 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 20 28 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 | oto.out;...if.(((attr->ia_valid. |
9ba0 | 26 20 41 54 54 52 5f 4d 4f 44 45 29 20 26 26 0a 09 20 20 20 20 20 28 61 74 74 72 2d 3e 69 61 5f | &.ATTR_MODE).&&.......(attr->ia_ |
9bc0 | 6d 6f 64 65 20 26 0a 09 20 20 20 20 20 20 7e 28 53 5f 49 46 52 45 47 20 7c 20 53 5f 49 46 44 49 | mode.&........~(S_IFREG.|.S_IFDI |
9be0 | 52 20 7c 20 53 5f 49 52 57 58 55 47 4f 29 29 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 | R.|.S_IRWXUGO))))...goto.out;... |
9c00 | 69 6e 66 6f 5f 6d 61 73 6b 20 3d 20 30 3b 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c | info_mask.=.0;..memset(&info,.0, |
9c20 | 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 3b 0a 0a 23 69 66 20 31 20 0a 20 20 20 20 20 20 20 20 | .sizeof(info));..#if.1.......... |
9c40 | 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 4d 4f 44 45 29 | if.((attr->ia_valid.&.ATTR_MODE) |
9c60 | 20 21 3d 20 30 29 0a 20 20 20 20 20 20 20 20 7b 0a 09 09 75 6d 6f 64 65 5f 74 20 6e 65 77 6d 6f | .!=.0).........{...umode_t.newmo |
9c80 | 64 65 20 3d 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 65 3b 0a 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b | de.=.attr->ia_mode;....info_mask |
9ca0 | 20 7c 3d 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .|=.DM_ATTRIBUTES;.............. |
9cc0 | 20 20 20 20 69 66 20 28 53 5f 49 53 44 49 52 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 | ....if.(S_ISDIR(inode->i_mode)). |
9ce0 | 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 6e 65 77 6d 6f 64 65 20 26 3d 20 73 65 | {..................newmode.&=.se |
9d00 | 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 23 69 66 | rver->m.dir_mode;...}.else.{.#if |
9d20 | 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 09 09 09 0a 09 09 09 69 66 | def.CONFIG_NCPFS_EXTRAS.......if |
9d40 | 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 | .(server->m.flags.&.NCP_MOUNT_EX |
9d60 | 54 52 41 53 29 20 7b 0a 09 09 09 09 2f 2a 20 61 6e 79 20 6e 6f 6e 2d 64 65 66 61 75 6c 74 20 65 | TRAS).{...../*.any.non-default.e |
9d80 | 78 65 63 75 74 65 20 62 69 74 20 73 65 74 20 2a 2f 0a 09 09 09 09 69 66 20 28 6e 65 77 6d 6f 64 | xecute.bit.set.*/.....if.(newmod |
9da0 | 65 20 26 20 7e 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 58 55 | e.&.~server->m.file_mode.&.S_IXU |
9dc0 | 47 4f 29 0a 09 09 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 48 41 | GO)......info.attributes.|=.aSHA |
9de0 | 52 45 44 20 7c 20 61 53 59 53 54 45 4d 3b 0a 09 09 09 09 2f 2a 20 72 65 61 64 20 66 6f 72 20 67 | RED.|.aSYSTEM;...../*.read.for.g |
9e00 | 72 6f 75 70 2f 77 6f 72 6c 64 20 61 6e 64 20 6e 6f 74 20 69 6e 20 64 65 66 61 75 6c 74 20 66 69 | roup/world.and.not.in.default.fi |
9e20 | 6c 65 5f 6d 6f 64 65 20 2a 2f 0a 09 09 09 09 65 6c 73 65 20 69 66 20 28 6e 65 77 6d 6f 64 65 20 | le_mode.*/.....else.if.(newmode. |
9e40 | 26 20 7e 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 52 55 47 4f | &.~server->m.file_mode.&.S_IRUGO |
9e60 | 29 0a 09 09 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 48 41 52 45 | )......info.attributes.|=.aSHARE |
9e80 | 44 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 09 6e 65 77 6d 6f 64 65 20 | D;....}.else.#endif.....newmode. |
9ea0 | 26 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 3b 09 09 09 0a 20 20 20 20 20 | &=.server->m.file_mode;......... |
9ec0 | 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ...........}.................if. |
9ee0 | 28 6e 65 77 6d 6f 64 65 20 26 20 53 5f 49 57 55 47 4f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | (newmode.&.S_IWUGO)............. |
9f00 | 20 20 20 20 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 26 3d 20 7e 28 61 52 4f 4e 4c 59 | .....info.attributes.&=.~(aRONLY |
9f20 | 7c 61 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b | |aRENAMEINHIBIT|aDELETEINHIBIT); |
9f40 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 09 09 09 69 6e 66 6f 2e 61 74 | .................else....info.at |
9f60 | 74 72 69 62 75 74 65 73 20 7c 3d 20 20 28 61 52 4f 4e 4c 59 7c 61 52 45 4e 41 4d 45 49 4e 48 49 | tributes.|=..(aRONLY|aRENAMEINHI |
9f80 | 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e | BIT|aDELETEINHIBIT);..#ifdef.CON |
9fa0 | 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 | FIG_NCPFS_NFS_NS...if.(ncp_is_nf |
9fc0 | 73 5f 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 | s_extras(server,.NCP_FINFO(inode |
9fe0 | 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 | )->volNumber)).{....result.=.ncp |
a000 | 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 0a 09 09 09 09 09 09 20 | _modify_nfs_info(server,........ |
a020 | 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c | ....NCP_FINFO(inode)->volNumber, |
a040 | 0a 09 09 09 09 09 09 20 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 | ............NCP_FINFO(inode)->di |
a060 | 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 09 20 20 20 20 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 | rEntNum,............attr->ia_mod |
a080 | 65 2c 20 30 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 0a 09 09 09 09 67 | e,.0);....if.(result.!=.0).....g |
a0a0 | 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 26 3d 20 7e | oto.out;....info.attributes.&=.~ |
a0c0 | 28 61 53 48 41 52 45 44 20 7c 20 61 53 59 53 54 45 4d 29 3b 0a 09 09 09 7b 0a 09 09 09 09 2f 2a | (aSHARED.|.aSYSTEM);....{...../* |
a0e0 | 20 6d 61 72 6b 20 70 61 72 74 69 61 6c 20 73 75 63 63 65 73 73 20 2a 2f 0a 09 09 09 09 73 74 72 | .mark.partial.success.*/.....str |
a100 | 75 63 74 20 69 61 74 74 72 20 74 6d 70 61 74 74 72 3b 0a 09 09 09 09 0a 09 09 09 09 74 6d 70 61 | uct.iattr.tmpattr;..........tmpa |
a120 | 74 74 72 2e 69 61 5f 76 61 6c 69 64 20 3d 20 41 54 54 52 5f 4d 4f 44 45 3b 0a 09 09 09 09 74 6d | ttr.ia_valid.=.ATTR_MODE;.....tm |
a140 | 70 61 74 74 72 2e 69 61 5f 6d 6f 64 65 20 3d 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 65 3b 0a 0a | pattr.ia_mode.=.attr->ia_mode;.. |
a160 | 09 09 09 09 73 65 74 61 74 74 72 5f 63 6f 70 79 28 69 6e 6f 64 65 2c 20 26 74 6d 70 61 74 74 72 | ....setattr_copy(inode,.&tmpattr |
a180 | 29 3b 0a 09 09 09 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 65 29 3b 0a | );.....mark_inode_dirty(inode);. |
a1a0 | 09 09 09 7d 0a 09 09 7d 0a 23 65 6e 64 69 66 0a 20 20 20 20 20 20 20 20 7d 0a 23 65 6e 64 69 66 | ...}...}.#endif.........}.#endif |
a1c0 | 0a 0a 09 2f 2a 20 44 6f 20 53 49 5a 45 20 62 65 66 6f 72 65 20 61 74 74 72 69 62 75 74 65 73 2c | .../*.Do.SIZE.before.attributes, |
a1e0 | 20 6f 74 68 65 72 77 69 73 65 20 6d 74 69 6d 65 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 73 | .otherwise.mtime.together.with.s |
a200 | 69 7a 65 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 2e 2e 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 28 | ize.does.not.work......*/..if.(( |
a220 | 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 53 49 5a 45 29 20 21 3d 20 30 | attr->ia_valid.&.ATTR_SIZE).!=.0 |
a240 | 29 20 7b 0a 09 09 69 6e 74 20 77 72 69 74 74 65 6e 3b 0a 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c | ).{...int.written;....ncp_dbg(1, |
a260 | 20 22 74 72 79 69 6e 67 20 74 6f 20 63 68 61 6e 67 65 20 73 69 7a 65 20 74 6f 20 25 6c 6c 75 5c | ."trying.to.change.size.to.%llu\ |
a280 | 6e 22 2c 20 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 29 3b 0a 0a 09 09 69 66 20 28 28 72 65 73 75 | n",.attr->ia_size);....if.((resu |
a2a0 | 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e | lt.=.ncp_make_open(inode,.O_WRON |
a2c0 | 4c 59 29 29 20 3c 20 30 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b | LY)).<.0).{....result.=.-EACCES; |
a2e0 | 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 6e 63 70 5f 77 72 69 74 65 5f 6b 65 | ....goto.out;...}...ncp_write_ke |
a300 | 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 49 4e 46 | rnel(NCP_SERVER(inode),.NCP_FINF |
a320 | 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 20 20 61 74 74 72 | O(inode)->file_handle,......attr |
a340 | 2d 3e 69 61 5f 73 69 7a 65 2c 20 30 2c 20 22 22 2c 20 26 77 72 69 74 74 65 6e 29 3b 0a 0a 09 09 | ->ia_size,.0,."",.&written);.... |
a360 | 2f 2a 20 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 6e 64 69 72 2c 20 74 68 65 20 63 68 61 6e 67 65 | /*.According.to.ndir,.the.change |
a380 | 73 20 6f 6e 6c 79 20 74 61 6b 65 20 65 66 66 65 63 74 20 61 66 74 65 72 0a 09 09 20 20 20 63 6c | s.only.take.effect.after......cl |
a3a0 | 6f 73 69 6e 67 20 74 68 65 20 66 69 6c 65 20 2a 2f 0a 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c | osing.the.file.*/...ncp_inode_cl |
a3c0 | 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f | ose(inode);...result.=.ncp_make_ |
a3e0 | 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 09 | closed(inode);...if.(result).... |
a400 | 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 09 69 66 20 28 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 20 21 | goto.out;....if.(attr->ia_size.! |
a420 | 3d 20 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 09 74 72 75 6e 63 | =.i_size_read(inode)).{....trunc |
a440 | 61 74 65 5f 73 65 74 73 69 7a 65 28 69 6e 6f 64 65 2c 20 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 | ate_setsize(inode,.attr->ia_size |
a460 | 29 3b 0a 09 09 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 65 29 3b 0a 09 | );....mark_inode_dirty(inode);.. |
a480 | 09 7d 0a 09 7d 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 | .}..}..if.((attr->ia_valid.&.ATT |
a4a0 | 52 5f 43 54 49 4d 45 29 20 21 3d 20 30 29 20 7b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c 3d 20 | R_CTIME).!=.0).{...info_mask.|=. |
a4c0 | 28 44 4d 5f 43 52 45 41 54 45 5f 54 49 4d 45 20 7c 20 44 4d 5f 43 52 45 41 54 45 5f 44 41 54 45 | (DM_CREATE_TIME.|.DM_CREATE_DATE |
a4e0 | 29 3b 0a 09 09 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f | );...ncp_date_unix2dos(attr->ia_ |
a500 | 63 74 69 6d 65 2e 74 76 5f 73 65 63 2c 0a 09 09 09 20 20 20 20 20 26 69 6e 66 6f 2e 63 72 65 61 | ctime.tv_sec,.........&info.crea |
a520 | 74 69 6f 6e 54 69 6d 65 2c 20 26 69 6e 66 6f 2e 63 72 65 61 74 69 6f 6e 44 61 74 65 29 3b 0a 09 | tionTime,.&info.creationDate);.. |
a540 | 7d 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 4d 54 | }..if.((attr->ia_valid.&.ATTR_MT |
a560 | 49 4d 45 29 20 21 3d 20 30 29 20 7b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c 3d 20 28 44 4d 5f | IME).!=.0).{...info_mask.|=.(DM_ |
a580 | 4d 4f 44 49 46 59 5f 54 49 4d 45 20 7c 20 44 4d 5f 4d 4f 44 49 46 59 5f 44 41 54 45 29 3b 0a 09 | MODIFY_TIME.|.DM_MODIFY_DATE);.. |
a5a0 | 09 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f 6d 74 69 6d | .ncp_date_unix2dos(attr->ia_mtim |
a5c0 | 65 2e 74 76 5f 73 65 63 2c 0a 09 09 09 09 20 20 26 69 6e 66 6f 2e 6d 6f 64 69 66 79 54 69 6d 65 | e.tv_sec,.......&info.modifyTime |
a5e0 | 2c 20 26 69 6e 66 6f 2e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 09 7d 0a 09 69 66 20 28 28 61 74 | ,.&info.modifyDate);..}..if.((at |
a600 | 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 41 54 49 4d 45 29 20 21 3d 20 30 29 | tr->ia_valid.&.ATTR_ATIME).!=.0) |
a620 | 20 7b 0a 09 09 5f 5f 6c 65 31 36 20 64 75 6d 6d 79 3b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c | .{...__le16.dummy;...info_mask.| |
a640 | 3d 20 28 44 4d 5f 4c 41 53 54 5f 41 43 43 45 53 53 5f 44 41 54 45 29 3b 0a 09 09 6e 63 70 5f 64 | =.(DM_LAST_ACCESS_DATE);...ncp_d |
a660 | 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f 61 74 69 6d 65 2e 74 76 5f 73 | ate_unix2dos(attr->ia_atime.tv_s |
a680 | 65 63 2c 0a 09 09 09 09 20 20 26 64 75 6d 6d 79 2c 20 26 69 6e 66 6f 2e 6c 61 73 74 41 63 63 65 | ec,.......&dummy,.&info.lastAcce |
a6a0 | 73 73 44 61 74 65 29 3b 0a 09 7d 0a 09 69 66 20 28 69 6e 66 6f 5f 6d 61 73 6b 20 21 3d 20 30 29 | ssDate);..}..if.(info_mask.!=.0) |
a6c0 | 20 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 | .{...result.=.ncp_modify_file_or |
a6e0 | 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 | _subdir_dos_info(NCP_SERVER(inod |
a700 | 65 29 2c 0a 09 09 09 09 20 20 20 20 20 20 69 6e 6f 64 65 2c 20 69 6e 66 6f 5f 6d 61 73 6b 2c 20 | e),...........inode,.info_mask,. |
a720 | 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 20 7b 0a 09 09 09 | &info);...if.(result.!=.0).{.... |
a740 | 69 66 20 28 69 6e 66 6f 5f 6d 61 73 6b 20 3d 3d 20 28 44 4d 5f 43 52 45 41 54 45 5f 54 49 4d 45 | if.(info_mask.==.(DM_CREATE_TIME |
a760 | 20 7c 20 44 4d 5f 43 52 45 41 54 45 5f 44 41 54 45 29 29 20 7b 0a 09 09 09 09 2f 2a 20 4e 65 74 | .|.DM_CREATE_DATE)).{...../*.Net |
a780 | 57 61 72 65 20 73 65 65 6d 73 20 6e 6f 74 20 74 6f 20 61 6c 6c 6f 77 20 74 68 69 73 2e 20 49 0a | Ware.seems.not.to.allow.this..I. |
a7a0 | 09 09 09 09 20 20 20 64 6f 20 6e 6f 74 20 6b 6e 6f 77 20 77 68 79 2e 20 53 6f 2c 20 6a 75 73 74 | .......do.not.know.why..So,.just |
a7c0 | 20 74 65 6c 6c 20 74 68 65 0a 09 09 09 09 20 20 20 75 73 65 72 20 65 76 65 72 79 74 68 69 6e 67 | .tell.the........user.everything |
a7e0 | 20 77 65 6e 74 20 66 69 6e 65 2e 20 54 68 69 73 20 69 73 0a 09 09 09 09 20 20 20 61 20 74 65 72 | .went.fine..This.is........a.ter |
a800 | 72 69 62 6c 65 20 68 61 63 6b 2c 20 62 75 74 20 49 20 64 6f 20 6e 6f 74 20 6b 6e 6f 77 0a 09 09 | rible.hack,.but.I.do.not.know... |
a820 | 09 09 20 20 20 68 6f 77 20 74 6f 20 64 6f 20 74 68 69 73 20 63 6f 72 72 65 63 74 6c 79 2e 20 2a | .....how.to.do.this.correctly..* |
a840 | 2f 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 | /.....result.=.0;....}.else..... |
a860 | 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 | goto.out;...}.#ifdef.CONFIG_NCPF |
a880 | 53 5f 53 54 52 4f 4e 47 09 09 0a 09 09 69 66 20 28 28 21 72 65 73 75 6c 74 29 20 26 26 20 28 69 | S_STRONG.....if.((!result).&&.(i |
a8a0 | 6e 66 6f 5f 6d 61 73 6b 20 26 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 29 29 0a 09 09 09 4e 43 | nfo_mask.&.DM_ATTRIBUTES))....NC |
a8c0 | 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 69 6e 66 6f 2e 61 74 | P_FINFO(inode)->nwattr.=.info.at |
a8e0 | 74 72 69 62 75 74 65 73 3b 0a 23 65 6e 64 69 66 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 29 | tributes;.#endif..}..if.(result) |
a900 | 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 73 65 74 61 74 74 72 5f 63 6f 70 79 28 69 6e 6f 64 | ...goto.out;...setattr_copy(inod |
a920 | 65 2c 20 61 74 74 72 29 3b 0a 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 | e,.attr);..mark_inode_dirty(inod |
a940 | 65 29 3b 0a 0a 6f 75 74 3a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 29 0a 09 09 72 65 73 | e);..out:..if.(result.>.0)...res |
a960 | 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d | ult.=.-EACCES;..return.result;.} |
a980 | 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 63 70 5f 6d 6f 75 6e | ..static.struct.dentry.*ncp_moun |
a9a0 | 74 28 73 74 72 75 63 74 20 66 69 6c 65 5f 73 79 73 74 65 6d 5f 74 79 70 65 20 2a 66 73 5f 74 79 | t(struct.file_system_type.*fs_ty |
a9c0 | 70 65 2c 0a 09 69 6e 74 20 66 6c 61 67 73 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 65 76 5f | pe,..int.flags,.const.char.*dev_ |
a9e0 | 6e 61 6d 65 2c 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 6d 6f 75 6e | name,.void.*data).{..return.moun |
aa00 | 74 5f 6e 6f 64 65 76 28 66 73 5f 74 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 61 74 61 2c 20 6e 63 | t_nodev(fs_type,.flags,.data,.nc |
aa20 | 70 5f 66 69 6c 6c 5f 73 75 70 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 | p_fill_super);.}..static.struct. |
aa40 | 66 69 6c 65 5f 73 79 73 74 65 6d 5f 74 79 70 65 20 6e 63 70 5f 66 73 5f 74 79 70 65 20 3d 20 7b | file_system_type.ncp_fs_type.=.{ |
aa60 | 0a 09 2e 6f 77 6e 65 72 09 09 3d 20 54 48 49 53 5f 4d 4f 44 55 4c 45 2c 0a 09 2e 6e 61 6d 65 09 | ...owner..=.THIS_MODULE,...name. |
aa80 | 09 3d 20 22 6e 63 70 66 73 22 2c 0a 09 2e 6d 6f 75 6e 74 09 09 3d 20 6e 63 70 5f 6d 6f 75 6e 74 | .=."ncpfs",...mount..=.ncp_mount |
aaa0 | 2c 0a 09 2e 6b 69 6c 6c 5f 73 62 09 3d 20 6b 69 6c 6c 5f 61 6e 6f 6e 5f 73 75 70 65 72 2c 0a 09 | ,...kill_sb.=.kill_anon_super,.. |
aac0 | 2e 66 73 5f 66 6c 61 67 73 09 3d 20 46 53 5f 42 49 4e 41 52 59 5f 4d 4f 55 4e 54 44 41 54 41 2c | .fs_flags.=.FS_BINARY_MOUNTDATA, |
aae0 | 0a 7d 3b 0a 4d 4f 44 55 4c 45 5f 41 4c 49 41 53 5f 46 53 28 22 6e 63 70 66 73 22 29 3b 0a 0a 73 | .};.MODULE_ALIAS_FS("ncpfs");..s |
ab00 | 74 61 74 69 63 20 69 6e 74 20 5f 5f 69 6e 69 74 20 69 6e 69 74 5f 6e 63 70 5f 66 73 28 76 6f 69 | tatic.int.__init.init_ncp_fs(voi |
ab20 | 64 29 0a 7b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 61 6c 6c | d).{..int.err;..ncp_dbg(1,."call |
ab40 | 65 64 5c 6e 22 29 3b 0a 0a 09 65 72 72 20 3d 20 69 6e 69 74 5f 69 6e 6f 64 65 63 61 63 68 65 28 | ed\n");...err.=.init_inodecache( |
ab60 | 29 3b 0a 09 69 66 20 28 65 72 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 31 3b 0a 09 65 72 72 20 3d | );..if.(err)...goto.out1;..err.= |
ab80 | 20 72 65 67 69 73 74 65 72 5f 66 69 6c 65 73 79 73 74 65 6d 28 26 6e 63 70 5f 66 73 5f 74 79 70 | .register_filesystem(&ncp_fs_typ |
aba0 | 65 29 3b 0a 09 69 66 20 28 65 72 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 72 65 74 75 72 | e);..if.(err)...goto.out;..retur |
abc0 | 6e 20 30 3b 0a 6f 75 74 3a 0a 09 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 63 61 63 68 65 28 29 3b | n.0;.out:..destroy_inodecache(); |
abe0 | 0a 6f 75 74 31 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f | .out1:..return.err;.}..static.vo |
ac00 | 69 64 20 5f 5f 65 78 69 74 20 65 78 69 74 5f 6e 63 70 5f 66 73 28 76 6f 69 64 29 0a 7b 0a 09 6e | id.__exit.exit_ncp_fs(void).{..n |
ac20 | 63 70 5f 64 62 67 28 31 2c 20 22 63 61 6c 6c 65 64 5c 6e 22 29 3b 0a 09 75 6e 72 65 67 69 73 74 | cp_dbg(1,."called\n");..unregist |
ac40 | 65 72 5f 66 69 6c 65 73 79 73 74 65 6d 28 26 6e 63 70 5f 66 73 5f 74 79 70 65 29 3b 0a 09 64 65 | er_filesystem(&ncp_fs_type);..de |
ac60 | 73 74 72 6f 79 5f 69 6e 6f 64 65 63 61 63 68 65 28 29 3b 0a 7d 0a 0a 6d 6f 64 75 6c 65 5f 69 6e | stroy_inodecache();.}..module_in |
ac80 | 69 74 28 69 6e 69 74 5f 6e 63 70 5f 66 73 29 0a 6d 6f 64 75 6c 65 5f 65 78 69 74 28 65 78 69 74 | it(init_ncp_fs).module_exit(exit |
aca0 | 5f 6e 63 70 5f 66 73 29 0a 4d 4f 44 55 4c 45 5f 4c 49 43 45 4e 53 45 28 22 47 50 4c 22 29 3b 0a | _ncp_fs).MODULE_LICENSE("GPL");. |
acc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ace0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ad00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ad20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ad40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ad60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ad80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ada0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
adc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ade0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ae00 | 6e 63 70 66 73 2f 69 6f 63 74 6c 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ioctl.c................... |
ae20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ae40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
ae60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
ae80 | 30 30 35 35 33 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 34 37 00 20 30 00 00 00 | 0055300.13023323142.012447..0... |
aea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
aec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
aee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
af00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
af20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
af40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
af60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
af80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
afa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
afc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
afe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
b000 | 2f 2a 0a 20 2a 20 20 69 6f 63 74 6c 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 | /*..*..ioctl.c..*..*..Copyright. |
b020 | 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b | (C).1995,.1996.by.Volker.Lendeck |
b040 | 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e | e..*..Modified.1997.Peter.Walten |
b060 | 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 | berg,.Bill.Hawes,.David.Woodhous |
b080 | 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 | e.for.2.1.dcache..*..Modified.19 |
b0a0 | 39 38 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c | 98,.1999.Wolfram.Pienkoss.for.NL |
b0c0 | 53 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 63 61 70 61 62 69 | S..*..*/..#include.<linux/capabi |
b0e0 | 6c 69 74 79 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 63 6f 6d 70 61 74 2e 68 | lity.h>.#include.<linux/compat.h |
b100 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c | >.#include.<linux/errno.h>.#incl |
b120 | 75 64 65 20 3c 6c 69 6e 75 78 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | ude.<linux/fs.h>.#include.<linux |
b140 | 2f 69 6f 63 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 2e 68 | /ioctl.h>.#include.<linux/time.h |
b160 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 | >.#include.<linux/mm.h>.#include |
b180 | 20 3c 6c 69 6e 75 78 2f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | .<linux/mount.h>.#include.<linux |
b1a0 | 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 68 69 67 68 75 69 64 | /slab.h>.#include.<linux/highuid |
b1c0 | 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 | .h>.#include.<linux/vmalloc.h>.# |
b1e0 | 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 64 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 | include.<linux/sched.h>..#includ |
b200 | 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 | e.<asm/uaccess.h>..#include."ncp |
b220 | 5f 66 73 2e 68 22 0a 0a 2f 2a 20 6d 61 78 69 6d 75 6d 20 6c 69 6d 69 74 20 66 6f 72 20 6e 63 70 | _fs.h"../*.maximum.limit.for.ncp |
b240 | 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 | _objectname_ioctl.*/.#define.NCP |
b260 | 5f 4f 42 4a 45 43 54 5f 4e 41 4d 45 5f 4d 41 58 5f 4c 45 4e 09 34 30 39 36 0a 2f 2a 20 6d 61 78 | _OBJECT_NAME_MAX_LEN.4096./*.max |
b280 | 69 6d 75 6d 20 6c 69 6d 69 74 20 66 6f 72 20 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 61 5f 69 | imum.limit.for.ncp_privatedata_i |
b2a0 | 6f 63 74 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 52 49 56 41 54 45 5f 44 41 54 41 | octl.*/.#define.NCP_PRIVATE_DATA |
b2c0 | 5f 4d 41 58 5f 4c 45 4e 20 38 31 39 32 0a 2f 2a 20 6d 61 78 69 6d 75 6d 20 6e 65 67 6f 74 69 61 | _MAX_LEN.8192./*.maximum.negotia |
b2e0 | 62 6c 65 20 70 61 63 6b 65 74 20 73 69 7a 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 | ble.packet.size.*/.#define.NCP_P |
b300 | 41 43 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 4e 41 4c 20 36 35 35 33 36 0a 0a 73 74 61 74 69 | ACKET_SIZE_INTERNAL.65536..stati |
b320 | 63 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 | c.int.ncp_get_fs_info(struct.ncp |
b340 | 5f 73 65 72 76 65 72 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a | _server.*.server,.struct.inode.* |
b360 | 69 6e 6f 64 65 2c 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 20 5f 5f 75 73 | inode,...struct.ncp_fs_info.__us |
b380 | 65 72 20 2a 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 20 69 | er.*arg).{..struct.ncp_fs_info.i |
b3a0 | 6e 66 6f 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 6e 66 6f 2c | nfo;...if.(copy_from_user(&info, |
b3c0 | 20 61 72 67 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 | .arg,.sizeof(info)))...return.-E |
b3e0 | 46 41 55 4c 54 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 21 3d 20 4e 43 50 | FAULT;...if.(info.version.!=.NCP |
b400 | 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 | _GET_FS_INFO_VERSION).{...ncp_db |
b420 | 67 28 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 61 6c 69 64 3a 20 25 64 5c 6e | g(1,."info.version.invalid:.%d\n |
b440 | 22 2c 20 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 | ",.info.version);...return.-EINV |
b460 | 41 4c 3b 0a 09 7d 0a 09 2f 2a 20 54 4f 44 4f 3a 20 69 6e 66 6f 2e 61 64 64 72 20 3d 20 73 65 72 | AL;..}../*.TODO:.info.addr.=.ser |
b480 | 76 65 72 2d 3e 6d 2e 73 65 72 76 5f 61 64 64 72 3b 20 2a 2f 0a 09 53 45 54 5f 55 49 44 28 69 6e | ver->m.serv_addr;.*/..SET_UID(in |
b4a0 | 66 6f 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 2c 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 | fo.mounted_uid,.from_kuid_munged |
b4c0 | 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f | (current_user_ns(),.server->m.mo |
b4e0 | 75 6e 74 65 64 5f 75 69 64 29 29 3b 0a 09 69 6e 66 6f 2e 63 6f 6e 6e 65 63 74 69 6f 6e 09 09 3d | unted_uid));..info.connection..= |
b500 | 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 69 6e 66 6f 2e 62 75 66 66 65 | .server->connection;..info.buffe |
b520 | 72 5f 73 69 7a 65 09 3d 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 | r_size.=.server->buffer_size;..i |
b540 | 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 09 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e | nfo.volume_number.=.NCP_FINFO(in |
b560 | 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 69 6e 66 6f 2e 64 69 72 65 63 74 6f 72 79 | ode)->volNumber;..info.directory |
b580 | 5f 69 64 09 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 | _id.=.NCP_FINFO(inode)->DosDirNu |
b5a0 | 6d 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 69 6e 66 6f | m;...if.(copy_to_user(arg,.&info |
b5c0 | 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c | ,.sizeof(info)))...return.-EFAUL |
b5e0 | 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f | T;..return.0;.}..static.int.ncp_ |
b600 | 67 65 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 | get_fs_info_v2(struct.ncp_server |
b620 | 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 0a | .*.server,.struct.inode.*inode,. |
b640 | 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 5f 5f 75 73 65 | .....struct.ncp_fs_info_v2.__use |
b660 | 72 20 2a 20 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 | r.*.arg).{..struct.ncp_fs_info_v |
b680 | 32 20 69 6e 66 6f 32 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 | 2.info2;...if.(copy_from_user(&i |
b6a0 | 6e 66 6f 32 2c 20 61 72 67 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 | nfo2,.arg,.sizeof(info2)))...ret |
b6c0 | 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e | urn.-EFAULT;...if.(info2.version |
b6e0 | 20 21 3d 20 4e 43 50 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 5f 56 32 29 20 | .!=.NCP_GET_FS_INFO_VERSION_V2). |
b700 | 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 | {...ncp_dbg(1,."info.version.inv |
b720 | 61 6c 69 64 3a 20 25 64 5c 6e 22 2c 20 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 | alid:.%d\n",.info2.version);...r |
b740 | 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 7d 0a 09 69 6e 66 6f 32 2e 6d 6f 75 6e 74 65 64 | eturn.-EINVAL;..}..info2.mounted |
b760 | 5f 75 69 64 20 20 20 3d 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e | _uid...=.from_kuid_munged(curren |
b780 | 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 | t_user_ns(),.server->m.mounted_u |
b7a0 | 69 64 29 3b 0a 09 69 6e 66 6f 32 2e 63 6f 6e 6e 65 63 74 69 6f 6e 20 20 20 20 3d 20 73 65 72 76 | id);..info2.connection....=.serv |
b7c0 | 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 69 6e 66 6f 32 2e 62 75 66 66 65 72 5f 73 69 | er->connection;..info2.buffer_si |
b7e0 | 7a 65 20 20 20 3d 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 6e 66 | ze...=.server->buffer_size;..inf |
b800 | 6f 32 2e 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f | o2.volume_number.=.NCP_FINFO(ino |
b820 | 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 69 6e 66 6f 32 2e 64 69 72 65 63 74 6f 72 79 | de)->volNumber;..info2.directory |
b840 | 5f 69 64 20 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e | _id..=.NCP_FINFO(inode)->DosDirN |
b860 | 75 6d 3b 0a 09 69 6e 66 6f 32 2e 64 75 6d 6d 79 31 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 32 | um;..info2.dummy1.=.info2.dummy2 |
b880 | 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 33 20 3d 20 30 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f | .=.info2.dummy3.=.0;...if.(copy_ |
b8a0 | 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 69 6e 66 6f 32 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f | to_user(arg,.&info2,.sizeof(info |
b8c0 | 32 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 | 2)))...return.-EFAULT;..return.0 |
b8e0 | 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 73 74 72 75 63 74 | ;.}..#ifdef.CONFIG_COMPAT.struct |
b900 | 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 0a 7b 0a 09 | .compat_ncp_objectname_ioctl.{.. |
b920 | 73 33 32 09 09 61 75 74 68 5f 74 79 70 65 3b 0a 09 75 33 32 09 09 6f 62 6a 65 63 74 5f 6e 61 6d | s32..auth_type;..u32..object_nam |
b940 | 65 5f 6c 65 6e 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 64 72 5f 74 09 6f 62 6a 65 63 74 5f 6e 61 | e_len;..compat_caddr_t.object_na |
b960 | 6d 65 3b 09 2f 2a 20 61 20 75 73 65 72 73 70 61 63 65 20 64 61 74 61 2c 20 69 6e 20 6d 6f 73 74 | me;./*.a.userspace.data,.in.most |
b980 | 20 63 61 73 65 73 20 75 73 65 72 20 6e 61 6d 65 20 2a 2f 0a 7d 3b 0a 0a 73 74 72 75 63 74 20 63 | .cases.user.name.*/.};..struct.c |
b9a0 | 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 7b 0a 09 73 33 32 20 76 65 72 73 | ompat_ncp_fs_info_v2.{..s32.vers |
b9c0 | 69 6f 6e 3b 0a 09 75 33 32 20 6d 6f 75 6e 74 65 64 5f 75 69 64 3b 0a 09 75 33 32 20 63 6f 6e 6e | ion;..u32.mounted_uid;..u32.conn |
b9e0 | 65 63 74 69 6f 6e 3b 0a 09 75 33 32 20 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 75 33 32 20 | ection;..u32.buffer_size;...u32. |
ba00 | 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 3b 0a 09 75 33 32 20 64 69 72 65 63 74 6f 72 79 5f 69 64 | volume_number;..u32.directory_id |
ba20 | 3b 0a 0a 09 75 33 32 20 64 75 6d 6d 79 31 3b 0a 09 75 33 32 20 64 75 6d 6d 79 32 3b 0a 09 75 33 | ;...u32.dummy1;..u32.dummy2;..u3 |
ba40 | 32 20 64 75 6d 6d 79 33 3b 0a 7d 3b 0a 0a 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f | 2.dummy3;.};..struct.compat_ncp_ |
ba60 | 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 20 7b 0a 09 75 33 32 20 66 75 6e 63 74 69 6f 6e 3b 0a 09 | ioctl_request.{..u32.function;.. |
ba80 | 75 33 32 20 73 69 7a 65 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 64 72 5f 74 20 64 61 74 61 3b 0a | u32.size;..compat_caddr_t.data;. |
baa0 | 7d 3b 0a 0a 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 | };..struct.compat_ncp_privatedat |
bac0 | 61 5f 69 6f 63 74 6c 0a 7b 0a 09 75 33 32 09 09 6c 65 6e 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 | a_ioctl.{..u32..len;..compat_cad |
bae0 | 64 72 5f 74 09 64 61 74 61 3b 09 09 2f 2a 20 7e 31 30 30 30 20 66 6f 72 20 4e 44 53 20 2a 2f 0a | dr_t.data;../*.~1000.for.NDS.*/. |
bb00 | 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f | };..#define.NCP_IOC_GET_FS_INFO_ |
bb20 | 56 32 5f 33 32 09 5f 49 4f 57 52 28 27 6e 27 2c 20 34 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 | V2_32._IOWR('n',.4,.struct.compa |
bb40 | 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f | t_ncp_fs_info_v2).#define.NCP_IO |
bb60 | 43 5f 4e 43 50 52 45 51 55 45 53 54 5f 33 32 09 09 5f 49 4f 52 28 27 6e 27 2c 20 31 2c 20 73 74 | C_NCPREQUEST_32.._IOR('n',.1,.st |
bb80 | 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 29 0a 23 | ruct.compat_ncp_ioctl_request).# |
bba0 | 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 09 | define.NCP_IOC_GETOBJECTNAME_32. |
bbc0 | 5f 49 4f 57 52 28 27 6e 27 2c 20 39 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f | _IOWR('n',.9,.struct.compat_ncp_ |
bbe0 | 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f | objectname_ioctl).#define.NCP_IO |
bc00 | 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 09 5f 49 4f 52 28 27 6e 27 2c 20 39 2c 20 | C_SETOBJECTNAME_32._IOR('n',.9,. |
bc20 | 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 | struct.compat_ncp_objectname_ioc |
bc40 | 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 | tl).#define.NCP_IOC_GETPRIVATEDA |
bc60 | 54 41 5f 33 32 09 5f 49 4f 57 52 28 27 6e 27 2c 20 31 30 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 | TA_32._IOWR('n',.10,.struct.comp |
bc80 | 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 29 0a 23 64 65 66 69 6e | at_ncp_privatedata_ioctl).#defin |
bca0 | 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 41 5f 33 32 09 5f 49 4f 52 | e.NCP_IOC_SETPRIVATEDATA_32._IOR |
bcc0 | 28 27 6e 27 2c 20 31 30 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 | ('n',.10,.struct.compat_ncp_priv |
bce0 | 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 29 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 67 | atedata_ioctl)..static.int.ncp_g |
bd00 | 65 74 5f 63 6f 6d 70 61 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 74 72 75 63 74 20 6e 63 70 5f | et_compat_fs_info_v2(struct.ncp_ |
bd20 | 73 65 72 76 65 72 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 | server.*.server,.struct.inode.*i |
bd40 | 6e 6f 64 65 2c 0a 09 09 20 20 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f | node,......struct.compat_ncp_fs_ |
bd60 | 69 6e 66 6f 5f 76 32 20 5f 5f 75 73 65 72 20 2a 20 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 | info_v2.__user.*.arg).{..struct. |
bd80 | 63 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 69 6e 66 6f 32 3b 0a 0a 09 69 | compat_ncp_fs_info_v2.info2;...i |
bda0 | 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 6e 66 6f 32 2c 20 61 72 67 2c 20 73 | f.(copy_from_user(&info2,.arg,.s |
bdc0 | 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b | izeof(info2)))...return.-EFAULT; |
bde0 | 0a 0a 09 69 66 20 28 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 20 21 3d 20 4e 43 50 5f 47 45 54 5f | ...if.(info2.version.!=.NCP_GET_ |
be00 | 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 5f 56 32 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 | FS_INFO_VERSION_V2).{...ncp_dbg( |
be20 | 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 61 6c 69 64 3a 20 25 64 5c 6e 22 2c | 1,."info.version.invalid:.%d\n", |
be40 | 20 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 | .info2.version);...return.-EINVA |
be60 | 4c 3b 0a 09 7d 0a 09 69 6e 66 6f 32 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 20 20 3d 20 66 72 6f | L;..}..info2.mounted_uid...=.fro |
be80 | 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c | m_kuid_munged(current_user_ns(), |
bea0 | 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 69 6e 66 6f 32 2e | .server->m.mounted_uid);..info2. |
bec0 | 63 6f 6e 6e 65 63 74 69 6f 6e 20 20 20 20 3d 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 | connection....=.server->connecti |
bee0 | 6f 6e 3b 0a 09 69 6e 66 6f 32 2e 62 75 66 66 65 72 5f 73 69 7a 65 20 20 20 3d 20 73 65 72 76 65 | on;..info2.buffer_size...=.serve |
bf00 | 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 6e 66 6f 32 2e 76 6f 6c 75 6d 65 5f 6e 75 | r->buffer_size;..info2.volume_nu |
bf20 | 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 | mber.=.NCP_FINFO(inode)->volNumb |
bf40 | 65 72 3b 0a 09 69 6e 66 6f 32 2e 64 69 72 65 63 74 6f 72 79 5f 69 64 20 20 3d 20 4e 43 50 5f 46 | er;..info2.directory_id..=.NCP_F |
bf60 | 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 69 6e 66 6f 32 2e 64 | INFO(inode)->DosDirNum;..info2.d |
bf80 | 75 6d 6d 79 31 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 32 20 3d 20 69 6e 66 6f 32 2e 64 75 6d | ummy1.=.info2.dummy2.=.info2.dum |
bfa0 | 6d 79 33 20 3d 20 30 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c | my3.=.0;...if.(copy_to_user(arg, |
bfc0 | 20 26 69 6e 66 6f 32 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 75 72 | .&info2,.sizeof(info2)))...retur |
bfe0 | 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 0a 0a | n.-EFAULT;..return.0;.}.#endif.. |
c000 | 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 31 36 09 09 5f | #define.NCP_IOC_GETMOUNTUID16.._ |
c020 | 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 31 36 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 | IOW('n',.2,.u16).#define.NCP_IOC |
c040 | 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 09 09 5f 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 33 32 | _GETMOUNTUID32.._IOW('n',.2,.u32 |
c060 | 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 36 34 09 | ).#define.NCP_IOC_GETMOUNTUID64. |
c080 | 09 5f 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 36 34 29 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 | ._IOW('n',.2,.u64)..#ifdef.CONFI |
c0a0 | 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 2f 2a 20 48 65 72 65 20 77 65 20 61 72 65 20 73 65 6c 65 63 | G_NCPFS_NLS./*.Here.we.are.selec |
c0c0 | 74 20 74 68 65 20 69 6f 63 68 61 72 73 65 74 20 61 6e 64 20 74 68 65 20 63 6f 64 65 70 61 67 65 | t.the.iocharset.and.the.codepage |
c0e0 | 20 66 6f 72 20 4e 4c 53 2e 0a 20 2a 20 54 68 61 6e 6b 73 20 50 65 74 72 20 56 61 6e 64 72 6f 76 | .for.NLS...*.Thanks.Petr.Vandrov |
c100 | 65 63 20 66 6f 72 20 69 64 65 61 20 61 6e 64 20 6d 61 6e 79 20 68 69 6e 74 73 2e 0a 20 2a 2f 0a | ec.for.idea.and.many.hints...*/. |
c120 | 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 73 65 74 5f 63 68 61 72 73 65 74 73 28 73 74 72 75 | static.int.ncp_set_charsets(stru |
c140 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 | ct.ncp_server*.server,.struct.nc |
c160 | 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 5f 5f 75 73 65 72 20 2a 61 72 67 29 0a 7b 0a 09 73 74 72 75 | p_nls_ioctl.__user.*arg).{..stru |
c180 | 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 73 74 72 75 63 74 20 6e | ct.ncp_nls_ioctl.user;..struct.n |
c1a0 | 6c 73 5f 74 61 62 6c 65 20 2a 63 6f 64 65 70 61 67 65 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f | ls_table.*codepage;..struct.nls_ |
c1c0 | 74 61 62 6c 65 20 2a 69 6f 63 68 61 72 73 65 74 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 | table.*iocharset;..struct.nls_ta |
c1e0 | 62 6c 65 20 2a 6f 6c 64 73 65 74 5f 69 6f 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c | ble.*oldset_io;..struct.nls_tabl |
c200 | 65 20 2a 6f 6c 64 73 65 74 5f 63 70 3b 0a 09 69 6e 74 20 75 74 66 38 3b 0a 09 69 6e 74 20 65 72 | e.*oldset_cp;..int.utf8;..int.er |
c220 | 72 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 | r;...if.(copy_from_user(&user,.a |
c240 | 72 67 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 | rg,.sizeof(user)))...return.-EFA |
c260 | 55 4c 54 3b 0a 0a 09 63 6f 64 65 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 75 73 65 72 2e 63 6f | ULT;...codepage.=.NULL;..user.co |
c280 | 64 65 70 61 67 65 5b 4e 43 50 5f 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 5d 20 3d 20 30 3b 0a 09 69 | depage[NCP_IOCSNAME_LEN].=.0;..i |
c2a0 | 66 20 28 21 75 73 65 72 2e 63 6f 64 65 70 61 67 65 5b 30 5d 20 7c 7c 20 21 73 74 72 63 6d 70 28 | f.(!user.codepage[0].||.!strcmp( |
c2c0 | 75 73 65 72 2e 63 6f 64 65 70 61 67 65 2c 20 22 64 65 66 61 75 6c 74 22 29 29 0a 09 09 63 6f 64 | user.codepage,."default"))...cod |
c2e0 | 65 70 61 67 65 20 3d 20 6c 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 65 6c 73 | epage.=.load_nls_default();..els |
c300 | 65 20 7b 0a 09 09 63 6f 64 65 70 61 67 65 20 3d 20 6c 6f 61 64 5f 6e 6c 73 28 75 73 65 72 2e 63 | e.{...codepage.=.load_nls(user.c |
c320 | 6f 64 65 70 61 67 65 29 3b 0a 09 09 69 66 20 28 21 63 6f 64 65 70 61 67 65 29 20 7b 0a 09 09 09 | odepage);...if.(!codepage).{.... |
c340 | 72 65 74 75 72 6e 20 2d 45 42 41 44 52 51 43 3b 0a 09 09 7d 0a 09 7d 0a 0a 09 69 6f 63 68 61 72 | return.-EBADRQC;...}..}...iochar |
c360 | 73 65 74 20 3d 20 4e 55 4c 4c 3b 0a 09 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 5b 4e 43 50 5f | set.=.NULL;..user.iocharset[NCP_ |
c380 | 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 5d 20 3d 20 30 3b 0a 09 69 66 20 28 21 75 73 65 72 2e 69 6f | IOCSNAME_LEN].=.0;..if.(!user.io |
c3a0 | 63 68 61 72 73 65 74 5b 30 5d 20 7c 7c 20 21 73 74 72 63 6d 70 28 75 73 65 72 2e 69 6f 63 68 61 | charset[0].||.!strcmp(user.iocha |
c3c0 | 72 73 65 74 2c 20 22 64 65 66 61 75 6c 74 22 29 29 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 | rset,."default")).{...iocharset. |
c3e0 | 3d 20 6c 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 09 75 74 66 38 20 3d 20 30 | =.load_nls_default();...utf8.=.0 |
c400 | 3b 0a 09 7d 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 75 73 65 72 2e 69 6f 63 68 61 | ;..}.else.if.(!strcmp(user.iocha |
c420 | 72 73 65 74 2c 20 22 75 74 66 38 22 29 29 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 3d 20 6c | rset,."utf8")).{...iocharset.=.l |
c440 | 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 09 75 74 66 38 20 3d 20 31 3b 0a 09 | oad_nls_default();...utf8.=.1;.. |
c460 | 7d 20 65 6c 73 65 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 3d 20 6c 6f 61 64 5f 6e 6c 73 28 | }.else.{...iocharset.=.load_nls( |
c480 | 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 21 69 6f 63 68 61 72 73 65 | user.iocharset);...if.(!iocharse |
c4a0 | 74 29 20 7b 0a 09 09 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 63 6f 64 65 70 61 67 65 29 3b 0a 09 09 | t).{....unload_nls(codepage);... |
c4c0 | 09 72 65 74 75 72 6e 20 2d 45 42 41 44 52 51 43 3b 0a 09 09 7d 0a 09 09 75 74 66 38 20 3d 20 30 | .return.-EBADRQC;...}...utf8.=.0 |
c4e0 | 3b 0a 09 7d 0a 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f | ;..}...mutex_lock(&server->root_ |
c500 | 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 | setup_lock);..if.(server->root_s |
c520 | 65 74 75 70 65 64 29 20 7b 0a 09 09 6f 6c 64 73 65 74 5f 63 70 20 3d 20 63 6f 64 65 70 61 67 65 | etuped).{...oldset_cp.=.codepage |
c540 | 3b 0a 09 09 6f 6c 64 73 65 74 5f 69 6f 20 3d 20 69 6f 63 68 61 72 73 65 74 3b 0a 09 09 65 72 72 | ;...oldset_io.=.iocharset;...err |
c560 | 20 3d 20 2d 45 42 55 53 59 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 69 66 20 28 75 74 66 38 29 | .=.-EBUSY;..}.else.{...if.(utf8) |
c580 | 0a 09 09 09 4e 43 50 5f 53 45 54 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c 41 | ....NCP_SET_FLAG(server,.NCP_FLA |
c5a0 | 47 5f 55 54 46 38 29 3b 0a 09 09 65 6c 73 65 0a 09 09 09 4e 43 50 5f 43 4c 52 5f 46 4c 41 47 28 | G_UTF8);...else....NCP_CLR_FLAG( |
c5c0 | 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c 41 47 5f 55 54 46 38 29 3b 0a 09 09 6f 6c 64 73 65 74 | server,.NCP_FLAG_UTF8);...oldset |
c5e0 | 5f 63 70 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 3b 0a 09 09 73 65 72 76 65 72 2d | _cp.=.server->nls_vol;...server- |
c600 | 3e 6e 6c 73 5f 76 6f 6c 20 3d 20 63 6f 64 65 70 61 67 65 3b 0a 09 09 6f 6c 64 73 65 74 5f 69 6f | >nls_vol.=.codepage;...oldset_io |
c620 | 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 09 73 65 72 76 65 72 2d 3e 6e 6c 73 | .=.server->nls_io;...server->nls |
c640 | 5f 69 6f 20 3d 20 69 6f 63 68 61 72 73 65 74 3b 0a 09 09 65 72 72 20 3d 20 30 3b 0a 09 7d 0a 09 | _io.=.iocharset;...err.=.0;..}.. |
c660 | 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 | mutex_unlock(&server->root_setup |
c680 | 5f 6c 6f 63 6b 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 6f 6c 64 73 65 74 5f 63 70 29 3b 0a | _lock);..unload_nls(oldset_cp);. |
c6a0 | 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 6f 6c 64 73 65 74 5f 69 6f 29 3b 0a 0a 09 72 65 74 75 72 6e | .unload_nls(oldset_io);...return |
c6c0 | 20 65 72 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 63 68 61 72 | .err;.}..static.int.ncp_get_char |
c6e0 | 73 65 74 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 | sets(struct.ncp_server*.server,. |
c700 | 73 74 72 75 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 5f 5f 75 73 65 72 20 2a 61 72 67 | struct.ncp_nls_ioctl.__user.*arg |
c720 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a | ).{..struct.ncp_nls_ioctl.user;. |
c740 | 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 75 73 65 72 2c 20 30 2c 20 73 69 7a | .int.len;...memset(&user,.0,.siz |
c760 | 65 6f 66 28 75 73 65 72 29 29 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d | eof(user));..mutex_lock(&server- |
c780 | 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e | >root_setup_lock);..if.(server-> |
c7a0 | 6e 6c 73 5f 76 6f 6c 20 26 26 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 2d 3e 63 68 61 72 | nls_vol.&&.server->nls_vol->char |
c7c0 | 73 65 74 29 20 7b 0a 09 09 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6e 6c | set).{...len.=.strlen(server->nl |
c7e0 | 73 5f 76 6f 6c 2d 3e 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 | s_vol->charset);...if.(len.>.NCP |
c800 | 5f 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 29 0a 09 09 09 6c 65 6e 20 3d 20 4e 43 50 5f 49 4f 43 53 | _IOCSNAME_LEN)....len.=.NCP_IOCS |
c820 | 4e 41 4d 45 5f 4c 45 4e 3b 0a 09 09 73 74 72 6e 63 70 79 28 75 73 65 72 2e 63 6f 64 65 70 61 67 | NAME_LEN;...strncpy(user.codepag |
c840 | 65 2c 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 2d 3e 63 68 61 72 73 65 74 2c 20 6c 65 6e | e,.server->nls_vol->charset,.len |
c860 | 29 3b 0a 09 09 75 73 65 72 2e 63 6f 64 65 70 61 67 65 5b 6c 65 6e 5d 20 3d 20 30 3b 0a 09 7d 0a | );...user.codepage[len].=.0;..}. |
c880 | 0a 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c | ..if.(NCP_IS_FLAG(server,.NCP_FL |
c8a0 | 41 47 5f 55 54 46 38 29 29 0a 09 09 73 74 72 63 70 79 28 75 73 65 72 2e 69 6f 63 68 61 72 73 65 | AG_UTF8))...strcpy(user.iocharse |
c8c0 | 74 2c 20 22 75 74 66 38 22 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 6c | t,."utf8");..else.if.(server->nl |
c8e0 | 73 5f 69 6f 20 26 26 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 2d 3e 63 68 61 72 73 65 74 29 | s_io.&&.server->nls_io->charset) |
c900 | 20 7b 0a 09 09 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f | .{...len.=.strlen(server->nls_io |
c920 | 2d 3e 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 49 4f 43 53 | ->charset);...if.(len.>.NCP_IOCS |
c940 | 4e 41 4d 45 5f 4c 45 4e 29 0a 09 09 09 6c 65 6e 20 3d 20 4e 43 50 5f 49 4f 43 53 4e 41 4d 45 5f | NAME_LEN)....len.=.NCP_IOCSNAME_ |
c960 | 4c 45 4e 3b 0a 09 09 73 74 72 6e 63 70 79 28 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 2c 09 73 | LEN;...strncpy(user.iocharset,.s |
c980 | 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 2d 3e 63 68 61 72 73 65 74 2c 20 6c 65 6e 29 3b 0a 09 09 | erver->nls_io->charset,.len);... |
c9a0 | 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 5b 6c 65 6e 5d 20 3d 20 30 3b 0a 09 7d 0a 09 6d 75 74 | user.iocharset[len].=.0;..}..mut |
c9c0 | 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f | ex_unlock(&server->root_setup_lo |
c9e0 | 63 6b 29 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 75 73 | ck);...if.(copy_to_user(arg,.&us |
ca00 | 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 | er,.sizeof(user)))...return.-EFA |
ca20 | 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 | ULT;..return.0;.}.#endif./*.CONF |
ca40 | 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 73 74 61 74 69 63 20 6c 6f 6e 67 20 5f 5f 6e | IG_NCPFS_NLS.*/..static.long.__n |
ca60 | 63 70 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 75 6e | cp_ioctl(struct.inode.*inode,.un |
ca80 | 73 69 67 6e 65 64 20 69 6e 74 20 63 6d 64 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 | signed.int.cmd,.unsigned.long.ar |
caa0 | 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 | g).{..struct.ncp_server.*server. |
cac0 | 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 | =.NCP_SERVER(inode);..int.result |
cae0 | 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 20 72 65 71 75 | ;..struct.ncp_ioctl_request.requ |
cb00 | 65 73 74 3b 0a 09 63 68 61 72 2a 20 62 6f 75 6e 63 65 62 75 66 66 65 72 3b 0a 09 76 6f 69 64 20 | est;..char*.bouncebuffer;..void. |
cb20 | 5f 5f 75 73 65 72 20 2a 61 72 67 70 20 3d 20 28 76 6f 69 64 20 5f 5f 75 73 65 72 20 2a 29 61 72 | __user.*argp.=.(void.__user.*)ar |
cb40 | 67 3b 0a 0a 09 73 77 69 74 63 68 20 28 63 6d 64 29 20 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 | g;...switch.(cmd).{.#ifdef.CONFI |
cb60 | 47 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 | G_COMPAT..case.NCP_IOC_NCPREQUES |
cb80 | 54 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 | T_32:.#endif..case.NCP_IOC_NCPRE |
cba0 | 51 55 45 53 54 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 69 66 | QUEST:.#ifdef.CONFIG_COMPAT...if |
cbc0 | 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 5f 33 32 29 20 | .(cmd.==.NCP_IOC_NCPREQUEST_32). |
cbe0 | 7b 0a 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 | {....struct.compat_ncp_ioctl_req |
cc00 | 75 65 73 74 20 72 65 71 75 65 73 74 33 32 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d | uest.request32;....if.(copy_from |
cc20 | 5f 75 73 65 72 28 26 72 65 71 75 65 73 74 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 72 | _user(&request32,.argp,.sizeof(r |
cc40 | 65 71 75 65 73 74 33 32 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a | equest32))).....return.-EFAULT;. |
cc60 | 09 09 09 72 65 71 75 65 73 74 2e 66 75 6e 63 74 69 6f 6e 20 3d 20 72 65 71 75 65 73 74 33 32 2e | ...request.function.=.request32. |
cc80 | 66 75 6e 63 74 69 6f 6e 3b 0a 09 09 09 72 65 71 75 65 73 74 2e 73 69 7a 65 20 3d 20 72 65 71 75 | function;....request.size.=.requ |
cca0 | 65 73 74 33 32 2e 73 69 7a 65 3b 0a 09 09 09 72 65 71 75 65 73 74 2e 64 61 74 61 20 3d 20 63 6f | est32.size;....request.data.=.co |
ccc0 | 6d 70 61 74 5f 70 74 72 28 72 65 71 75 65 73 74 33 32 2e 64 61 74 61 29 3b 0a 09 09 7d 20 65 6c | mpat_ptr(request32.data);...}.el |
cce0 | 73 65 0a 23 65 6e 64 69 66 0a 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 | se.#endif...if.(copy_from_user(& |
cd00 | 72 65 71 75 65 73 74 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 72 65 71 75 65 73 74 29 29 29 | request,.argp,.sizeof(request))) |
cd20 | 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 69 66 20 28 28 72 65 71 75 | ....return.-EFAULT;....if.((requ |
cd40 | 65 73 74 2e 66 75 6e 63 74 69 6f 6e 20 3e 20 32 35 35 29 0a 09 09 20 20 20 20 7c 7c 20 28 72 65 | est.function.>.255).......||.(re |
cd60 | 71 75 65 73 74 2e 73 69 7a 65 20 3e 0a 09 09 20 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 | quest.size.>.....NCP_PACKET_SIZE |
cd80 | 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 | .-.sizeof(struct.ncp_request_hea |
cda0 | 64 65 72 29 29 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 7d 0a | der))).{....return.-EINVAL;...}. |
cdc0 | 09 09 62 6f 75 6e 63 65 62 75 66 66 65 72 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 | ..bouncebuffer.=.vmalloc(NCP_PAC |
cde0 | 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 4e 41 4c 29 3b 0a 09 09 69 66 20 28 21 62 6f 75 6e 63 | KET_SIZE_INTERNAL);...if.(!bounc |
ce00 | 65 62 75 66 66 65 72 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 69 66 | ebuffer)....return.-ENOMEM;...if |
ce20 | 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 | .(copy_from_user(bouncebuffer,.r |
ce40 | 65 71 75 65 73 74 2e 64 61 74 61 2c 20 72 65 71 75 65 73 74 2e 73 69 7a 65 29 29 20 7b 0a 09 09 | equest.data,.request.size)).{... |
ce60 | 09 76 66 72 65 65 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 | .vfree(bouncebuffer);....return. |
ce80 | 2d 45 46 41 55 4c 54 3b 0a 09 09 7d 0a 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 | -EFAULT;...}...ncp_lock_server(s |
cea0 | 65 72 76 65 72 29 3b 0a 0a 09 09 2f 2a 20 46 49 58 4d 45 3a 20 57 65 20 68 61 63 6b 20 61 72 6f | erver);..../*.FIXME:.We.hack.aro |
cec0 | 75 6e 64 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 27 73 20 73 74 72 75 63 74 75 72 65 73 0a 09 | und.in.the.server's.structures.. |
cee0 | 09 20 20 20 68 65 72 65 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 75 73 65 20 6e 63 70 5f 72 | ....here.to.be.able.to.use.ncp_r |
cf00 | 65 71 75 65 73 74 20 2a 2f 0a 0a 09 09 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 | equest.*/....server->has_subfunc |
cf20 | 74 69 6f 6e 20 3d 20 30 3b 0a 09 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 | tion.=.0;...server->current_size |
cf40 | 20 3d 20 72 65 71 75 65 73 74 2e 73 69 7a 65 3b 0a 09 09 6d 65 6d 63 70 79 28 73 65 72 76 65 72 | .=.request.size;...memcpy(server |
cf60 | 2d 3e 70 61 63 6b 65 74 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 65 71 75 65 73 74 2e | ->packet,.bouncebuffer,.request. |
cf80 | 73 69 7a 65 29 3b 0a 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 | size);....result.=.ncp_request2( |
cfa0 | 73 65 72 76 65 72 2c 20 72 65 71 75 65 73 74 2e 66 75 6e 63 74 69 6f 6e 2c 0a 09 09 09 62 6f 75 | server,.request.function,....bou |
cfc0 | 6e 63 65 62 75 66 66 65 72 2c 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 | ncebuffer,.NCP_PACKET_SIZE_INTER |
cfe0 | 4e 41 4c 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 09 72 65 73 75 6c | NAL);...if.(result.<.0)....resul |
d000 | 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 65 6c 73 65 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 73 65 72 | t.=.-EIO;...else....result.=.ser |
d020 | 76 65 72 2d 3e 72 65 70 6c 79 5f 73 69 7a 65 3b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 | ver->reply_size;...ncp_unlock_se |
d040 | 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 6f 70 79 | rver(server);...ncp_dbg(1,."copy |
d060 | 20 25 64 20 62 79 74 65 73 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 69 66 20 28 72 65 73 | .%d.bytes\n",.result);...if.(res |
d080 | 75 6c 74 20 3e 3d 20 30 29 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 72 65 | ult.>=.0)....if.(copy_to_user(re |
d0a0 | 71 75 65 73 74 2e 64 61 74 61 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 65 73 75 6c 74 | quest.data,.bouncebuffer,.result |
d0c0 | 29 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 76 66 72 65 65 | )).....result.=.-EFAULT;...vfree |
d0e0 | 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b | (bouncebuffer);...return.result; |
d100 | 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f 4c 4f 47 47 45 44 5f 49 4e 3a 0a | ...case.NCP_IOC_CONN_LOGGED_IN:. |
d120 | 0a 09 09 69 66 20 28 21 28 73 65 72 76 65 72 2d 3e 6d 2e 69 6e 74 5f 66 6c 61 67 73 20 26 20 4e | ...if.(!(server->m.int_flags.&.N |
d140 | 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f 50 4f 53 53 49 42 4c 45 29 29 0a 09 09 | CP_IMOUNT_LOGGEDIN_POSSIBLE))... |
d160 | 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 | .return.-EINVAL;...mutex_lock(&s |
d180 | 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 69 66 20 28 73 | erver->root_setup_lock);...if.(s |
d1a0 | 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 29 0a 09 09 09 72 65 73 75 6c 74 20 3d | erver->root_setuped)....result.= |
d1c0 | 20 2d 45 42 55 53 59 3b 0a 09 09 65 6c 73 65 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 | .-EBUSY;...else.{....result.=.nc |
d1e0 | 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 69 6e 6f 64 65 2d 3e 69 5f 73 62 29 3b 0a 09 | p_conn_logged_in(inode->i_sb);.. |
d200 | 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 29 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 | ..if.(result.==.0).....server->r |
d220 | 6f 6f 74 5f 73 65 74 75 70 65 64 20 3d 20 31 3b 0a 09 09 7d 0a 09 09 6d 75 74 65 78 5f 75 6e 6c | oot_setuped.=.1;...}...mutex_unl |
d240 | 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 | ock(&server->root_setup_lock);.. |
d260 | 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 | .return.result;...case.NCP_IOC_G |
d280 | 45 54 5f 46 53 5f 49 4e 46 4f 3a 0a 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 66 73 5f | ET_FS_INFO:...return.ncp_get_fs_ |
d2a0 | 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 61 72 67 70 29 3b 0a 0a 09 63 61 73 | info(server,.inode,.argp);...cas |
d2c0 | 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 32 3a 0a 09 09 72 65 74 75 | e.NCP_IOC_GET_FS_INFO_V2:...retu |
d2e0 | 72 6e 20 6e 63 70 5f 67 65 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 65 72 76 65 72 2c 20 69 6e | rn.ncp_get_fs_info_v2(server,.in |
d300 | 6f 64 65 2c 20 61 72 67 70 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 | ode,.argp);..#ifdef.CONFIG_COMPA |
d320 | 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 32 5f 33 | T..case.NCP_IOC_GET_FS_INFO_V2_3 |
d340 | 32 3a 0a 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 63 6f 6d 70 61 74 5f 66 73 5f 69 6e | 2:...return.ncp_get_compat_fs_in |
d360 | 66 6f 5f 76 32 28 73 65 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 61 72 67 70 29 3b 0a 23 65 6e 64 | fo_v2(server,.inode,.argp);.#end |
d380 | 69 66 0a 09 2f 2a 20 77 65 20 68 61 76 65 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 62 69 6e 61 74 | if../*.we.have.too.many.combinat |
d3a0 | 69 6f 6e 73 20 6f 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 2c 0a 09 20 2a 20 43 4f 4e 46 49 | ions.of.CONFIG_COMPAT,...*.CONFI |
d3c0 | 47 5f 36 34 42 49 54 20 61 6e 64 20 43 4f 4e 46 49 47 5f 55 49 44 31 36 2c 20 73 6f 20 6a 75 73 | G_64BIT.and.CONFIG_UID16,.so.jus |
d3e0 | 74 20 68 61 6e 64 6c 65 0a 09 20 2a 20 61 6e 79 20 6f 66 20 74 68 65 20 70 6f 73 73 69 62 6c 65 | t.handle...*.any.of.the.possible |
d400 | 20 69 6f 63 74 6c 73 20 2a 2f 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e | .ioctls.*/..case.NCP_IOC_GETMOUN |
d420 | 54 55 49 44 31 36 3a 0a 09 09 7b 0a 09 09 09 75 31 36 20 75 69 64 3b 0a 0a 09 09 09 53 45 54 5f | TUID16:...{....u16.uid;.....SET_ |
d440 | 55 49 44 28 75 69 64 2c 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e | UID(uid,.from_kuid_munged(curren |
d460 | 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 | t_user_ns(),.server->m.mounted_u |
d480 | 69 64 29 29 3b 0a 09 09 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 75 69 64 2c 20 28 75 31 36 20 | id));....if.(put_user(uid,.(u16. |
d4a0 | 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 | __user.*)argp)).....return.-EFAU |
d4c0 | 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 09 63 61 73 65 20 4e 43 50 5f 49 | LT;....return.0;...}..case.NCP_I |
d4e0 | 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 3a 0a 09 7b 0a 09 09 75 69 64 5f 74 20 75 69 64 | OC_GETMOUNTUID32:..{...uid_t.uid |
d500 | 20 3d 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 | .=.from_kuid_munged(current_user |
d520 | 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 | _ns(),.server->m.mounted_uid);.. |
d540 | 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 75 69 64 2c 20 28 75 33 32 20 5f 5f 75 73 65 72 20 2a | .if.(put_user(uid,.(u32.__user.* |
d560 | 29 61 72 67 70 29 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 72 65 74 | )argp))....return.-EFAULT;...ret |
d580 | 75 72 6e 20 30 3b 0a 09 7d 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 | urn.0;..}..case.NCP_IOC_GETMOUNT |
d5a0 | 55 49 44 36 34 3a 0a 09 7b 0a 09 09 75 69 64 5f 74 20 75 69 64 20 3d 20 66 72 6f 6d 5f 6b 75 69 | UID64:..{...uid_t.uid.=.from_kui |
d5c0 | 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 | d_munged(current_user_ns(),.serv |
d5e0 | 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 09 69 66 20 28 70 75 74 5f 75 73 | er->m.mounted_uid);...if.(put_us |
d600 | 65 72 28 75 69 64 2c 20 28 75 36 34 20 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 | er(uid,.(u64.__user.*)argp)).... |
d620 | 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 7d 0a 09 | return.-EFAULT;...return.0;..}.. |
d640 | 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 52 4f 4f 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 | case.NCP_IOC_GETROOT:...{....str |
d660 | 75 63 74 20 6e 63 70 5f 73 65 74 72 6f 6f 74 5f 69 6f 63 74 6c 20 73 72 3b 0a 0a 09 09 09 72 65 | uct.ncp_setroot_ioctl.sr;.....re |
d680 | 73 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 | sult.=.-EACCES;....mutex_lock(&s |
d6a0 | 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 | erver->root_setup_lock);....if.( |
d6c0 | 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 29 20 7b 0a 09 09 09 09 | server->m.mounted_vol[0]).{..... |
d6e0 | 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 20 3d 20 69 6e 6f 64 65 2d 3e 69 | struct.dentry*.dentry.=.inode->i |
d700 | 5f 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 0a 09 09 09 09 69 66 20 28 64 65 6e 74 72 79 29 20 7b 0a | _sb->s_root;......if.(dentry).{. |
d720 | 09 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 73 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 | .....struct.inode*.s_inode.=.d_i |
d740 | 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 09 09 09 09 69 66 20 28 73 5f 69 6e 6f 64 65 29 | node(dentry);.......if.(s_inode) |
d760 | 20 7b 0a 09 09 09 09 09 09 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 | .{.......sr.volNumber.=.NCP_FINF |
d780 | 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 09 09 09 73 72 2e | O(s_inode)->volNumber;.......sr. |
d7a0 | 64 69 72 45 6e 74 4e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e | dirEntNum.=.NCP_FINFO(s_inode)-> |
d7c0 | 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 09 09 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 65 20 3d 20 | dirEntNum;.......sr.namespace.=. |
d7e0 | 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 5d | server->name_space[sr.volNumber] |
d800 | 3b 0a 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 0a | ;.......result.=.0;......}.else. |
d820 | 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f 69 6e 6f 64 65 28 73 5f 72 6f 6f 74 | ......ncp_dbg(1,."d_inode(s_root |
d840 | 29 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 09 6e 63 70 | )==NULL\n");.....}.else......ncp |
d860 | 5f 64 62 67 28 31 2c 20 22 73 5f 72 6f 6f 74 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 7d 20 | _dbg(1,."s_root==NULL\n");....}. |
d880 | 65 6c 73 65 20 7b 0a 09 09 09 09 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 2d 31 3b 0a 09 09 | else.{.....sr.volNumber.=.-1;... |
d8a0 | 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 65 20 3d 20 30 3b 0a 09 09 09 09 73 72 2e 64 69 72 45 6e | ..sr.namespace.=.0;.....sr.dirEn |
d8c0 | 74 4e 75 6d 20 3d 20 30 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 | tNum.=.0;.....result.=.0;....}.. |
d8e0 | 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 | ..mutex_unlock(&server->root_set |
d900 | 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 | up_lock);....if.(!result.&&.copy |
d920 | 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 73 72 2c 20 73 69 7a 65 6f 66 28 73 72 29 29 29 | _to_user(argp,.&sr,.sizeof(sr))) |
d940 | 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e | .....result.=.-EFAULT;....return |
d960 | 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 | .result;...}...case.NCP_IOC_SETR |
d980 | 4f 4f 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 74 72 6f 6f 74 5f 69 | OOT:...{....struct.ncp_setroot_i |
d9a0 | 6f 63 74 6c 20 73 72 3b 0a 09 09 09 5f 5f 75 33 32 20 76 6e 75 6d 3b 0a 09 09 09 5f 5f 6c 65 33 | octl.sr;....__u32.vnum;....__le3 |
d9c0 | 32 20 64 65 3b 0a 09 09 09 5f 5f 6c 65 33 32 20 64 6f 73 64 65 3b 0a 09 09 09 73 74 72 75 63 74 | 2.de;....__le32.dosde;....struct |
d9e0 | 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 | .dentry*.dentry;.....if.(copy_fr |
da00 | 6f 6d 5f 75 73 65 72 28 26 73 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 73 72 29 29 29 0a | om_user(&sr,.argp,.sizeof(sr))). |
da20 | 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 | ....return.-EFAULT;....mutex_loc |
da40 | 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 | k(&server->root_setup_lock);.... |
da60 | 69 66 20 28 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 29 0a 09 09 09 09 72 65 | if.(server->root_setuped).....re |
da80 | 73 75 6c 74 20 3d 20 2d 45 42 55 53 59 3b 0a 09 09 09 65 6c 73 65 20 7b 0a 09 09 09 09 69 66 20 | sult.=.-EBUSY;....else.{.....if. |
daa0 | 28 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 73 65 72 76 65 72 | (sr.volNumber.<.0).{......server |
dac0 | 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d 20 30 3b 0a 09 09 09 09 09 76 6e 75 | ->m.mounted_vol[0].=.0;......vnu |
dae0 | 6d 20 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 3b 0a 09 09 09 09 09 | m.=.NCP_NUMBER_OF_VOLUMES;...... |
db00 | 64 65 20 3d 20 30 3b 0a 09 09 09 09 09 64 6f 73 64 65 20 3d 20 30 3b 0a 09 09 09 09 09 72 65 73 | de.=.0;......dosde.=.0;......res |
db20 | 75 6c 74 20 3d 20 30 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 73 72 2e 76 6f 6c 4e 75 | ult.=.0;.....}.else.if.(sr.volNu |
db40 | 6d 62 65 72 20 3e 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 29 20 7b | mber.>=.NCP_NUMBER_OF_VOLUMES).{ |
db60 | 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 7d 20 65 6c | ......result.=.-EINVAL;.....}.el |
db80 | 73 65 20 69 66 20 28 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 | se.if.(ncp_mount_subdir(server,. |
dba0 | 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 09 09 09 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 | sr.volNumber,........sr.namespac |
dbc0 | 65 2c 20 73 72 2e 64 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 09 09 26 76 6e 75 6d 2c 20 26 | e,.sr.dirEntNum,........&vnum,.& |
dbe0 | 64 65 2c 20 26 64 6f 73 64 65 29 29 20 7b 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 4e | de,.&dosde)).{......result.=.-EN |
dc00 | 4f 45 4e 54 3b 0a 09 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 | OENT;.....}.else......result.=.0 |
dc20 | 3b 0a 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 29 20 7b 0a 09 09 09 09 09 64 | ;......if.(result.==.0).{......d |
dc40 | 65 6e 74 72 79 20 3d 20 69 6e 6f 64 65 2d 3e 69 5f 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 09 09 | entry.=.inode->i_sb->s_root;.... |
dc60 | 09 09 69 66 20 28 64 65 6e 74 72 79 29 20 7b 0a 09 09 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f | ..if.(dentry).{.......struct.ino |
dc80 | 64 65 2a 20 73 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a | de*.s_inode.=.d_inode(dentry);.. |
dca0 | 09 09 09 09 09 09 69 66 20 28 73 5f 69 6e 6f 64 65 29 20 7b 0a 09 09 09 09 09 09 09 4e 43 50 5f | ......if.(s_inode).{........NCP_ |
dcc0 | 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 76 6e 75 6d | FINFO(s_inode)->volNumber.=.vnum |
dce0 | 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 64 69 72 | ;........NCP_FINFO(s_inode)->dir |
dd00 | 45 6e 74 4e 75 6d 20 3d 20 64 65 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 73 5f | EntNum.=.de;........NCP_FINFO(s_ |
dd20 | 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 64 6f 73 64 65 3b 0a 09 09 09 09 09 | inode)->DosDirNum.=.dosde;...... |
dd40 | 09 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 20 3d 20 31 3b 0a 09 09 09 09 | ..server->root_setuped.=.1;..... |
dd60 | 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f | ..}.else.{........ncp_dbg(1,."d_ |
dd80 | 69 6e 6f 64 65 28 73 5f 72 6f 6f 74 29 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 09 09 09 | inode(s_root)==NULL\n");........ |
dda0 | 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 20 65 6c | result.=.-EIO;.......}......}.el |
ddc0 | 73 65 20 7b 0a 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 5f 72 6f 6f 74 3d 3d 4e | se.{.......ncp_dbg(1,."s_root==N |
dde0 | 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 | ULL\n");.......result.=.-EIO;... |
de00 | 09 09 09 7d 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 | ...}.....}....}....mutex_unlock( |
de20 | 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 0a 09 09 09 72 | &server->root_setup_lock);.....r |
de40 | 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 | eturn.result;...}..#ifdef.CONFIG |
de60 | 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 63 61 73 65 20 4e 43 50 5f | _NCPFS_PACKET_SIGNING..case.NCP_ |
de80 | 49 4f 43 5f 53 49 47 4e 5f 49 4e 49 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 | IOC_SIGN_INIT:...{....struct.ncp |
dea0 | 5f 73 69 67 6e 5f 69 6e 69 74 20 73 69 67 6e 3b 0a 0a 09 09 09 69 66 20 28 61 72 67 70 29 0a 09 | _sign_init.sign;.....if.(argp).. |
dec0 | 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 73 69 67 6e 2c 20 61 72 67 | ...if.(copy_from_user(&sign,.arg |
dee0 | 70 2c 20 73 69 7a 65 6f 66 28 73 69 67 6e 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 | p,.sizeof(sign)))......return.-E |
df00 | 46 41 55 4c 54 3b 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | FAULT;....ncp_lock_server(server |
df20 | 29 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 | );....mutex_lock(&server->rcv.cr |
df40 | 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 69 66 20 28 61 72 67 70 29 20 7b 0a 09 09 09 09 69 66 | eq_mutex);....if.(argp).{.....if |
df60 | 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 29 20 7b 0a 09 09 09 09 09 6d 65 | .(server->sign_wanted).{......me |
df80 | 6d 63 70 79 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 6f 6f 74 2c 73 69 67 6e 2e 73 69 67 6e | mcpy(server->sign_root,sign.sign |
dfa0 | 5f 72 6f 6f 74 2c 38 29 3b 0a 09 09 09 09 09 6d 65 6d 63 70 79 28 73 65 72 76 65 72 2d 3e 73 69 | _root,8);......memcpy(server->si |
dfc0 | 67 6e 5f 6c 61 73 74 2c 73 69 67 6e 2e 73 69 67 6e 5f 6c 61 73 74 2c 31 36 29 3b 0a 09 09 09 09 | gn_last,sign.sign_last,16);..... |
dfe0 | 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 31 3b 0a 09 09 09 09 7d 0a | .server->sign_active.=.1;.....}. |
e000 | 09 09 09 09 2f 2a 20 69 67 6e 6f 72 65 20 77 68 65 6e 20 73 69 67 6e 61 74 75 72 65 73 20 6e 6f | ..../*.ignore.when.signatures.no |
e020 | 74 20 77 61 6e 74 65 64 20 2a 2f 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 73 65 72 76 | t.wanted.*/....}.else.{.....serv |
e040 | 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 6d 75 74 | er->sign_active.=.0;....}....mut |
e060 | 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 | ex_unlock(&server->rcv.creq_mute |
e080 | 78 29 3b 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 | x);....ncp_unlock_server(server) |
e0a0 | 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 | ;....return.0;...}..........case |
e0c0 | 20 4e 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 7b 0a 09 09 09 69 6e 74 | .NCP_IOC_SIGN_WANTED:...{....int |
e0e0 | 20 73 74 61 74 65 3b 0a 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 | .state;.....ncp_lock_server(serv |
e100 | 65 72 29 3b 0a 09 09 09 73 74 61 74 65 20 3d 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e | er);....state.=.server->sign_wan |
e120 | 74 65 64 3b 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | ted;....ncp_unlock_server(server |
e140 | 29 3b 0a 09 09 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 73 74 61 74 65 2c 20 28 69 6e 74 20 5f | );....if.(put_user(state,.(int._ |
e160 | 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c | _user.*)argp)).....return.-EFAUL |
e180 | 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 | T;....return.0;...}...case.NCP_I |
e1a0 | 4f 43 5f 53 45 54 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 7b 0a 09 09 09 69 6e 74 20 6e | OC_SET_SIGN_WANTED:...{....int.n |
e1c0 | 65 77 73 74 61 74 65 3b 0a 0a 09 09 09 2f 2a 20 67 65 74 20 6f 6e 6c 79 20 6c 6f 77 20 38 20 62 | ewstate;...../*.get.only.low.8.b |
e1e0 | 69 74 73 2e 2e 2e 20 2a 2f 0a 09 09 09 69 66 20 28 67 65 74 5f 75 73 65 72 28 6e 65 77 73 74 61 | its....*/....if.(get_user(newsta |
e200 | 74 65 2c 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 | te,.(unsigned.char.__user.*)argp |
e220 | 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 73 75 6c 74 | )).....return.-EFAULT;....result |
e240 | 20 3d 20 30 3b 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 | .=.0;....ncp_lock_server(server) |
e260 | 3b 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a | ;....if.(server->sign_active).{. |
e280 | 09 09 09 09 2f 2a 20 63 61 6e 6e 6f 74 20 74 75 72 6e 20 73 69 67 6e 61 74 75 72 65 73 20 4f 46 | ..../*.cannot.turn.signatures.OF |
e2a0 | 46 20 77 68 65 6e 20 61 63 74 69 76 65 20 2a 2f 0a 09 09 09 09 69 66 20 28 21 6e 65 77 73 74 61 | F.when.active.*/.....if.(!newsta |
e2c0 | 74 65 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 7d 20 | te)......result.=.-EINVAL;....}. |
e2e0 | 65 6c 73 65 20 7b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 20 3d | else.{.....server->sign_wanted.= |
e300 | 20 6e 65 77 73 74 61 74 65 20 21 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f | .newstate.!=.0;....}....ncp_unlo |
e320 | 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73 | ck_server(server);....return.res |
e340 | 75 6c 74 3b 0a 09 09 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 | ult;...}..#endif./*.CONFIG_NCPFS |
e360 | 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 | _PACKET_SIGNING.*/..#ifdef.CONFI |
e380 | 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 09 63 61 73 65 20 4e 43 50 5f | G_NCPFS_IOCTL_LOCKING..case.NCP_ |
e3a0 | 49 4f 43 5f 4c 4f 43 4b 55 4e 4c 4f 43 4b 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 | IOC_LOCKUNLOCK:...{....struct.nc |
e3c0 | 70 5f 6c 6f 63 6b 5f 69 6f 63 74 6c 09 20 72 71 64 61 74 61 3b 0a 0a 09 09 09 69 66 20 28 63 6f | p_lock_ioctl..rqdata;.....if.(co |
e3e0 | 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 72 71 64 61 74 61 2c 20 61 72 67 70 2c 20 73 69 7a 65 | py_from_user(&rqdata,.argp,.size |
e400 | 6f 66 28 72 71 64 61 74 61 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b | of(rqdata))).....return.-EFAULT; |
e420 | 0a 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 6f 72 69 67 69 6e 20 21 3d 20 30 29 0a 09 09 09 09 | ....if.(rqdata.origin.!=.0)..... |
e440 | 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 2f 2a 20 63 68 65 63 6b 20 66 6f 72 20 | return.-EINVAL;..../*.check.for. |
e460 | 63 6d 64 20 2a 2f 0a 09 09 09 73 77 69 74 63 68 20 28 72 71 64 61 74 61 2e 63 6d 64 29 20 7b 0a | cmd.*/....switch.(rqdata.cmd).{. |
e480 | 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 45 58 3a 0a 09 09 09 09 63 61 73 65 20 4e | ....case.NCP_LOCK_EX:.....case.N |
e4a0 | 43 50 5f 4c 4f 43 4b 5f 53 48 3a 0a 09 09 09 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 74 69 6d | CP_LOCK_SH:.......if.(rqdata.tim |
e4c0 | 65 6f 75 74 20 3c 20 30 29 0a 09 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b | eout.<.0)........return.-EINVAL; |
e4e0 | 0a 09 09 09 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 3d 20 30 29 0a | .......if.(rqdata.timeout.==.0). |
e500 | 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4c 4f 43 4b | .......rqdata.timeout.=.NCP_LOCK |
e520 | 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 09 09 09 09 65 6c 73 65 20 69 66 20 | _DEFAULT_TIMEOUT;.......else.if. |
e540 | 28 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3e 20 4e 43 50 5f 4c 4f 43 4b 5f 4d 41 58 5f 54 | (rqdata.timeout.>.NCP_LOCK_MAX_T |
e560 | 49 4d 45 4f 55 54 29 0a 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 | IMEOUT)........rqdata.timeout.=. |
e580 | 4e 43 50 5f 4c 4f 43 4b 5f 4d 41 58 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 09 09 09 09 62 72 65 61 | NCP_LOCK_MAX_TIMEOUT;.......brea |
e5a0 | 6b 3b 0a 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 4c 4f 47 3a 0a 09 09 09 09 09 09 | k;.....case.NCP_LOCK_LOG:....... |
e5c0 | 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4c 4f 43 4b 5f 44 45 46 41 55 4c | rqdata.timeout.=.NCP_LOCK_DEFAUL |
e5e0 | 54 5f 54 49 4d 45 4f 55 54 3b 09 2f 2a 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 2a 2f 0a 09 | T_TIMEOUT;./*.has.no.effect.*/.. |
e600 | 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 43 4c 45 41 52 3a 0a 09 09 09 09 09 09 62 72 | ...case.NCP_LOCK_CLEAR:.......br |
e620 | 65 61 6b 3b 0a 09 09 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d | eak;.....default:.......return.- |
e640 | 45 49 4e 56 41 4c 3b 0a 09 09 09 7d 0a 09 09 09 2f 2a 20 6c 6f 63 6b 69 6e 67 20 6e 65 65 64 73 | EINVAL;....}..../*.locking.needs |
e660 | 20 62 6f 74 68 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 61 63 63 65 73 73 20 2a 2f 0a 09 | .both.read.and.write.access.*/.. |
e680 | 09 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e | ..if.((result.=.ncp_make_open(in |
e6a0 | 6f 64 65 2c 20 4f 5f 52 44 57 52 29 29 20 21 3d 20 30 29 0a 09 09 09 7b 0a 09 09 09 09 72 65 74 | ode,.O_RDWR)).!=.0)....{.....ret |
e6c0 | 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 09 7d 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 | urn.result;....}....result.=.-EI |
e6e0 | 53 44 49 52 3b 0a 09 09 09 69 66 20 28 21 53 5f 49 53 52 45 47 28 69 6e 6f 64 65 2d 3e 69 5f 6d | SDIR;....if.(!S_ISREG(inode->i_m |
e700 | 6f 64 65 29 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 09 09 09 69 66 20 28 72 71 | ode)).....goto.outrel;....if.(rq |
e720 | 64 61 74 61 2e 63 6d 64 20 3d 3d 20 4e 43 50 5f 4c 4f 43 4b 5f 43 4c 45 41 52 29 0a 09 09 09 7b | data.cmd.==.NCP_LOCK_CLEAR)....{ |
e740 | 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 43 6c 65 61 72 50 68 79 73 69 63 61 6c 52 | .....result.=.ncp_ClearPhysicalR |
e760 | 65 63 6f 72 64 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 09 09 | ecord(NCP_SERVER(inode),........ |
e780 | 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 | NCP_FINFO(inode)->file_handle,.. |
e7a0 | 09 09 09 09 09 09 72 71 64 61 74 61 2e 6f 66 66 73 65 74 2c 0a 09 09 09 09 09 09 09 72 71 64 61 | ......rqdata.offset,........rqda |
e7c0 | 74 61 2e 6c 65 6e 67 74 68 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 29 20 | ta.length);.....if.(result.>.0). |
e7e0 | 72 65 73 75 6c 74 20 3d 20 30 3b 09 2f 2a 20 6e 6f 20 73 75 63 68 20 6c 6f 63 6b 20 2a 2f 0a 09 | result.=.0;./*.no.such.lock.*/.. |
e800 | 09 09 7d 0a 09 09 09 65 6c 73 65 0a 09 09 09 7b 0a 09 09 09 09 69 6e 74 20 6c 6f 63 6b 63 6d 64 | ..}....else....{.....int.lockcmd |
e820 | 3b 0a 0a 09 09 09 09 73 77 69 74 63 68 20 28 72 71 64 61 74 61 2e 63 6d 64 29 0a 09 09 09 09 7b | ;......switch.(rqdata.cmd).....{ |
e840 | 0a 09 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 45 58 3a 20 20 6c 6f 63 6b 63 6d 64 | ......case.NCP_LOCK_EX:..lockcmd |
e860 | 3d 31 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 53 48 | =1;.break;......case.NCP_LOCK_SH |
e880 | 3a 20 20 6c 6f 63 6b 63 6d 64 3d 33 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 09 64 65 66 61 75 6c | :..lockcmd=3;.break;......defaul |
e8a0 | 74 3a 09 20 20 20 6c 6f 63 6b 63 6d 64 3d 30 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 | t:....lockcmd=0;.break;.....}... |
e8c0 | 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 4c 6f 67 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 | ..result.=.ncp_LogPhysicalRecord |
e8e0 | 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 | (NCP_SERVER(inode),........NCP_F |
e900 | 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 09 09 09 | INFO(inode)->file_handle,....... |
e920 | 09 6c 6f 63 6b 63 6d 64 2c 0a 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 6f 66 66 73 65 74 2c 0a | .lockcmd,........rqdata.offset,. |
e940 | 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 6c 65 6e 67 74 68 2c 0a 09 09 09 09 09 09 09 72 71 64 | .......rqdata.length,........rqd |
e960 | 61 74 61 2e 74 69 6d 65 6f 75 74 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 | ata.timeout);.....if.(result.>.0 |
e980 | 29 20 72 65 73 75 6c 74 20 3d 20 2d 45 41 47 41 49 4e 3b 0a 09 09 09 7d 0a 6f 75 74 72 65 6c 3a | ).result.=.-EAGAIN;....}.outrel: |
e9a0 | 0a 09 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 09 09 72 | ....ncp_inode_close(inode);....r |
e9c0 | 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 | eturn.result;...}.#endif./*.CONF |
e9e0 | 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 | IG_NCPFS_IOCTL_LOCKING.*/..#ifde |
ea00 | 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 | f.CONFIG_COMPAT..case.NCP_IOC_GE |
ea20 | 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 63 6f | TOBJECTNAME_32:...{....struct.co |
ea40 | 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a | mpat_ncp_objectname_ioctl.user;. |
ea60 | 09 09 09 73 69 7a 65 5f 74 20 6f 75 74 6c 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f | ...size_t.outl;.....if.(copy_fro |
ea80 | 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 | m_user(&user,.argp,.sizeof(user) |
eaa0 | 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 64 6f 77 6e 5f 72 | )).....return.-EFAULT;....down_r |
eac0 | 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 75 73 65 | ead(&server->auth_rwsem);....use |
eae0 | 72 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f | r.auth_type.=.server->auth.auth_ |
eb00 | 74 79 70 65 3b 0a 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 | type;....outl.=.user.object_name |
eb20 | 5f 6c 65 6e 3b 0a 09 09 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 | _len;....user.object_name_len.=. |
eb40 | 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 | server->auth.object_name_len;... |
eb60 | 09 69 66 20 28 6f 75 74 6c 20 3e 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e | .if.(outl.>.user.object_name_len |
eb80 | 29 0a 09 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 | ).....outl.=.user.object_name_le |
eba0 | 6e 3b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b | n;....result.=.0;....if.(outl).{ |
ebc0 | 0a 09 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 63 6f 6d 70 61 74 5f 70 74 72 | .....if.(copy_to_user(compat_ptr |
ebe0 | 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 29 2c 0a 09 09 09 09 09 09 20 73 65 72 76 65 | (user.object_name),........serve |
ec00 | 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 20 6f 75 74 6c | r->auth.object_name,........outl |
ec20 | 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 7d 0a 09 | ))......result.=.-EFAULT;....}.. |
ec40 | 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a | ..up_read(&server->auth_rwsem);. |
ec60 | 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 | ...if.(!result.&&.copy_to_user(a |
ec80 | 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 | rgp,.&user,.sizeof(user))).....r |
eca0 | 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c | esult.=.-EFAULT;....return.resul |
ecc0 | 74 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 | t;...}.#endif...case.NCP_IOC_GET |
ece0 | 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6f 62 | OBJECTNAME:...{....struct.ncp_ob |
ed00 | 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f | jectname_ioctl.user;....size_t.o |
ed20 | 75 74 6c 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 | utl;.....if.(copy_from_user(&use |
ed40 | 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 | r,.argp,.sizeof(user))).....retu |
ed60 | 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 64 6f 77 6e 5f 72 65 61 64 28 26 73 65 72 76 65 72 | rn.-EFAULT;....down_read(&server |
ed80 | 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 75 73 65 72 2e 61 75 74 68 5f 74 79 70 65 | ->auth_rwsem);....user.auth_type |
eda0 | 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 3b 0a 09 09 09 6f 75 | .=.server->auth.auth_type;....ou |
edc0 | 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 75 73 | tl.=.user.object_name_len;....us |
ede0 | 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 | er.object_name_len.=.server->aut |
ee00 | 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 20 3e | h.object_name_len;....if.(outl.> |
ee20 | 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 29 0a 09 09 09 09 6f 75 74 6c 20 | .user.object_name_len).....outl. |
ee40 | 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 72 65 73 75 6c | =.user.object_name_len;....resul |
ee60 | 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b 0a 09 09 09 09 69 66 20 28 63 6f | t.=.0;....if.(outl).{.....if.(co |
ee80 | 70 79 5f 74 6f 5f 75 73 65 72 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 | py_to_user(user.object_name,.... |
eea0 | 09 09 09 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 | ....server->auth.object_name,... |
eec0 | 09 09 09 09 20 6f 75 74 6c 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c | .....outl))......result.=.-EFAUL |
eee0 | 54 3b 0a 09 09 09 7d 0a 09 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 | T;....}....up_read(&server->auth |
ef00 | 5f 72 77 73 65 6d 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 5f | _rwsem);....if.(!result.&&.copy_ |
ef20 | 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 | to_user(argp,.&user,.sizeof(user |
ef40 | 29 29 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 | ))).....result.=.-EFAULT;....ret |
ef60 | 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 | urn.result;...}..#ifdef.CONFIG_C |
ef80 | 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d | OMPAT..case.NCP_IOC_SETOBJECTNAM |
efa0 | 45 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 | E_32:.#endif..case.NCP_IOC_SETOB |
efc0 | 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6f 62 6a 65 | JECTNAME:...{....struct.ncp_obje |
efe0 | 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 76 6f 69 64 2a 20 6e 65 77 6e | ctname_ioctl.user;....void*.newn |
f000 | 61 6d 65 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 6e 61 6d 65 3b 0a 09 09 09 73 69 7a 65 5f 74 | ame;....void*.oldname;....size_t |
f020 | 20 6f 6c 64 6e 61 6d 65 6c 65 6e 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 70 72 69 76 61 74 65 | .oldnamelen;....void*.oldprivate |
f040 | 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6c 64 70 72 69 76 61 74 65 6c 65 6e 3b 0a 0a 23 69 66 64 | ;....size_t.oldprivatelen;..#ifd |
f060 | 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 20 28 63 6d 64 20 3d 3d 20 4e | ef.CONFIG_COMPAT....if.(cmd.==.N |
f080 | 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 29 20 7b 0a 09 09 09 09 73 | CP_IOC_SETOBJECTNAME_32).{.....s |
f0a0 | 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 | truct.compat_ncp_objectname_ioct |
f0c0 | 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 | l.user32;.....if.(copy_from_user |
f0e0 | 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 | (&user32,.argp,.sizeof(user32))) |
f100 | 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 09 75 73 65 72 2e 61 | ......return.-EFAULT;.....user.a |
f120 | 75 74 68 5f 74 79 70 65 20 3d 20 75 73 65 72 33 32 2e 61 75 74 68 5f 74 79 70 65 3b 0a 09 09 09 | uth_type.=.user32.auth_type;.... |
f140 | 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6f | .user.object_name_len.=.user32.o |
f160 | 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f | bject_name_len;.....user.object_ |
f180 | 6e 61 6d 65 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 32 2e 6f 62 6a 65 63 74 5f | name.=.compat_ptr(user32.object_ |
f1a0 | 6e 61 6d 65 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 63 | name);....}.else.#endif....if.(c |
f1c0 | 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f | opy_from_user(&user,.argp,.sizeo |
f1e0 | 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 | f(user))).....return.-EFAULT;... |
f200 | 09 09 69 66 20 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3e 20 4e 43 50 | ..if.(user.object_name_len.>.NCP |
f220 | 5f 4f 42 4a 45 43 54 5f 4e 41 4d 45 5f 4d 41 58 5f 4c 45 4e 29 0a 09 09 09 09 72 65 74 75 72 6e | _OBJECT_NAME_MAX_LEN).....return |
f240 | 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 09 69 66 20 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d | .-ENOMEM;....if.(user.object_nam |
f260 | 65 5f 6c 65 6e 29 20 7b 0a 09 09 09 09 6e 65 77 6e 61 6d 65 20 3d 20 6d 65 6d 64 75 70 5f 75 73 | e_len).{.....newname.=.memdup_us |
f280 | 65 72 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 20 20 20 20 20 | er(user.object_name,............ |
f2a0 | 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 29 3b 0a 09 09 09 09 69 66 20 28 | .user.object_name_len);.....if.( |
f2c0 | 49 53 5f 45 52 52 28 6e 65 77 6e 61 6d 65 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 50 54 52 | IS_ERR(newname))......return.PTR |
f2e0 | 5f 45 52 52 28 6e 65 77 6e 61 6d 65 29 3b 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 6e | _ERR(newname);....}.else.{.....n |
f300 | 65 77 6e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 7d 0a 09 09 09 64 6f 77 6e 5f 77 72 69 74 | ewname.=.NULL;....}....down_writ |
f320 | 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6f 6c 64 6e 61 | e(&server->auth_rwsem);....oldna |
f340 | 6d 65 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 3b 0a 09 | me.=.server->auth.object_name;.. |
f360 | 09 09 6f 6c 64 6e 61 6d 65 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 | ..oldnamelen.=.server->auth.obje |
f380 | 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 6f 6c 64 70 72 69 76 61 74 65 20 3d 20 73 65 72 | ct_name_len;....oldprivate.=.ser |
f3a0 | 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 3b 0a 09 09 09 6f 6c 64 70 72 69 76 61 74 65 6c 65 6e | ver->priv.data;....oldprivatelen |
f3c0 | 20 3d 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e | .=.server->priv.len;....server-> |
f3e0 | 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 75 73 65 72 2e 61 75 74 68 5f 74 79 70 65 3b | auth.auth_type.=.user.auth_type; |
f400 | 0a 09 09 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e | ....server->auth.object_name_len |
f420 | 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 73 65 72 76 | .=.user.object_name_len;....serv |
f440 | 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 20 3d 20 6e 65 77 6e 61 6d 65 3b 0a | er->auth.object_name.=.newname;. |
f460 | 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 30 3b 0a 09 09 09 73 65 72 76 | ...server->priv.len.=.0;....serv |
f480 | 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 75 70 5f 77 72 69 74 | er->priv.data.=.NULL;....up_writ |
f4a0 | 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6b 66 72 65 65 | e(&server->auth_rwsem);....kfree |
f4c0 | 28 6f 6c 64 70 72 69 76 61 74 65 29 3b 0a 09 09 09 6b 66 72 65 65 28 6f 6c 64 6e 61 6d 65 29 3b | (oldprivate);....kfree(oldname); |
f4e0 | 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 | ....return.0;...}..#ifdef.CONFIG |
f500 | 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 | _COMPAT..case.NCP_IOC_GETPRIVATE |
f520 | 44 41 54 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 | DATA_32:.#endif..case.NCP_IOC_GE |
f540 | 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f | TPRIVATEDATA:...{....struct.ncp_ |
f560 | 70 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 73 69 7a 65 5f | privatedata_ioctl.user;....size_ |
f580 | 74 20 6f 75 74 6c 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 | t.outl;..#ifdef.CONFIG_COMPAT... |
f5a0 | 09 69 66 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 | .if.(cmd.==.NCP_IOC_GETPRIVATEDA |
f5c0 | 54 41 5f 33 32 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 | TA_32).{.....struct.compat_ncp_p |
f5e0 | 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 | rivatedata_ioctl.user32;.....if. |
f600 | 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 | (copy_from_user(&user32,.argp,.s |
f620 | 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 | izeof(user32)))......return.-EFA |
f640 | 55 4c 54 3b 0a 09 09 09 09 75 73 65 72 2e 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6c 65 6e 3b 0a | ULT;.....user.len.=.user32.len;. |
f660 | 09 09 09 09 75 73 65 72 2e 64 61 74 61 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 | ....user.data.=.compat_ptr(user3 |
f680 | 32 2e 64 61 74 61 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 | 2.data);....}.else.#endif....if. |
f6a0 | 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a | (copy_from_user(&user,.argp,.siz |
f6c0 | 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a | eof(user))).....return.-EFAULT;. |
f6e0 | 0a 09 09 09 64 6f 77 6e 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 | ....down_read(&server->auth_rwse |
f700 | 6d 29 3b 0a 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 75 73 65 72 2e | m);....outl.=.user.len;....user. |
f720 | 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 69 66 20 28 6f | len.=.server->priv.len;....if.(o |
f740 | 75 74 6c 20 3e 20 75 73 65 72 2e 6c 65 6e 29 20 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6c 65 6e 3b | utl.>.user.len).outl.=.user.len; |
f760 | 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b 0a 09 | ....result.=.0;....if.(outl).{.. |
f780 | 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 75 73 65 72 2e 64 61 74 61 2c 0a 09 | ...if.(copy_to_user(user.data,.. |
f7a0 | 09 09 09 09 09 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 2c 0a 09 09 09 09 09 09 20 | ......server->priv.data,........ |
f7c0 | 6f 75 74 6c 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 | outl))......result.=.-EFAULT;... |
f7e0 | 09 7d 0a 09 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 | .}....up_read(&server->auth_rwse |
f800 | 6d 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 09 09 72 65 74 75 72 6e 20 72 65 | m);....if.(result).....return.re |
f820 | 73 75 6c 74 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 | sult;.#ifdef.CONFIG_COMPAT....if |
f840 | 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 54 41 5f | .(cmd.==.NCP_IOC_GETPRIVATEDATA_ |
f860 | 33 32 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 | 32).{.....struct.compat_ncp_priv |
f880 | 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 75 73 65 72 33 32 | atedata_ioctl.user32;.....user32 |
f8a0 | 2e 6c 65 6e 20 3d 20 75 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 09 75 73 65 72 33 32 2e 64 61 74 61 | .len.=.user.len;.....user32.data |
f8c0 | 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 20 75 73 65 72 2e 64 61 74 61 3b 0a 09 09 | .=.(unsigned.long).user.data;... |
f8e0 | 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 33 32 | ..if.(copy_to_user(argp,.&user32 |
f900 | 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d | ,.sizeof(user32)))......return.- |
f920 | 45 46 41 55 4c 54 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 | EFAULT;....}.else.#endif....if.( |
f940 | 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 | copy_to_user(argp,.&user,.sizeof |
f960 | 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 | (user))).....return.-EFAULT;.... |
f980 | 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f | .return.0;...}..#ifdef.CONFIG_CO |
f9a0 | 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 | MPAT..case.NCP_IOC_SETPRIVATEDAT |
f9c0 | 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 | A_32:.#endif..case.NCP_IOC_SETPR |
f9e0 | 49 56 41 54 45 44 41 54 41 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 70 72 69 | IVATEDATA:...{....struct.ncp_pri |
fa00 | 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 76 6f 69 64 2a 20 6e 65 | vatedata_ioctl.user;....void*.ne |
fa20 | 77 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6c 64 6c 65 | w;....void*.old;....size_t.oldle |
fa40 | 6e 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 20 28 | n;..#ifdef.CONFIG_COMPAT....if.( |
fa60 | 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 41 5f 33 32 | cmd.==.NCP_IOC_SETPRIVATEDATA_32 |
fa80 | 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 | ).{.....struct.compat_ncp_privat |
faa0 | 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 28 63 6f 70 79 | edata_ioctl.user32;.....if.(copy |
fac0 | 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 | _from_user(&user32,.argp,.sizeof |
fae0 | 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a | (user32)))......return.-EFAULT;. |
fb00 | 09 09 09 09 75 73 65 72 2e 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6c 65 6e 3b 0a 09 09 09 09 75 | ....user.len.=.user32.len;.....u |
fb20 | 73 65 72 2e 64 61 74 61 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 32 2e 64 61 74 | ser.data.=.compat_ptr(user32.dat |
fb40 | 61 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 63 6f 70 79 | a);....}.else.#endif....if.(copy |
fb60 | 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 | _from_user(&user,.argp,.sizeof(u |
fb80 | 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 09 69 | ser))).....return.-EFAULT;.....i |
fba0 | 66 20 28 75 73 65 72 2e 6c 65 6e 20 3e 20 4e 43 50 5f 50 52 49 56 41 54 45 5f 44 41 54 41 5f 4d | f.(user.len.>.NCP_PRIVATE_DATA_M |
fbc0 | 41 58 5f 4c 45 4e 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 09 69 | AX_LEN).....return.-ENOMEM;....i |
fbe0 | 66 20 28 75 73 65 72 2e 6c 65 6e 29 20 7b 0a 09 09 09 09 6e 65 77 20 3d 20 6d 65 6d 64 75 70 5f | f.(user.len).{.....new.=.memdup_ |
fc00 | 75 73 65 72 28 75 73 65 72 2e 64 61 74 61 2c 20 75 73 65 72 2e 6c 65 6e 29 3b 0a 09 09 09 09 69 | user(user.data,.user.len);.....i |
fc20 | 66 20 28 49 53 5f 45 52 52 28 6e 65 77 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 50 54 52 5f | f.(IS_ERR(new))......return.PTR_ |
fc40 | 45 52 52 28 6e 65 77 29 3b 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 6e 65 77 20 3d 20 | ERR(new);....}.else.{.....new.=. |
fc60 | 4e 55 4c 4c 3b 0a 09 09 09 7d 0a 09 09 09 64 6f 77 6e 5f 77 72 69 74 65 28 26 73 65 72 76 65 72 | NULL;....}....down_write(&server |
fc80 | 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6f 6c 64 20 3d 20 73 65 72 76 65 72 2d 3e | ->auth_rwsem);....old.=.server-> |
fca0 | 70 72 69 76 2e 64 61 74 61 3b 0a 09 09 09 6f 6c 64 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 70 | priv.data;....oldlen.=.server->p |
fcc0 | 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 75 | riv.len;....server->priv.len.=.u |
fce0 | 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 | ser.len;....server->priv.data.=. |
fd00 | 6e 65 77 3b 0a 09 09 09 75 70 5f 77 72 69 74 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 | new;....up_write(&server->auth_r |
fd20 | 77 73 65 6d 29 3b 0a 09 09 09 6b 66 72 65 65 28 6f 6c 64 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 | wsem);....kfree(old);....return. |
fd40 | 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a | 0;...}..#ifdef.CONFIG_NCPFS_NLS. |
fd60 | 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 43 48 41 52 53 45 54 53 3a 0a 09 09 72 65 74 | .case.NCP_IOC_SETCHARSETS:...ret |
fd80 | 75 72 6e 20 6e 63 70 5f 73 65 74 5f 63 68 61 72 73 65 74 73 28 73 65 72 76 65 72 2c 20 61 72 67 | urn.ncp_set_charsets(server,.arg |
fda0 | 70 29 3b 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 43 48 41 52 53 45 54 53 3a 0a | p);...case.NCP_IOC_GETCHARSETS:. |
fdc0 | 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 63 68 61 72 73 65 74 73 28 73 65 72 76 65 72 | ..return.ncp_get_charsets(server |
fde0 | 2c 20 61 72 67 70 29 3b 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 | ,.argp);..#endif./*.CONFIG_NCPFS |
fe00 | 5f 4e 4c 53 20 2a 2f 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 44 45 4e 54 52 59 | _NLS.*/...case.NCP_IOC_SETDENTRY |
fe20 | 54 54 4c 3a 0a 09 09 7b 0a 09 09 09 75 5f 69 6e 74 33 32 5f 74 20 75 73 65 72 3b 0a 0a 09 09 09 | TTL:...{....u_int32_t.user;..... |
fe40 | 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 | if.(copy_from_user(&user,.argp,. |
fe60 | 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c | sizeof(user))).....return.-EFAUL |
fe80 | 54 3b 0a 09 09 09 2f 2a 20 32 30 20 73 65 63 73 20 61 74 20 6d 6f 73 74 2e 2e 2e 20 2a 2f 0a 09 | T;..../*.20.secs.at.most....*/.. |
fea0 | 09 09 69 66 20 28 75 73 65 72 20 3e 20 32 30 30 30 30 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d | ..if.(user.>.20000).....return.- |
fec0 | 45 49 4e 56 41 4c 3b 0a 09 09 09 75 73 65 72 20 3d 20 28 75 73 65 72 20 2a 20 48 5a 29 20 2f 20 | EINVAL;....user.=.(user.*.HZ)./. |
fee0 | 31 30 30 30 3b 0a 09 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 73 65 72 76 65 72 2d 3e 64 65 6e | 1000;....atomic_set(&server->den |
ff00 | 74 72 79 5f 74 74 6c 2c 20 75 73 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d | try_ttl,.user);....return.0;...} |
ff20 | 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 44 45 4e 54 52 59 54 54 4c 3a 0a 09 09 | ...case.NCP_IOC_GETDENTRYTTL:... |
ff40 | 7b 0a 09 09 09 75 5f 69 6e 74 33 32 5f 74 20 75 73 65 72 20 3d 20 28 61 74 6f 6d 69 63 5f 72 65 | {....u_int32_t.user.=.(atomic_re |
ff60 | 61 64 28 26 73 65 72 76 65 72 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 29 20 2a 20 31 30 30 30 29 20 | ad(&server->dentry_ttl).*.1000). |
ff80 | 2f 20 48 5a 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 | /.HZ;....if.(copy_to_user(argp,. |
ffa0 | 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e | &user,.sizeof(user))).....return |
ffc0 | 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 09 7d 0a 09 | .-EFAULT;....return.0;...}...}.. |
ffe0 | 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 7d 0a 0a 6c 6f 6e 67 20 6e 63 70 5f 69 6f 63 74 | return.-EINVAL;.}..long.ncp_ioct |
10000 | 6c 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 70 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e | l(struct.file.*filp,.unsigned.in |
10020 | 74 20 63 6d 64 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 67 29 0a 7b 0a 09 73 74 72 | t.cmd,.unsigned.long.arg).{..str |
10040 | 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 | uct.inode.*inode.=.file_inode(fi |
10060 | 6c 70 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 | lp);..struct.ncp_server.*server. |
10080 | 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 6b 75 69 64 5f 74 20 75 69 64 | =.NCP_SERVER(inode);..kuid_t.uid |
100a0 | 20 3d 20 63 75 72 72 65 6e 74 5f 75 69 64 28 29 3b 0a 09 69 6e 74 20 6e 65 65 64 5f 64 72 6f 70 | .=.current_uid();..int.need_drop |
100c0 | 5f 77 72 69 74 65 20 3d 20 30 3b 0a 09 6c 6f 6e 67 20 72 65 74 3b 0a 0a 09 73 77 69 74 63 68 20 | _write.=.0;..long.ret;...switch. |
100e0 | 28 63 6d 64 29 20 7b 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 43 48 41 52 53 45 54 | (cmd).{..case.NCP_IOC_SETCHARSET |
10100 | 53 3a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f 4c 4f 47 47 45 44 5f 49 4e 3a | S:..case.NCP_IOC_CONN_LOGGED_IN: |
10120 | 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 4f 4f 54 3a 0a 09 09 69 66 20 28 21 63 | ..case.NCP_IOC_SETROOT:...if.(!c |
10140 | 61 70 61 62 6c 65 28 43 41 50 5f 53 59 53 5f 41 44 4d 49 4e 29 29 20 7b 0a 09 09 09 72 65 74 20 | apable(CAP_SYS_ADMIN)).{....ret. |
10160 | 3d 20 2d 45 50 45 52 4d 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 62 72 65 | =.-EPERM;....goto.out;...}...bre |
10180 | 61 6b 3b 0a 09 7d 0a 09 69 66 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f | ak;..}..if.(!uid_eq(server->m.mo |
101a0 | 75 6e 74 65 64 5f 75 69 64 2c 20 75 69 64 29 29 20 7b 0a 09 09 73 77 69 74 63 68 20 28 63 6d 64 | unted_uid,.uid)).{...switch.(cmd |
101c0 | 29 20 7b 0a 09 09 2f 2a 0a 09 09 20 2a 20 4f 6e 6c 79 20 6d 6f 75 6e 74 20 6f 77 6e 65 72 20 63 | ).{.../*....*.Only.mount.owner.c |
101e0 | 61 6e 20 69 73 73 75 65 20 74 68 65 73 65 20 69 6f 63 74 6c 73 2e 20 20 49 6e 66 6f 72 6d 61 74 | an.issue.these.ioctls...Informat |
10200 | 69 6f 6e 0a 09 09 20 2a 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 75 74 68 65 6e 74 69 63 61 | ion....*.necessary.to.authentica |
10220 | 74 65 20 74 6f 20 6f 74 68 65 72 20 4e 44 53 20 73 65 72 76 65 72 73 20 61 72 65 0a 09 09 20 2a | te.to.other.NDS.servers.are....* |
10240 | 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 | .stored.here.....*/...case.NCP_I |
10260 | 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 | OC_GETOBJECTNAME:...case.NCP_IOC |
10280 | 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 | _SETOBJECTNAME:...case.NCP_IOC_G |
102a0 | 45 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 | ETPRIVATEDATA:...case.NCP_IOC_SE |
102c0 | 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 | TPRIVATEDATA:.#ifdef.CONFIG_COMP |
102e0 | 41 54 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f | AT...case.NCP_IOC_GETOBJECTNAME_ |
10300 | 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 | 32:...case.NCP_IOC_SETOBJECTNAME |
10320 | 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 | _32:...case.NCP_IOC_GETPRIVATEDA |
10340 | 54 41 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 | TA_32:...case.NCP_IOC_SETPRIVATE |
10360 | 44 41 54 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 09 09 72 65 74 20 3d 20 2d 45 41 43 43 45 53 | DATA_32:.#endif....ret.=.-EACCES |
10380 | 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 2f 2a 0a 09 09 20 2a 20 54 68 65 73 65 20 72 | ;....goto.out;.../*....*.These.r |
103a0 | 65 71 75 69 72 65 20 77 72 69 74 65 20 61 63 63 65 73 73 20 6f 6e 20 74 68 65 20 69 6e 6f 64 65 | equire.write.access.on.the.inode |
103c0 | 20 69 66 20 75 73 65 72 20 69 64 0a 09 09 20 2a 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 2e | .if.user.id....*.does.not.match. |
103e0 | 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74 20 77 72 69 74 65 20 74 6f | ..Note.that.they.do.not.write.to |
10400 | 20 74 68 65 0a 09 09 20 2a 20 66 69 6c 65 2e 2e 2e 20 20 42 75 74 20 6f 6c 64 20 63 6f 64 65 20 | .the....*.file.....But.old.code. |
10420 | 64 69 64 20 6d 6e 74 5f 77 61 6e 74 5f 77 72 69 74 65 2c 20 73 6f 20 49 20 6b 65 65 70 0a 09 09 | did.mnt_want_write,.so.I.keep... |
10440 | 20 2a 20 69 74 20 61 73 20 69 73 2e 20 20 4f 66 20 63 6f 75 72 73 65 20 6e 6f 74 20 66 6f 72 20 | .*.it.as.is...Of.course.not.for. |
10460 | 6d 6f 75 6e 74 70 6f 69 6e 74 20 6f 77 6e 65 72 2c 20 61 73 0a 09 09 20 2a 20 74 68 61 74 20 62 | mountpoint.owner,.as....*.that.b |
10480 | 72 65 61 6b 73 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 75 6e 74 73 20 61 6c 74 6f 67 65 74 68 65 | reaks.read-only.mounts.altogethe |
104a0 | 72 20 61 73 20 6e 63 70 6d 6f 75 6e 74 0a 09 09 20 2a 20 6e 65 65 64 73 20 77 6f 72 6b 69 6e 67 | r.as.ncpmount....*.needs.working |
104c0 | 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 20 61 6e 64 0a 09 09 20 2a 20 4e 43 50 | .NCP_IOC_NCPREQUEST.and....*.NCP |
104e0 | 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 2e 20 20 53 6f 6d 65 20 6f 66 20 74 68 65 73 65 | _IOC_GET_FS_INFO...Some.of.these |
10500 | 20 63 6f 64 65 73 20 28 73 65 74 64 65 6e 74 72 79 74 74 6c 2c 0a 09 09 20 2a 20 73 69 67 6e 69 | .codes.(setdentryttl,....*.signi |
10520 | 6e 69 74 2c 20 73 65 74 73 69 67 6e 77 61 6e 74 65 64 29 20 73 68 6f 75 6c 64 20 62 65 20 70 72 | nit,.setsignwanted).should.be.pr |
10540 | 6f 62 61 62 6c 79 20 72 65 73 74 72 69 63 74 65 64 0a 09 09 20 2a 20 74 6f 20 6f 77 6e 65 72 20 | obably.restricted....*.to.owner. |
10560 | 6f 6e 6c 79 2c 20 6f 72 20 65 76 65 6e 20 6d 6f 72 65 20 74 6f 20 43 41 50 5f 53 59 53 5f 41 44 | only,.or.even.more.to.CAP_SYS_AD |
10580 | 4d 49 4e 29 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 | MIN).....*/...case.NCP_IOC_GET_F |
105a0 | 53 5f 49 4e 46 4f 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e | S_INFO:...case.NCP_IOC_GET_FS_IN |
105c0 | 46 4f 5f 56 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 | FO_V2:...case.NCP_IOC_NCPREQUEST |
105e0 | 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 44 45 4e 54 52 59 54 54 4c 3a 0a 09 | :...case.NCP_IOC_SETDENTRYTTL:.. |
10600 | 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 49 4e 49 54 3a 0a 09 09 63 61 73 65 20 | .case.NCP_IOC_SIGN_INIT:...case. |
10620 | 4e 43 50 5f 49 4f 43 5f 4c 4f 43 4b 55 4e 4c 4f 43 4b 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 | NCP_IOC_LOCKUNLOCK:...case.NCP_I |
10640 | 4f 43 5f 53 45 54 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 | OC_SET_SIGN_WANTED:.#ifdef.CONFI |
10660 | 47 5f 43 4f 4d 50 41 54 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 | G_COMPAT...case.NCP_IOC_GET_FS_I |
10680 | 4e 46 4f 5f 56 32 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 | NFO_V2_32:...case.NCP_IOC_NCPREQ |
106a0 | 55 45 53 54 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 09 09 72 65 74 20 3d 20 6d 6e 74 5f 77 61 6e | UEST_32:.#endif....ret.=.mnt_wan |
106c0 | 74 5f 77 72 69 74 65 5f 66 69 6c 65 28 66 69 6c 70 29 3b 0a 09 09 09 69 66 20 28 72 65 74 29 0a | t_write_file(filp);....if.(ret). |
106e0 | 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 6e 65 65 64 5f 64 72 6f 70 5f 77 72 69 74 65 | ....goto.out;....need_drop_write |
10700 | 20 3d 20 31 3b 0a 09 09 09 72 65 74 20 3d 20 69 6e 6f 64 65 5f 70 65 72 6d 69 73 73 69 6f 6e 28 | .=.1;....ret.=.inode_permission( |
10720 | 69 6e 6f 64 65 2c 20 4d 41 59 5f 57 52 49 54 45 29 3b 0a 09 09 09 69 66 20 28 72 65 74 29 0a 09 | inode,.MAY_WRITE);....if.(ret).. |
10740 | 09 09 09 67 6f 74 6f 20 6f 75 74 44 72 6f 70 57 72 69 74 65 3b 0a 09 09 09 62 72 65 61 6b 3b 0a | ...goto.outDropWrite;....break;. |
10760 | 09 09 2f 2a 0a 09 09 20 2a 20 52 65 61 64 20 61 63 63 65 73 73 20 72 65 71 75 69 72 65 64 2e 0a | ../*....*.Read.access.required.. |
10780 | 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 | ...*/...case.NCP_IOC_GETMOUNTUID |
107a0 | 31 36 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 | 16:...case.NCP_IOC_GETMOUNTUID32 |
107c0 | 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 36 34 3a 0a | :...case.NCP_IOC_GETMOUNTUID64:. |
107e0 | 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 52 4f 4f 54 3a 0a 09 09 63 61 73 65 20 4e | ..case.NCP_IOC_GETROOT:...case.N |
10800 | 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 09 72 65 74 20 3d 20 69 6e 6f | CP_IOC_SIGN_WANTED:....ret.=.ino |
10820 | 64 65 5f 70 65 72 6d 69 73 73 69 6f 6e 28 69 6e 6f 64 65 2c 20 4d 41 59 5f 52 45 41 44 29 3b 0a | de_permission(inode,.MAY_READ);. |
10840 | 09 09 09 69 66 20 28 72 65 74 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 62 72 65 | ...if.(ret).....goto.out;....bre |
10860 | 61 6b 3b 0a 09 09 2f 2a 0a 09 09 20 2a 20 41 6e 79 62 6f 64 79 20 63 61 6e 20 72 65 61 64 20 74 | ak;.../*....*.Anybody.can.read.t |
10880 | 68 65 73 65 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 43 48 | hese.....*/...case.NCP_IOC_GETCH |
108a0 | 41 52 53 45 54 53 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 44 45 4e 54 52 59 | ARSETS:...case.NCP_IOC_GETDENTRY |
108c0 | 54 54 4c 3a 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 2f 2a 20 54 68 72 65 65 20 63 6f 64 65 73 | TTL:...default:.../*.Three.codes |
108e0 | 20 62 65 6c 6f 77 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 20 62 79 20 43 41 50 5f 53 59 53 5f | .below.are.protected.by.CAP_SYS_ |
10900 | 41 44 4d 49 4e 20 61 62 6f 76 65 2e 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 | ADMIN.above..*/...case.NCP_IOC_S |
10920 | 45 54 43 48 41 52 53 45 54 53 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f | ETCHARSETS:...case.NCP_IOC_CONN_ |
10940 | 4c 4f 47 47 45 44 5f 49 4e 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 4f 4f | LOGGED_IN:...case.NCP_IOC_SETROO |
10960 | 54 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 7d 0a 09 72 65 74 20 3d 20 5f 5f 6e 63 70 | T:....break;...}..}..ret.=.__ncp |
10980 | 5f 69 6f 63 74 6c 28 69 6e 6f 64 65 2c 20 63 6d 64 2c 20 61 72 67 29 3b 0a 6f 75 74 44 72 6f 70 | _ioctl(inode,.cmd,.arg);.outDrop |
109a0 | 57 72 69 74 65 3a 0a 09 69 66 20 28 6e 65 65 64 5f 64 72 6f 70 5f 77 72 69 74 65 29 0a 09 09 6d | Write:..if.(need_drop_write)...m |
109c0 | 6e 74 5f 64 72 6f 70 5f 77 72 69 74 65 5f 66 69 6c 65 28 66 69 6c 70 29 3b 0a 6f 75 74 3a 0a 09 | nt_drop_write_file(filp);.out:.. |
109e0 | 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d | return.ret;.}..#ifdef.CONFIG_COM |
10a00 | 50 41 54 0a 6c 6f 6e 67 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 | PAT.long.ncp_compat_ioctl(struct |
10a20 | 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 6d 64 2c 20 75 | .file.*file,.unsigned.int.cmd,.u |
10a40 | 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 67 29 0a 7b 0a 09 6c 6f 6e 67 20 72 65 74 3b 0a 0a | nsigned.long.arg).{..long.ret;.. |
10a60 | 09 61 72 67 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 20 63 6f 6d 70 61 74 5f 70 74 | .arg.=.(unsigned.long).compat_pt |
10a80 | 72 28 61 72 67 29 3b 0a 09 72 65 74 20 3d 20 6e 63 70 5f 69 6f 63 74 6c 28 66 69 6c 65 2c 20 63 | r(arg);..ret.=.ncp_ioctl(file,.c |
10aa0 | 6d 64 2c 20 61 72 67 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 23 65 6e 64 69 66 0a | md,.arg);..return.ret;.}.#endif. |
10ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10c00 | 6e 63 70 66 73 2f 6d 6d 61 70 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/mmap.c.................... |
10c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10c60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
10c80 | 30 30 30 35 34 34 31 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 32 37 30 00 20 30 00 00 00 | 0005441.13023323142.012270..0... |
10ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10d00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
10d20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
10d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
10e00 | 2f 2a 0a 20 2a 20 20 6d 6d 61 70 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 | /*..*..mmap.c..*..*..Copyright.( |
10e20 | 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 | C).1995,.1996.by.Volker.Lendecke |
10e40 | 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 | ..*..Modified.1997.Peter.Waltenb |
10e60 | 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 | erg,.Bill.Hawes,.David.Woodhouse |
10e80 | 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 | .for.2.1.dcache..*..*/..#include |
10ea0 | 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f | .<linux/stat.h>.#include.<linux/ |
10ec0 | 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 | time.h>.#include.<linux/kernel.h |
10ee0 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 67 66 70 2e 68 3e 0a 23 69 6e 63 6c 75 64 | >.#include.<linux/gfp.h>.#includ |
10f00 | 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 | e.<linux/mm.h>.#include.<linux/s |
10f20 | 68 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 | hm.h>.#include.<linux/errno.h>.# |
10f40 | 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 61 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | include.<linux/mman.h>.#include. |
10f60 | 3c 6c 69 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | <linux/string.h>.#include.<linux |
10f80 | 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 65 6d 63 6f 6e | /fcntl.h>.#include.<linux/memcon |
10fa0 | 74 72 6f 6c 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 | trol.h>..#include.<asm/uaccess.h |
10fc0 | 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 2f 2a 0a 20 2a 20 46 69 | >..#include."ncp_fs.h"../*..*.Fi |
10fe0 | 6c 6c 20 69 6e 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 70 61 67 65 20 66 6f 72 20 6d 6d 61 70 | ll.in.the.supplied.page.for.mmap |
11000 | 0a 20 2a 20 58 58 58 3a 20 68 6f 77 20 61 72 65 20 77 65 20 65 78 63 6c 75 64 69 6e 67 20 74 72 | ..*.XXX:.how.are.we.excluding.tr |
11020 | 75 6e 63 61 74 65 2f 69 6e 76 61 6c 69 64 61 74 65 20 68 65 72 65 3f 20 4d 61 79 62 65 20 6e 65 | uncate/invalidate.here?.Maybe.ne |
11040 | 65 64 20 74 6f 20 6c 6f 63 6b 0a 20 2a 20 70 61 67 65 3f 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 | ed.to.lock..*.page?..*/.static.i |
11060 | 6e 74 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 5f 66 61 75 6c 74 28 73 74 72 75 63 74 20 76 6d | nt.ncp_file_mmap_fault(struct.vm |
11080 | 5f 61 72 65 61 5f 73 74 72 75 63 74 20 2a 61 72 65 61 2c 0a 09 09 09 09 09 73 74 72 75 63 74 20 | _area_struct.*area,......struct. |
110a0 | 76 6d 5f 66 61 75 6c 74 20 2a 76 6d 66 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a | vm_fault.*vmf).{..struct.inode.* |
110c0 | 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 61 72 65 61 2d 3e 76 6d 5f 66 69 6c 65 | inode.=.file_inode(area->vm_file |
110e0 | 29 3b 0a 09 63 68 61 72 20 2a 70 67 5f 61 64 64 72 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 | );..char.*pg_addr;..unsigned.int |
11100 | 20 61 6c 72 65 61 64 79 5f 72 65 61 64 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 6f 75 | .already_read;..unsigned.int.cou |
11120 | 6e 74 3b 0a 09 69 6e 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 70 6f 73 3b 20 2f 2a 20 58 | nt;..int.bufsize;..int.pos;./*.X |
11140 | 58 58 3a 20 6c 6f 66 66 5f 74 20 3f 20 2a 2f 0a 0a 09 2f 2a 0a 09 20 2a 20 6e 63 70 66 73 20 68 | XX:.loff_t.?.*/.../*...*.ncpfs.h |
11160 | 61 73 20 6e 6f 74 68 69 6e 67 20 61 67 61 69 6e 73 74 20 68 69 67 68 20 70 61 67 65 73 20 61 73 | as.nothing.against.high.pages.as |
11180 | 20 6c 6f 6e 67 0a 09 20 2a 20 61 73 20 72 65 63 76 6d 73 67 20 61 6e 64 20 6d 65 6d 73 65 74 20 | .long...*.as.recvmsg.and.memset. |
111a0 | 77 6f 72 6b 73 20 6f 6e 20 69 74 0a 09 20 2a 2f 0a 09 76 6d 66 2d 3e 70 61 67 65 20 3d 20 61 6c | works.on.it...*/..vmf->page.=.al |
111c0 | 6c 6f 63 5f 70 61 67 65 28 47 46 50 5f 48 49 47 48 55 53 45 52 29 3b 0a 09 69 66 20 28 21 76 6d | loc_page(GFP_HIGHUSER);..if.(!vm |
111e0 | 66 2d 3e 70 61 67 65 29 0a 09 09 72 65 74 75 72 6e 20 56 4d 5f 46 41 55 4c 54 5f 4f 4f 4d 3b 0a | f->page)...return.VM_FAULT_OOM;. |
11200 | 09 70 67 5f 61 64 64 72 20 3d 20 6b 6d 61 70 28 76 6d 66 2d 3e 70 61 67 65 29 3b 0a 09 70 6f 73 | .pg_addr.=.kmap(vmf->page);..pos |
11220 | 20 3d 20 76 6d 66 2d 3e 70 67 6f 66 66 20 3c 3c 20 50 41 47 45 5f 53 48 49 46 54 3b 0a 0a 09 63 | .=.vmf->pgoff.<<.PAGE_SHIFT;...c |
11240 | 6f 75 6e 74 20 3d 20 50 41 47 45 5f 53 49 5a 45 3b 0a 09 2f 2a 20 77 68 61 74 20 77 65 20 63 61 | ount.=.PAGE_SIZE;../*.what.we.ca |
11260 | 6e 20 72 65 61 64 20 69 6e 20 6f 6e 65 20 67 6f 20 2a 2f 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e | n.read.in.one.go.*/..bufsize.=.N |
11280 | 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a | CP_SERVER(inode)->buffer_size;.. |
112a0 | 09 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3d 20 30 3b 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 | .already_read.=.0;..if.(ncp_make |
112c0 | 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 52 44 4f 4e 4c 59 29 20 3e 3d 20 30 29 20 7b 0a 09 | _open(inode,.O_RDONLY).>=.0).{.. |
112e0 | 09 77 68 69 6c 65 20 28 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3c 20 63 6f 75 6e 74 29 20 7b 0a | .while.(already_read.<.count).{. |
11300 | 09 09 09 69 6e 74 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 09 69 6e 74 20 74 6f | ...int.read_this_time;....int.to |
11320 | 5f 72 65 61 64 3b 0a 0a 09 09 09 74 6f 5f 72 65 61 64 20 3d 20 62 75 66 73 69 7a 65 20 2d 20 28 | _read;.....to_read.=.bufsize.-.( |
11340 | 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 3b 0a 0a 09 09 09 74 6f 5f 72 65 61 64 20 3d 20 6d 69 | pos.%.bufsize);.....to_read.=.mi |
11360 | 6e 5f 74 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 74 6f 5f 72 65 61 64 2c 20 63 6f 75 6e 74 | n_t(unsigned.int,.to_read,.count |
11380 | 20 2d 20 61 6c 72 65 61 64 79 5f 72 65 61 64 29 3b 0a 0a 09 09 09 69 66 20 28 6e 63 70 5f 72 65 | .-.already_read);.....if.(ncp_re |
113a0 | 61 64 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 | ad_kernel(NCP_SERVER(inode),.... |
113c0 | 09 20 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e | ......NCP_FINFO(inode)->file_han |
113e0 | 64 6c 65 2c 0a 09 09 09 09 20 20 20 20 20 70 6f 73 2c 20 74 6f 5f 72 65 61 64 2c 0a 09 09 09 09 | dle,..........pos,.to_read,..... |
11400 | 20 20 20 20 20 70 67 5f 61 64 64 72 20 2b 20 61 6c 72 65 61 64 79 5f 72 65 61 64 2c 0a 09 09 09 | .....pg_addr.+.already_read,.... |
11420 | 09 20 20 20 20 20 26 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 29 20 21 3d 20 30 29 20 7b 0a 09 | ......&read_this_time).!=.0).{.. |
11440 | 09 09 09 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 70 | ...read_this_time.=.0;....}....p |
11460 | 6f 73 20 2b 3d 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 09 61 6c 72 65 61 64 79 | os.+=.read_this_time;....already |
11480 | 5f 72 65 61 64 20 2b 3d 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 09 69 66 20 | _read.+=.read_this_time;.....if. |
114a0 | 28 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 20 3c 20 74 6f 5f 72 65 61 64 29 20 7b 0a 09 09 09 | (read_this_time.<.to_read).{.... |
114c0 | 09 62 72 65 61 6b 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f | .break;....}...}...ncp_inode_clo |
114e0 | 73 65 28 69 6e 6f 64 65 29 3b 0a 0a 09 7d 0a 0a 09 69 66 20 28 61 6c 72 65 61 64 79 5f 72 65 61 | se(inode);...}...if.(already_rea |
11500 | 64 20 3c 20 50 41 47 45 5f 53 49 5a 45 29 0a 09 09 6d 65 6d 73 65 74 28 70 67 5f 61 64 64 72 20 | d.<.PAGE_SIZE)...memset(pg_addr. |
11520 | 2b 20 61 6c 72 65 61 64 79 5f 72 65 61 64 2c 20 30 2c 20 50 41 47 45 5f 53 49 5a 45 20 2d 20 61 | +.already_read,.0,.PAGE_SIZE.-.a |
11540 | 6c 72 65 61 64 79 5f 72 65 61 64 29 3b 0a 09 66 6c 75 73 68 5f 64 63 61 63 68 65 5f 70 61 67 65 | lready_read);..flush_dcache_page |
11560 | 28 76 6d 66 2d 3e 70 61 67 65 29 3b 0a 09 6b 75 6e 6d 61 70 28 76 6d 66 2d 3e 70 61 67 65 29 3b | (vmf->page);..kunmap(vmf->page); |
11580 | 0a 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 49 20 75 6e 64 65 72 73 74 61 6e 64 20 6e 63 70 5f 72 65 | .../*...*.If.I.understand.ncp_re |
115a0 | 61 64 5f 6b 65 72 6e 65 6c 28 29 20 70 72 6f 70 65 72 6c 79 2c 20 74 68 65 20 61 62 6f 76 65 20 | ad_kernel().properly,.the.above. |
115c0 | 61 6c 77 61 79 73 0a 09 20 2a 20 66 65 74 63 68 65 73 20 66 72 6f 6d 20 74 68 65 20 6e 65 74 77 | always...*.fetches.from.the.netw |
115e0 | 6f 72 6b 2c 20 68 65 72 65 20 74 68 65 20 61 6e 61 6c 6f 67 75 65 20 6f 66 20 64 69 73 6b 2e 0a | ork,.here.the.analogue.of.disk.. |
11600 | 09 20 2a 20 2d 2d 20 6e 79 63 0a 09 20 2a 2f 0a 09 63 6f 75 6e 74 5f 76 6d 5f 65 76 65 6e 74 28 | ..*.--.nyc...*/..count_vm_event( |
11620 | 50 47 4d 41 4a 46 41 55 4c 54 29 3b 0a 09 6d 65 6d 5f 63 67 72 6f 75 70 5f 63 6f 75 6e 74 5f 76 | PGMAJFAULT);..mem_cgroup_count_v |
11640 | 6d 5f 65 76 65 6e 74 28 61 72 65 61 2d 3e 76 6d 5f 6d 6d 2c 20 50 47 4d 41 4a 46 41 55 4c 54 29 | m_event(area->vm_mm,.PGMAJFAULT) |
11660 | 3b 0a 09 72 65 74 75 72 6e 20 56 4d 5f 46 41 55 4c 54 5f 4d 41 4a 4f 52 3b 0a 7d 0a 0a 73 74 61 | ;..return.VM_FAULT_MAJOR;.}..sta |
11680 | 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 76 6d 5f 6f 70 65 72 61 74 69 6f 6e 73 5f 73 | tic.const.struct.vm_operations_s |
116a0 | 74 72 75 63 74 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 20 3d 0a 7b 0a 09 2e 66 61 75 6c 74 20 | truct.ncp_file_mmap.=.{...fault. |
116c0 | 3d 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 5f 66 61 75 6c 74 2c 0a 7d 3b 0a 0a 0a 2f 2a 20 54 | =.ncp_file_mmap_fault,.};.../*.T |
116e0 | 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 61 20 67 65 6e 65 72 61 6c 20 6d 6d 61 70 20 6f | his.is.used.for.a.general.mmap.o |
11700 | 66 20 61 20 6e 63 70 20 66 69 6c 65 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 6d 61 70 28 73 74 72 | f.a.ncp.file.*/.int.ncp_mmap(str |
11720 | 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 76 6d 5f 61 72 65 61 5f 73 | uct.file.*file,.struct.vm_area_s |
11740 | 74 72 75 63 74 20 2a 76 6d 61 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f | truct.*vma).{..struct.inode.*ino |
11760 | 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 0a 09 6e 63 70 5f 64 62 | de.=.file_inode(file);....ncp_db |
11780 | 67 28 31 2c 20 22 63 61 6c 6c 65 64 5c 6e 22 29 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e | g(1,."called\n");...if.(!ncp_con |
117a0 | 6e 5f 76 61 6c 69 64 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 29 29 0a 09 09 72 65 | n_valid(NCP_SERVER(inode)))...re |
117c0 | 74 75 72 6e 20 2d 45 49 4f 3b 0a 0a 09 2f 2a 20 6f 6e 6c 79 20 50 41 47 45 5f 43 4f 57 20 6f 72 | turn.-EIO;.../*.only.PAGE_COW.or |
117e0 | 20 72 65 61 64 2d 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6e 6f 77 20 2a 2f 0a 09 69 66 20 | .read-only.supported.now.*/..if. |
11800 | 28 76 6d 61 2d 3e 76 6d 5f 66 6c 61 67 73 20 26 20 56 4d 5f 53 48 41 52 45 44 29 0a 09 09 72 65 | (vma->vm_flags.&.VM_SHARED)...re |
11820 | 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 2f 2a 20 77 65 20 64 6f 20 6e 6f 74 20 73 75 70 70 | turn.-EINVAL;../*.we.do.not.supp |
11840 | 6f 72 74 20 66 69 6c 65 73 20 62 69 67 67 65 72 20 74 68 61 6e 20 34 47 42 2e 2e 2e 20 57 65 20 | ort.files.bigger.than.4GB....We. |
11860 | 65 76 65 6e 74 75 61 6c 6c 79 20 0a 09 20 20 20 73 75 70 70 6f 72 74 73 20 6a 75 73 74 20 34 47 | eventually......supports.just.4G |
11880 | 42 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 76 6d 61 5f 70 61 67 65 73 28 76 6d 61 29 20 2b 20 76 6d | B....*/..if.(vma_pages(vma).+.vm |
118a0 | 61 2d 3e 76 6d 5f 70 67 6f 66 66 0a 09 20 20 20 3e 20 28 31 55 20 3c 3c 20 28 33 32 20 2d 20 50 | a->vm_pgoff.....>.(1U.<<.(32.-.P |
118c0 | 41 47 45 5f 53 48 49 46 54 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 42 49 47 3b 0a 0a 09 | AGE_SHIFT)))...return.-EFBIG;... |
118e0 | 76 6d 61 2d 3e 76 6d 5f 6f 70 73 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 3b 0a 09 66 | vma->vm_ops.=.&ncp_file_mmap;..f |
11900 | 69 6c 65 5f 61 63 63 65 73 73 65 64 28 66 69 6c 65 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d | ile_accessed(file);..return.0;.} |
11920 | 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
119a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
119c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
119e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11a00 | 6e 63 70 66 73 2f 6e 63 70 5f 66 73 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncp_fs.h.................. |
11a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11a60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
11a80 | 30 30 30 35 35 32 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 31 31 00 20 30 00 00 00 | 0005520.13023323142.012611..0... |
11aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11b00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
11b20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
11b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
11c00 | 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 70 5f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 | #include.<linux/ncp_fs.h>.#inclu |
11c20 | 64 65 20 22 6e 63 70 5f 66 73 5f 69 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 | de."ncp_fs_i.h".#include."ncp_fs |
11c40 | 5f 73 62 2e 68 22 0a 0a 23 75 6e 64 65 66 20 4e 43 50 46 53 5f 50 41 52 41 4e 4f 49 41 0a 23 69 | _sb.h"..#undef.NCPFS_PARANOIA.#i |
11c60 | 66 64 65 66 20 4e 43 50 46 53 5f 50 41 52 41 4e 4f 49 41 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f | fdef.NCPFS_PARANOIA.#define.ncp_ |
11c80 | 76 64 62 67 28 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 09 5c 0a 09 70 72 5f 64 65 62 75 67 28 66 | vdbg(fmt,....).....\..pr_debug(f |
11ca0 | 6d 74 2c 20 23 23 5f 5f 56 41 5f 41 52 47 53 5f 5f 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 | mt,.##__VA_ARGS__).#else.#define |
11cc0 | 20 6e 63 70 5f 76 64 62 67 28 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 09 5c 0a 64 6f 20 7b 09 09 | .ncp_vdbg(fmt,....).....\.do.{.. |
11ce0 | 09 09 09 09 09 09 5c 0a 09 69 66 20 28 30 29 09 09 09 09 09 09 09 5c 0a 09 09 70 72 5f 64 65 62 | ......\..if.(0).......\...pr_deb |
11d00 | 75 67 28 66 6d 74 2c 20 23 23 5f 5f 56 41 5f 41 52 47 53 5f 5f 29 3b 09 09 09 5c 0a 7d 20 77 68 | ug(fmt,.##__VA_ARGS__);...\.}.wh |
11d20 | 69 6c 65 20 28 30 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 6e 64 65 66 20 44 45 42 55 47 5f 4e 43 | ile.(0).#endif..#ifndef.DEBUG_NC |
11d40 | 50 0a 23 64 65 66 69 6e 65 20 44 45 42 55 47 5f 4e 43 50 20 30 0a 23 65 6e 64 69 66 0a 0a 23 69 | P.#define.DEBUG_NCP.0.#endif..#i |
11d60 | 66 20 44 45 42 55 47 5f 4e 43 50 20 3e 20 30 20 26 26 20 21 64 65 66 69 6e 65 64 28 44 45 42 55 | f.DEBUG_NCP.>.0.&&.!defined(DEBU |
11d80 | 47 29 0a 23 64 65 66 69 6e 65 20 44 45 42 55 47 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e 65 | G).#define.DEBUG.#endif..#define |
11da0 | 20 6e 63 70 5f 64 62 67 28 6c 65 76 65 6c 2c 20 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 5c 0a 64 | .ncp_dbg(level,.fmt,....)....\.d |
11dc0 | 6f 20 7b 09 09 09 09 09 09 09 09 5c 0a 09 69 66 20 28 6c 65 76 65 6c 20 3c 3d 20 44 45 42 55 47 | o.{........\..if.(level.<=.DEBUG |
11de0 | 5f 4e 43 50 29 09 09 09 09 09 5c 0a 09 09 70 72 5f 64 65 62 75 67 28 66 6d 74 2c 20 23 23 5f 5f | _NCP).....\...pr_debug(fmt,.##__ |
11e00 | 56 41 5f 41 52 47 53 5f 5f 29 3b 09 09 09 5c 0a 7d 20 77 68 69 6c 65 20 28 30 29 0a 0a 23 64 65 | VA_ARGS__);...\.}.while.(0)..#de |
11e20 | 66 69 6e 65 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 20 28 36 2a 48 5a 29 0a | fine.NCP_MAX_RPC_TIMEOUT.(6*HZ). |
11e40 | 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 7b 0a 09 73 74 72 75 63 | ..struct.ncp_entry_info.{..struc |
11e60 | 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 09 69 3b 0a 09 69 6e 6f 5f 74 09 09 09 69 6e 6f | t.nw_info_struct.i;..ino_t...ino |
11e80 | 3b 0a 09 69 6e 74 09 09 09 6f 70 65 6e 65 64 3b 0a 09 69 6e 74 09 09 09 61 63 63 65 73 73 3b 0a | ;..int...opened;..int...access;. |
11ea0 | 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 76 6f 6c 75 6d 65 3b 0a 09 5f 5f 75 38 09 09 09 66 | .unsigned.int..volume;..__u8...f |
11ec0 | 69 6c 65 5f 68 61 6e 64 6c 65 5b 36 5d 3b 0a 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 | ile_handle[6];.};..static.inline |
11ee0 | 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 4e 43 50 5f 53 42 50 28 63 6f 6e 73 | .struct.ncp_server.*NCP_SBP(cons |
11f00 | 74 20 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 72 65 74 | t.struct.super_block.*sb).{..ret |
11f20 | 75 72 6e 20 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 4e 43 | urn.sb->s_fs_info;.}..#define.NC |
11f40 | 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 09 4e 43 50 5f 53 42 50 28 28 69 6e 6f 64 65 29 2d | P_SERVER(inode).NCP_SBP((inode)- |
11f60 | 3e 69 5f 73 62 29 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 73 74 72 75 63 74 20 6e 63 70 5f | >i_sb).static.inline.struct.ncp_ |
11f80 | 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 4e 43 50 5f 46 49 4e 46 4f 28 63 6f 6e 73 74 20 73 74 72 75 | inode_info.*NCP_FINFO(const.stru |
11fa0 | 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 63 6f 6e 74 61 | ct.inode.*inode).{..return.conta |
11fc0 | 69 6e 65 72 5f 6f 66 28 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f | iner_of(inode,.struct.ncp_inode_ |
11fe0 | 69 6e 66 6f 2c 20 76 66 73 5f 69 6e 6f 64 65 29 3b 0a 7d 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 | info,.vfs_inode);.}../*.linux/fs |
12000 | 2f 6e 63 70 66 73 2f 69 6e 6f 64 65 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6e 6f 74 69 66 79 | /ncpfs/inode.c.*/.int.ncp_notify |
12020 | 5f 63 68 61 6e 67 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 | _change(struct.dentry.*,.struct. |
12040 | 69 61 74 74 72 20 2a 29 3b 0a 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 63 70 5f 69 67 65 74 | iattr.*);.struct.inode.*ncp_iget |
12060 | 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 2c 20 73 74 72 75 63 74 20 6e 63 | (struct.super_block.*,.struct.nc |
12080 | 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 | p_entry_info.*);.void.ncp_update |
120a0 | 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 6e 63 | _inode(struct.inode.*,.struct.nc |
120c0 | 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 | p_entry_info.*);.void.ncp_update |
120e0 | 5f 69 6e 6f 64 65 32 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 6e | _inode2(struct.inode.*,.struct.n |
12100 | 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e | cp_entry_info.*);../*.linux/fs/n |
12120 | 63 70 66 73 2f 64 69 72 2e 63 20 2a 2f 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 | cpfs/dir.c.*/.extern.const.struc |
12140 | 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 | t.inode_operations.ncp_dir_inode |
12160 | 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 74 | _operations;.extern.const.struct |
12180 | 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 6f 70 65 72 61 74 69 | .file_operations.ncp_dir_operati |
121a0 | 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 5f | ons;.extern.const.struct.dentry_ |
121c0 | 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 61 74 69 6f 6e 73 | operations.ncp_dentry_operations |
121e0 | 3b 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 73 74 72 75 63 74 20 | ;.int.ncp_conn_logged_in(struct. |
12200 | 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 | super_block.*);.int.ncp_date_dos |
12220 | 32 75 6e 69 78 28 5f 5f 6c 65 31 36 20 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 64 61 74 65 29 3b | 2unix(__le16.time,.__le16.date); |
12240 | 0a 76 6f 69 64 20 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 69 6e 74 20 75 6e 69 78 | .void.ncp_date_unix2dos(int.unix |
12260 | 5f 64 61 74 65 2c 20 5f 5f 6c 65 31 36 20 2a 20 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 2a 20 64 | _date,.__le16.*.time,.__le16.*.d |
12280 | 61 74 65 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 69 6f 63 74 6c 2e 63 | ate);../*.linux/fs/ncpfs/ioctl.c |
122a0 | 20 2a 2f 0a 6c 6f 6e 67 20 6e 63 70 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a | .*/.long.ncp_ioctl(struct.file.* |
122c0 | 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a | ,.unsigned.int,.unsigned.long);. |
122e0 | 6c 6f 6e 67 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 66 69 6c | long.ncp_compat_ioctl(struct.fil |
12300 | 65 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 | e.*,.unsigned.int,.unsigned.long |
12320 | 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 20 2a 2f 0a | );../*.linux/fs/ncpfs/sock.c.*/. |
12340 | 69 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 | int.ncp_request2(struct.ncp_serv |
12360 | 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 6f 6e 2c 0a 09 76 6f 69 64 2a | er.*server,.int.function,..void* |
12380 | 20 72 65 70 6c 79 2c 20 69 6e 74 20 6d 61 78 5f 72 65 70 6c 79 5f 73 69 7a 65 29 3b 0a 73 74 61 | .reply,.int.max_reply_size);.sta |
123a0 | 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 | tic.inline.int.ncp_request(struc |
123c0 | 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 | t.ncp_server.*server,.int.functi |
123e0 | 6f 6e 29 20 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 | on).{..return.ncp_request2(serve |
12400 | 72 2c 20 66 75 6e 63 74 69 6f 6e 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 | r,.function,.server->packet,.ser |
12420 | 76 65 72 2d 3e 70 61 63 6b 65 74 5f 73 69 7a 65 29 3b 0a 7d 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e | ver->packet_size);.}.int.ncp_con |
12440 | 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b | nect(struct.ncp_server.*server); |
12460 | 0a 69 6e 74 20 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 | .int.ncp_disconnect(struct.ncp_s |
12480 | 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 6c 6f 63 6b 5f 73 65 | erver.*server);.void.ncp_lock_se |
124a0 | 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b | rver(struct.ncp_server.*server); |
124c0 | 0a 76 6f 69 64 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e | .void.ncp_unlock_server(struct.n |
124e0 | 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 | cp_server.*server);../*.linux/fs |
12500 | 2f 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 | /ncpfs/symlink.c.*/.#if.defined( |
12520 | 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 | CONFIG_NCPFS_EXTRAS).||.defined( |
12540 | 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 65 78 74 65 72 6e 20 63 6f 6e 73 | CONFIG_NCPFS_NFS_NS).extern.cons |
12560 | 74 20 73 74 72 75 63 74 20 61 64 64 72 65 73 73 5f 73 70 61 63 65 5f 6f 70 65 72 61 74 69 6f 6e | t.struct.address_space_operation |
12580 | 73 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 3b 0a 69 6e 74 20 6e 63 70 5f 73 79 6d 6c | s.ncp_symlink_aops;.int.ncp_syml |
125a0 | 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 | ink(struct.inode*,.struct.dentry |
125c0 | 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 29 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 6c 69 6e 75 | *,.const.char*);.#endif../*.linu |
125e0 | 78 2f 66 73 2f 6e 63 70 66 73 2f 66 69 6c 65 2e 63 20 2a 2f 0a 65 78 74 65 72 6e 20 63 6f 6e 73 | x/fs/ncpfs/file.c.*/.extern.cons |
12600 | 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 | t.struct.inode_operations.ncp_fi |
12620 | 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 | le_inode_operations;.extern.cons |
12640 | 74 20 73 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c | t.struct.file_operations.ncp_fil |
12660 | 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 | e_operations;.int.ncp_make_open( |
12680 | 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 69 6e 74 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f | struct.inode.*,.int);../*.linux/ |
126a0 | 66 73 2f 6e 63 70 66 73 2f 6d 6d 61 70 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 6d 61 70 28 | fs/ncpfs/mmap.c.*/.int.ncp_mmap( |
126c0 | 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 76 6d 5f 61 72 65 61 5f 73 74 | struct.file.*,.struct.vm_area_st |
126e0 | 72 75 63 74 20 2a 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 6e 63 70 6c | ruct.*);../*.linux/fs/ncpfs/ncpl |
12700 | 69 62 5f 6b 65 72 6e 65 6c 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 | ib_kernel.c.*/.int.ncp_make_clos |
12720 | 65 64 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 29 3b 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e | ed(struct.inode.*);..#include."n |
12740 | 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 22 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | cplib_kernel.h"................. |
12760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
127a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
127c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
127e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12800 | 6e 63 70 66 73 2f 6e 63 70 5f 66 73 5f 69 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncp_fs_i.h................ |
12820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
12880 | 30 30 30 31 30 37 33 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 31 32 30 00 20 30 00 00 00 | 0001073.13023323142.013120..0... |
128a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
128c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
128e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12900 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
12920 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
12940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
129a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
129c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
129e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12a00 | 2f 2a 0a 20 2a 20 20 6e 63 70 5f 66 73 5f 69 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 | /*..*..ncp_fs_i.h..*..*..Copyrig |
12a20 | 68 74 20 28 43 29 20 31 39 39 35 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 0a 20 | ht.(C).1995.Volker.Lendecke..*.. |
12a40 | 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 0a 23 64 65 66 | */..#ifndef._LINUX_NCP_FS_I.#def |
12a60 | 69 6e 65 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 | ine._LINUX_NCP_FS_I../*..*.This. |
12a80 | 69 73 20 74 68 65 20 6e 63 70 66 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 69 6e 6f 64 65 20 73 | is.the.ncpfs.part.of.the.inode.s |
12aa0 | 74 72 75 63 74 75 72 65 2e 20 54 68 69 73 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 0a 20 2a 20 61 | tructure..This.must.contain..*.a |
12ac0 | 6c 6c 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 65 20 6e 65 65 64 20 74 6f 20 77 6f | ll.the.information.we.need.to.wo |
12ae0 | 72 6b 20 77 69 74 68 20 61 6e 20 69 6e 6f 64 65 20 61 66 74 65 72 20 63 72 65 61 74 69 6f 6e 2e | rk.with.an.inode.after.creation. |
12b00 | 0a 20 2a 2f 0a 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 7b 0a 09 5f 5f | ..*/.struct.ncp_inode_info.{..__ |
12b20 | 6c 65 33 32 09 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 09 44 6f 73 44 69 72 4e 75 | le32.dirEntNum;..__le32.DosDirNu |
12b40 | 6d 3b 0a 09 5f 5f 75 38 09 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 09 6e 77 61 74 | m;..__u8.volNumber;..__le32.nwat |
12b60 | 74 72 3b 0a 09 73 74 72 75 63 74 20 6d 75 74 65 78 20 6f 70 65 6e 5f 6d 75 74 65 78 3b 0a 09 61 | tr;..struct.mutex.open_mutex;..a |
12b80 | 74 6f 6d 69 63 5f 74 09 6f 70 65 6e 65 64 3b 0a 09 69 6e 74 09 61 63 63 65 73 73 3b 0a 09 69 6e | tomic_t.opened;..int.access;..in |
12ba0 | 74 09 66 6c 61 67 73 3b 0a 23 64 65 66 69 6e 65 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d | t.flags;.#define.NCPI_KLUDGE_SYM |
12bc0 | 4c 49 4e 4b 09 30 78 30 30 30 31 0a 23 64 65 66 69 6e 65 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 | LINK.0x0001.#define.NCPI_DIR_CAC |
12be0 | 48 45 09 09 30 78 30 30 30 32 0a 09 5f 5f 75 38 09 66 69 6c 65 5f 68 61 6e 64 6c 65 5b 36 5d 3b | HE..0x0002..__u8.file_handle[6]; |
12c00 | 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 76 66 73 5f 69 6e 6f 64 65 3b 0a 7d 3b 0a 0a 23 65 | ..struct.inode.vfs_inode;.};..#e |
12c20 | 6e 64 69 66 09 2f 2a 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 20 2a 2f 0a 00 00 00 00 00 | ndif./*._LINUX_NCP_FS_I.*/...... |
12c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12e00 | 6e 63 70 66 73 2f 6e 63 70 5f 66 73 5f 73 62 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncp_fs_sb.h............... |
12e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12e60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
12e80 | 30 30 31 32 30 33 37 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 32 37 36 00 20 30 00 00 00 | 0012037.13023323142.013276..0... |
12ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12f00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
12f20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
12f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
12fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
13000 | 2f 2a 0a 20 2a 20 20 6e 63 70 5f 66 73 5f 73 62 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 | /*..*..ncp_fs_sb.h..*..*..Copyri |
13020 | 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e | ght.(C).1995,.1996.by.Volker.Len |
13040 | 64 65 63 6b 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 5f 46 53 5f 53 42 | decke..*..*/..#ifndef._NCP_FS_SB |
13060 | 0a 23 64 65 66 69 6e 65 20 5f 4e 43 50 5f 46 53 5f 53 42 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c | .#define._NCP_FS_SB..#include.<l |
13080 | 69 6e 75 78 2f 74 79 70 65 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 | inux/types.h>.#include.<linux/nc |
130a0 | 70 5f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 65 74 2e 68 | p_mount.h>.#include.<linux/net.h |
130c0 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 75 74 65 78 2e 68 3e 0a 23 69 6e 63 6c | >.#include.<linux/mutex.h>.#incl |
130e0 | 75 64 65 20 3c 6c 69 6e 75 78 2f 62 61 63 6b 69 6e 67 2d 64 65 76 2e 68 3e 0a 23 69 6e 63 6c 75 | ude.<linux/backing-dev.h>.#inclu |
13100 | 64 65 20 3c 6c 69 6e 75 78 2f 77 6f 72 6b 71 75 65 75 65 2e 68 3e 0a 0a 23 64 65 66 69 6e 65 20 | de.<linux/workqueue.h>..#define. |
13120 | 4e 43 50 5f 44 45 46 41 55 4c 54 5f 4f 50 54 49 4f 4e 53 20 30 09 09 2f 2a 20 32 20 66 6f 72 20 | NCP_DEFAULT_OPTIONS.0../*.2.for. |
13140 | 70 61 63 6b 65 74 20 73 69 67 6e 61 74 75 72 65 73 20 2a 2f 0a 0a 73 74 72 75 63 74 20 73 6f 63 | packet.signatures.*/..struct.soc |
13160 | 6b 3b 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 6b 65 72 6e 65 6c | k;..struct.ncp_mount_data_kernel |
13180 | 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20 20 20 66 6c 61 67 73 3b 09 09 2f 2a 20 | .{..unsigned.long....flags;../*. |
131a0 | 4e 43 50 5f 4d 4f 55 4e 54 5f 2a 20 66 6c 61 67 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 | NCP_MOUNT_*.flags.*/..unsigned.i |
131c0 | 6e 74 09 20 69 6e 74 5f 66 6c 61 67 73 3b 09 2f 2a 20 69 6e 74 65 72 6e 61 6c 20 66 6c 61 67 73 | nt..int_flags;./*.internal.flags |
131e0 | 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f | .*/.#define.NCP_IMOUNT_LOGGEDIN_ |
13200 | 50 4f 53 53 49 42 4c 45 09 30 78 30 30 30 31 0a 09 6b 75 69 64 5f 74 09 09 20 6d 6f 75 6e 74 65 | POSSIBLE.0x0001..kuid_t...mounte |
13220 | 64 5f 75 69 64 3b 09 2f 2a 20 57 68 6f 20 6d 61 79 20 75 6d 6f 75 6e 74 28 29 20 74 68 69 73 20 | d_uid;./*.Who.may.umount().this. |
13240 | 66 69 6c 65 73 79 73 74 65 6d 3f 20 2a 2f 0a 09 73 74 72 75 63 74 20 70 69 64 20 20 20 20 20 20 | filesystem?.*/..struct.pid...... |
13260 | 2a 77 64 6f 67 5f 70 69 64 3b 09 2f 2a 20 57 68 6f 20 63 61 72 65 73 20 66 6f 72 20 6f 75 72 20 | *wdog_pid;./*.Who.cares.for.our. |
13280 | 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 73 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 | watchdog.packets?.*/..unsigned.i |
132a0 | 6e 74 20 20 20 20 20 6e 63 70 5f 66 64 3b 09 2f 2a 20 54 68 65 20 73 6f 63 6b 65 74 20 74 6f 20 | nt.....ncp_fd;./*.The.socket.to. |
132c0 | 74 68 65 20 6e 63 70 20 70 6f 72 74 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 20 20 | the.ncp.port.*/..unsigned.int... |
132e0 | 20 20 74 69 6d 65 5f 6f 75 74 3b 09 2f 2a 20 48 6f 77 20 6c 6f 6e 67 20 73 68 6f 75 6c 64 20 49 | ..time_out;./*.How.long.should.I |
13300 | 20 77 61 69 74 20 61 66 74 65 72 0a 09 09 09 09 09 20 20 20 73 65 6e 64 69 6e 67 20 61 20 4e 43 | .wait.after.........sending.a.NC |
13320 | 50 20 72 65 71 75 65 73 74 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 20 20 20 20 | P.request?.*/..unsigned.int..... |
13340 | 72 65 74 72 79 5f 63 6f 75 6e 74 3b 09 2f 2a 20 41 6e 64 20 68 6f 77 20 6f 66 74 65 6e 20 73 68 | retry_count;./*.And.how.often.sh |
13360 | 6f 75 6c 64 20 49 20 72 65 74 72 79 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 09 | ould.I.retry?.*/..unsigned.char. |
13380 | 20 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 4e 43 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 4e 20 2b 20 31 | .mounted_vol[NCP_VOLNAME_LEN.+.1 |
133a0 | 5d 3b 0a 09 6b 75 69 64 5f 74 09 09 20 75 69 64 3b 0a 09 6b 67 69 64 5f 74 09 09 20 67 69 64 3b | ];..kuid_t...uid;..kgid_t...gid; |
133c0 | 0a 09 75 6d 6f 64 65 5f 74 09 09 20 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 75 6d 6f 64 65 5f 74 09 | ..umode_t...file_mode;..umode_t. |
133e0 | 09 20 64 69 72 5f 6d 6f 64 65 3b 0a 09 69 6e 74 09 09 20 69 6e 66 6f 5f 66 64 3b 0a 7d 3b 0a 0a | ..dir_mode;..int...info_fd;.};.. |
13400 | 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 7b 0a 09 73 74 72 75 63 74 20 72 63 75 5f | struct.ncp_server.{..struct.rcu_ |
13420 | 68 65 61 64 20 72 63 75 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 | head.rcu;..struct.ncp_mount_data |
13440 | 5f 6b 65 72 6e 65 6c 20 6d 3b 09 2f 2a 20 4e 65 61 72 6c 79 20 61 6c 6c 20 6f 66 20 74 68 65 20 | _kernel.m;./*.Nearly.all.of.the. |
13460 | 6d 6f 75 6e 74 20 64 61 74 61 20 69 73 20 6f 66 0a 09 09 09 09 09 20 20 20 69 6e 74 65 72 65 73 | mount.data.is.of.........interes |
13480 | 74 20 66 6f 72 20 75 73 20 6c 61 74 65 72 2c 20 73 6f 20 77 65 20 73 74 6f 72 65 0a 09 09 09 09 | t.for.us.later,.so.we.store..... |
134a0 | 09 20 20 20 69 74 20 63 6f 6d 70 6c 65 74 65 6c 79 2e 20 2a 2f 0a 0a 09 5f 5f 75 38 20 6e 61 6d | ....it.completely..*/...__u8.nam |
134c0 | 65 5f 73 70 61 63 65 5b 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 20 2b 20 | e_space[NCP_NUMBER_OF_VOLUMES.+. |
134e0 | 32 5d 3b 0a 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 6e 63 70 5f 73 6f 63 6b 3b 2f 2a | 2];...struct.socket.*ncp_sock;/* |
13500 | 20 6e 63 70 20 73 6f 63 6b 65 74 20 2a 2f 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 69 | .ncp.socket.*/..struct.socket.*i |
13520 | 6e 66 6f 5f 73 6f 63 6b 3b 0a 0a 09 75 38 20 73 65 71 75 65 6e 63 65 3b 0a 09 75 38 20 74 61 73 | nfo_sock;...u8.sequence;..u8.tas |
13540 | 6b 3b 0a 09 75 31 36 20 63 6f 6e 6e 65 63 74 69 6f 6e 3b 09 09 2f 2a 20 52 65 6d 6f 74 65 20 63 | k;..u16.connection;../*.Remote.c |
13560 | 6f 6e 6e 65 63 74 69 6f 6e 20 6e 75 6d 62 65 72 20 2a 2f 0a 0a 09 75 38 20 63 6f 6d 70 6c 65 74 | onnection.number.*/...u8.complet |
13580 | 69 6f 6e 3b 09 09 2f 2a 20 53 74 61 74 75 73 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 73 65 72 | ion;../*.Status.message.from.ser |
135a0 | 76 65 72 20 2a 2f 0a 09 75 38 20 63 6f 6e 6e 5f 73 74 61 74 75 73 3b 09 09 2f 2a 20 42 69 74 20 | ver.*/..u8.conn_status;../*.Bit. |
135c0 | 34 20 3d 20 31 20 3d 3d 3e 20 53 65 72 76 65 72 20 67 6f 69 6e 67 20 64 6f 77 6e 2c 20 6e 6f 0a | 4.=.1.==>.Server.going.down,.no. |
135e0 | 09 09 09 09 20 20 20 72 65 71 75 65 73 74 73 20 61 6c 6c 6f 77 65 64 20 61 6e 79 6d 6f 72 65 2e | .......requests.allowed.anymore. |
13600 | 0a 09 09 09 09 20 20 20 42 69 74 20 30 20 3d 20 31 20 3d 3d 3e 20 53 65 72 76 65 72 20 69 73 20 | ........Bit.0.=.1.==>.Server.is. |
13620 | 64 6f 77 6e 2e 20 2a 2f 0a 0a 09 69 6e 74 20 62 75 66 66 65 72 5f 73 69 7a 65 3b 09 2f 2a 20 4e | down..*/...int.buffer_size;./*.N |
13640 | 65 67 6f 74 69 61 74 65 64 20 62 75 66 73 69 7a 65 20 2a 2f 0a 0a 09 69 6e 74 20 72 65 70 6c 79 | egotiated.bufsize.*/...int.reply |
13660 | 5f 73 69 7a 65 3b 09 09 2f 2a 20 53 69 7a 65 20 6f 66 20 6c 61 73 74 20 72 65 70 6c 79 20 2a 2f | _size;../*.Size.of.last.reply.*/ |
13680 | 0a 0a 09 69 6e 74 20 70 61 63 6b 65 74 5f 73 69 7a 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 | ...int.packet_size;..unsigned.ch |
136a0 | 61 72 20 2a 70 61 63 6b 65 74 3b 09 2f 2a 20 48 65 72 65 20 77 65 20 70 72 65 70 61 72 65 20 72 | ar.*packet;./*.Here.we.prepare.r |
136c0 | 65 71 75 65 73 74 73 20 61 6e 64 0a 09 09 09 09 20 20 20 72 65 63 65 69 76 65 20 72 65 70 6c 69 | equests.and........receive.repli |
136e0 | 65 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 74 78 62 75 66 3b 09 2f 2a 20 | es.*/..unsigned.char.*txbuf;./*. |
13700 | 53 74 6f 72 61 67 65 20 66 6f 72 20 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 20 2a 2f 0a 09 | Storage.for.current.request.*/.. |
13720 | 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 72 78 62 75 66 3b 09 2f 2a 20 53 74 6f 72 61 67 65 | unsigned.char.*rxbuf;./*.Storage |
13740 | 20 66 6f 72 20 72 65 70 6c 79 20 74 6f 20 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 20 2a 2f | .for.reply.to.current.request.*/ |
13760 | 0a 0a 09 69 6e 74 20 6c 6f 63 6b 3b 09 09 2f 2a 20 54 6f 20 70 72 65 76 65 6e 74 20 6d 69 73 6d | ...int.lock;../*.To.prevent.mism |
13780 | 61 74 63 68 20 69 6e 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 2a 2f 0a 09 73 74 72 75 63 74 20 6d 75 | atch.in.protocols..*/..struct.mu |
137a0 | 74 65 78 20 6d 75 74 65 78 3b 0a 0a 09 69 6e 74 20 63 75 72 72 65 6e 74 5f 73 69 7a 65 3b 09 2f | tex.mutex;...int.current_size;./ |
137c0 | 2a 20 66 6f 72 20 70 61 63 6b 65 74 20 70 72 65 70 61 72 61 74 69 6f 6e 20 2a 2f 0a 09 69 6e 74 | *.for.packet.preparation.*/..int |
137e0 | 20 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 3b 0a 09 69 6e 74 20 6e 63 70 5f 72 65 70 6c 79 | .has_subfunction;..int.ncp_reply |
13800 | 5f 73 69 7a 65 3b 0a 0a 09 69 6e 74 20 72 6f 6f 74 5f 73 65 74 75 70 65 64 3b 0a 09 73 74 72 75 | _size;...int.root_setuped;..stru |
13820 | 63 74 20 6d 75 74 65 78 20 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 3b 0a 0a 09 2f 2a 20 69 | ct.mutex.root_setup_lock;.../*.i |
13840 | 6e 66 6f 20 66 6f 72 20 70 61 63 6b 65 74 20 73 69 67 6e 69 6e 67 20 2a 2f 0a 09 69 6e 74 20 73 | nfo.for.packet.signing.*/..int.s |
13860 | 69 67 6e 5f 77 61 6e 74 65 64 3b 09 2f 2a 20 31 3d 53 65 72 76 65 72 20 6e 65 65 64 73 20 73 69 | ign_wanted;./*.1=Server.needs.si |
13880 | 67 6e 65 64 20 70 61 63 6b 65 74 73 20 2a 2f 0a 09 69 6e 74 20 73 69 67 6e 5f 61 63 74 69 76 65 | gned.packets.*/..int.sign_active |
138a0 | 3b 09 2f 2a 20 30 3d 64 6f 6e 27 74 20 64 6f 20 73 69 67 6e 69 6e 67 2c 20 31 3d 64 6f 20 2a 2f | ;./*.0=don't.do.signing,.1=do.*/ |
138c0 | 0a 09 63 68 61 72 20 73 69 67 6e 5f 72 6f 6f 74 5b 38 5d 3b 09 2f 2a 20 67 65 6e 65 72 61 74 65 | ..char.sign_root[8];./*.generate |
138e0 | 64 20 66 72 6f 6d 20 70 61 73 73 77 6f 72 64 20 61 6e 64 20 65 6e 63 72 2e 20 6b 65 79 20 2a 2f | d.from.password.and.encr..key.*/ |
13900 | 0a 09 63 68 61 72 20 73 69 67 6e 5f 6c 61 73 74 5b 31 36 5d 3b 09 0a 0a 09 2f 2a 20 41 75 74 68 | ..char.sign_last[16];..../*.Auth |
13920 | 65 6e 74 69 63 61 74 69 6f 6e 20 69 6e 66 6f 3a 20 4e 44 53 20 6f 72 20 42 49 4e 44 45 52 59 2c | entication.info:.NDS.or.BINDERY, |
13940 | 20 75 73 65 72 6e 61 6d 65 20 2a 2f 0a 09 73 74 72 75 63 74 20 7b 0a 09 09 69 6e 74 09 61 75 74 | .username.*/..struct.{...int.aut |
13960 | 68 5f 74 79 70 65 3b 0a 09 09 73 69 7a 65 5f 74 09 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e | h_type;...size_t.object_name_len |
13980 | 3b 0a 09 09 76 6f 69 64 2a 09 6f 62 6a 65 63 74 5f 6e 61 6d 65 3b 0a 09 09 69 6e 74 09 6f 62 6a | ;...void*.object_name;...int.obj |
139a0 | 65 63 74 5f 74 79 70 65 3b 0a 09 7d 20 61 75 74 68 3b 0a 09 2f 2a 20 50 61 73 73 77 6f 72 64 20 | ect_type;..}.auth;../*.Password. |
139c0 | 69 6e 66 6f 20 2a 2f 0a 09 73 74 72 75 63 74 20 7b 0a 09 09 73 69 7a 65 5f 74 09 6c 65 6e 3b 0a | info.*/..struct.{...size_t.len;. |
139e0 | 09 09 76 6f 69 64 2a 09 64 61 74 61 3b 0a 09 7d 20 70 72 69 76 3b 0a 09 73 74 72 75 63 74 20 72 | ..void*.data;..}.priv;..struct.r |
13a00 | 77 5f 73 65 6d 61 70 68 6f 72 65 20 61 75 74 68 5f 72 77 73 65 6d 3b 0a 0a 09 2f 2a 20 6e 6c 73 | w_semaphore.auth_rwsem;.../*.nls |
13a20 | 20 69 6e 66 6f 3a 20 63 6f 64 65 70 61 67 65 20 66 6f 72 20 76 6f 6c 75 6d 65 20 61 6e 64 20 63 | .info:.codepage.for.volume.and.c |
13a40 | 68 61 72 73 65 74 20 66 6f 72 20 49 2f 4f 20 2a 2f 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 | harset.for.I/O.*/..struct.nls_ta |
13a60 | 62 6c 65 20 2a 6e 6c 73 5f 76 6f 6c 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 | ble.*nls_vol;..struct.nls_table. |
13a80 | 2a 6e 6c 73 5f 69 6f 3b 0a 0a 09 2f 2a 20 6d 61 78 69 6d 75 6d 20 61 67 65 20 69 6e 20 6a 69 66 | *nls_io;.../*.maximum.age.in.jif |
13aa0 | 66 69 65 73 20 2a 2f 0a 09 61 74 6f 6d 69 63 5f 74 20 64 65 6e 74 72 79 5f 74 74 6c 3b 0a 0a 09 | fies.*/..atomic_t.dentry_ttl;... |
13ac0 | 2f 2a 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e | /*.miscellaneous.*/..unsigned.in |
13ae0 | 74 20 66 6c 61 67 73 3b 0a 0a 09 73 70 69 6e 6c 6f 63 6b 5f 74 20 72 65 71 75 65 73 74 73 5f 6c | t.flags;...spinlock_t.requests_l |
13b00 | 6f 63 6b 3b 09 2f 2a 20 4c 6f 63 6b 20 61 63 63 65 73 73 65 73 20 74 6f 20 74 78 2e 72 65 71 75 | ock;./*.Lock.accesses.to.tx.requ |
13b20 | 65 73 74 73 2c 20 74 78 2e 63 72 65 71 20 61 6e 64 20 72 63 76 2e 63 72 65 71 20 77 68 65 6e 20 | ests,.tx.creq.and.rcv.creq.when. |
13b40 | 53 54 52 45 41 4d 20 6d 6f 64 65 20 2a 2f 0a 0a 09 76 6f 69 64 20 28 2a 64 61 74 61 5f 72 65 61 | STREAM.mode.*/...void.(*data_rea |
13b60 | 64 79 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 09 76 6f 69 64 20 28 2a 65 72 | dy)(struct.sock*.sk);..void.(*er |
13b80 | 72 6f 72 5f 72 65 70 6f 72 74 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 09 76 | ror_report)(struct.sock*.sk);..v |
13ba0 | 6f 69 64 20 28 2a 77 72 69 74 65 5f 73 70 61 63 65 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 | oid.(*write_space)(struct.sock*. |
13bc0 | 73 6b 29 3b 09 2f 2a 20 53 54 52 45 41 4d 20 6d 6f 64 65 20 6f 6e 6c 79 20 2a 2f 0a 09 73 74 72 | sk);./*.STREAM.mode.only.*/..str |
13be0 | 75 63 74 20 7b 0a 09 09 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 71 3b 09 09 | uct.{...struct.work_struct.tq;.. |
13c00 | 2f 2a 20 53 54 52 45 41 4d 2f 44 47 52 41 4d 3a 20 64 61 74 61 2f 65 72 72 6f 72 20 72 65 61 64 | /*.STREAM/DGRAM:.data/error.read |
13c20 | 79 20 2a 2f 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a | y.*/...struct.ncp_request_reply* |
13c40 | 20 63 72 65 71 3b 09 2f 2a 20 53 54 52 45 41 4d 2f 44 47 52 41 4d 3a 20 61 77 61 69 74 69 6e 67 | .creq;./*.STREAM/DGRAM:.awaiting |
13c60 | 20 72 65 70 6c 79 20 66 72 6f 6d 20 74 68 69 73 20 72 65 71 75 65 73 74 20 2a 2f 0a 09 09 73 74 | .reply.from.this.request.*/...st |
13c80 | 72 75 63 74 20 6d 75 74 65 78 20 63 72 65 71 5f 6d 75 74 65 78 3b 09 2f 2a 20 44 47 52 41 4d 20 | ruct.mutex.creq_mutex;./*.DGRAM. |
13ca0 | 6f 6e 6c 79 3a 20 6c 6f 63 6b 20 61 63 63 65 73 73 65 73 20 74 6f 20 72 63 76 2e 63 72 65 71 20 | only:.lock.accesses.to.rcv.creq. |
13cc0 | 2a 2f 0a 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 74 61 74 65 3b 09 09 2f 2a 20 53 54 | */....unsigned.int.state;../*.ST |
13ce0 | 52 45 41 4d 20 6f 6e 6c 79 3a 20 72 65 63 65 69 76 65 72 20 73 74 61 74 65 20 2a 2f 0a 09 09 73 | REAM.only:.receiver.state.*/...s |
13d00 | 74 72 75 63 74 20 7b 0a 09 09 09 5f 5f 75 33 32 20 6d 61 67 69 63 20 5f 5f 70 61 63 6b 65 64 3b | truct.{....__u32.magic.__packed; |
13d20 | 0a 09 09 09 5f 5f 75 33 32 20 6c 65 6e 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 | ....__u32.len.__packed;....__u16 |
13d40 | 20 74 79 70 65 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 70 31 20 5f 5f 70 61 | .type.__packed;....__u16.p1.__pa |
13d60 | 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 70 32 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f | cked;....__u16.p2.__packed;...._ |
13d80 | 5f 75 31 36 20 70 33 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 74 79 70 65 32 | _u16.p3.__packed;....__u16.type2 |
13da0 | 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 7d 20 62 75 66 3b 09 09 09 09 2f 2a 20 53 54 52 45 41 4d | .__packed;...}.buf;..../*.STREAM |
13dc0 | 20 6f 6e 6c 79 3a 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 2a 2f 0a 09 09 75 6e 73 | .only:.temporary.buffer.*/...uns |
13de0 | 69 67 6e 65 64 20 63 68 61 72 2a 20 70 74 72 3b 09 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 | igned.char*.ptr;../*.STREAM.only |
13e00 | 3a 20 70 6f 69 6e 74 65 72 20 74 6f 20 64 61 74 61 20 2a 2f 0a 09 09 73 69 7a 65 5f 74 20 6c 65 | :.pointer.to.data.*/...size_t.le |
13e20 | 6e 3b 09 09 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 6c 65 6e 67 74 68 20 6f 66 20 64 | n;.../*.STREAM.only:.length.of.d |
13e40 | 61 74 61 20 74 6f 20 72 65 63 65 69 76 65 20 2a 2f 0a 09 7d 20 72 63 76 3b 0a 09 73 74 72 75 63 | ata.to.receive.*/..}.rcv;..struc |
13e60 | 74 20 7b 0a 09 09 73 74 72 75 63 74 20 6c 69 73 74 5f 68 65 61 64 20 72 65 71 75 65 73 74 73 3b | t.{...struct.list_head.requests; |
13e80 | 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 71 75 65 75 65 64 20 72 65 71 75 65 73 74 73 | ./*.STREAM.only:.queued.requests |
13ea0 | 20 2a 2f 0a 09 09 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 71 3b 09 09 2f 2a | .*/...struct.work_struct.tq;../* |
13ec0 | 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 74 72 61 6e 73 6d 69 74 74 65 72 20 72 65 61 64 79 20 | .STREAM.only:.transmitter.ready. |
13ee0 | 2a 2f 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 63 | */...struct.ncp_request_reply*.c |
13f00 | 72 65 71 3b 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 63 75 72 72 65 6e 74 6c 79 20 74 | req;./*.STREAM.only:.currently.t |
13f20 | 72 61 6e 73 6d 69 74 74 65 64 20 65 6e 74 72 79 20 2a 2f 0a 09 7d 20 74 78 3b 0a 09 73 74 72 75 | ransmitted.entry.*/..}.tx;..stru |
13f40 | 63 74 20 74 69 6d 65 72 5f 6c 69 73 74 20 74 69 6d 65 6f 75 74 5f 74 6d 3b 09 09 2f 2a 20 44 47 | ct.timer_list.timeout_tm;../*.DG |
13f60 | 52 41 4d 20 6f 6e 6c 79 3a 20 74 69 6d 65 6f 75 74 20 74 69 6d 65 72 20 2a 2f 0a 09 73 74 72 75 | RAM.only:.timeout.timer.*/..stru |
13f80 | 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 69 6d 65 6f 75 74 5f 74 71 3b 09 09 2f 2a 20 44 | ct.work_struct.timeout_tq;../*.D |
13fa0 | 47 52 41 4d 20 6f 6e 6c 79 3a 20 61 73 73 6f 63 69 61 74 65 64 20 71 75 65 75 65 2c 20 77 65 20 | GRAM.only:.associated.queue,.we. |
13fc0 | 72 75 6e 20 74 69 6d 65 72 73 20 66 72 6f 6d 20 70 72 6f 63 65 73 73 20 63 6f 6e 74 65 78 74 20 | run.timers.from.process.context. |
13fe0 | 2a 2f 0a 09 69 6e 74 20 74 69 6d 65 6f 75 74 5f 6c 61 73 74 3b 09 09 09 2f 2a 20 44 47 52 41 4d | */..int.timeout_last;.../*.DGRAM |
14000 | 20 6f 6e 6c 79 3a 20 63 75 72 72 65 6e 74 20 74 69 6d 65 6f 75 74 20 6c 65 6e 67 74 68 20 2a 2f | .only:.current.timeout.length.*/ |
14020 | 0a 09 69 6e 74 20 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 3b 09 09 09 2f 2a 20 44 47 52 41 | ..int.timeout_retries;.../*.DGRA |
14040 | 4d 20 6f 6e 6c 79 3a 20 72 65 74 72 69 65 73 20 6c 65 66 74 20 2a 2f 0a 09 73 74 72 75 63 74 20 | M.only:.retries.left.*/..struct. |
14060 | 7b 0a 09 09 73 69 7a 65 5f 74 20 6c 65 6e 3b 0a 09 09 5f 5f 75 38 20 64 61 74 61 5b 31 32 38 5d | {...size_t.len;...__u8.data[128] |
14080 | 3b 0a 09 7d 20 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 3b 0a 09 73 74 72 75 63 74 20 | ;..}.unexpected_packet;..struct. |
140a0 | 62 61 63 6b 69 6e 67 5f 64 65 76 5f 69 6e 66 6f 20 62 64 69 3b 0a 7d 3b 0a 0a 65 78 74 65 72 6e | backing_dev_info.bdi;.};..extern |
140c0 | 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f | .void.ncp_tcp_rcv_proc(struct.wo |
140e0 | 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 | rk_struct.*work);.extern.void.nc |
14100 | 70 5f 74 63 70 5f 74 78 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 | p_tcp_tx_proc(struct.work_struct |
14120 | 20 2a 77 6f 72 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 72 63 | .*work);.extern.void.ncpdgram_rc |
14140 | 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 | v_proc(struct.work_struct.*work) |
14160 | 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 | ;.extern.void.ncpdgram_timeout_p |
14180 | 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 3b 0a 65 | roc(struct.work_struct.*work);.e |
141a0 | 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 63 61 6c 6c | xtern.void.ncpdgram_timeout_call |
141c0 | 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 73 65 72 76 65 72 29 3b 0a 65 78 74 65 72 6e 20 76 | (unsigned.long.server);.extern.v |
141e0 | 6f 69 64 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 64 79 28 73 74 72 75 63 74 20 73 6f | oid.ncp_tcp_data_ready(struct.so |
14200 | 63 6b 2a 20 73 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 77 72 69 | ck*.sk);.extern.void.ncp_tcp_wri |
14220 | 74 65 5f 73 70 61 63 65 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 65 78 74 65 72 | te_space(struct.sock*.sk);.exter |
14240 | 6e 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 74 72 75 | n.void.ncp_tcp_error_report(stru |
14260 | 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 46 4c 41 47 5f | ct.sock*.sk);..#define.NCP_FLAG_ |
14280 | 55 54 46 38 09 31 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 43 4c 52 5f 46 4c 41 47 28 73 65 72 | UTF8.1..#define.NCP_CLR_FLAG(ser |
142a0 | 76 65 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 26 3d 20 7e | ver,.flag).((server)->flags.&=.~ |
142c0 | 28 66 6c 61 67 29 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 45 54 5f 46 4c 41 47 28 73 65 72 | (flag)).#define.NCP_SET_FLAG(ser |
142e0 | 76 65 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 28 | ver,.flag).((server)->flags.|=.( |
14300 | 66 6c 61 67 29 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 | flag)).#define.NCP_IS_FLAG(serve |
14320 | 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 26 20 28 66 6c 61 | r,.flag).((server)->flags.&.(fla |
14340 | 67 29 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f | g))..static.inline.int.ncp_conn_ |
14360 | 76 61 6c 69 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 | valid(struct.ncp_server.*server) |
14380 | 0a 7b 0a 09 72 65 74 75 72 6e 20 28 28 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f 73 74 61 74 75 73 | .{..return.((server->conn_status |
143a0 | 20 26 20 30 78 31 31 29 20 3d 3d 20 30 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 | .&.0x11).==.0);.}..static.inline |
143c0 | 20 76 6f 69 64 20 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 5f 63 6f 6e 6e 28 73 74 72 75 63 74 | .void.ncp_invalidate_conn(struct |
143e0 | 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 65 72 76 65 72 2d 3e | .ncp_server.*server).{..server-> |
14400 | 63 6f 6e 6e 5f 73 74 61 74 75 73 20 7c 3d 20 30 78 30 31 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a 00 | conn_status.|=.0x01;.}..#endif.. |
14420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
144a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
144c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
144e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
145a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
145c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
145e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14600 | 6e 63 70 66 73 2f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 63 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncplib_kernel.c........... |
14620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
14680 | 30 31 30 30 37 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 31 33 37 00 20 30 00 00 00 | 0100700.13023323142.014137..0... |
146a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
146c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
146e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14700 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
14720 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
14740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
147a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
147c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
147e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
14800 | 2f 2a 0a 20 2a 20 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f | /*..*..ncplib_kernel.c..*..*..Co |
14820 | 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 | pyright.(C).1995,.1996.by.Volker |
14840 | 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 | .Lendecke..*..Modified.for.big.e |
14860 | 6e 64 69 61 6e 20 62 79 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 | ndian.by.J.F..Chadima.and.David. |
14880 | 53 2e 20 4d 69 6c 6c 65 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 | S..Miller..*..Modified.1997.Pete |
148a0 | 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 | r.Waltenberg,.Bill.Hawes,.David. |
148c0 | 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 | Woodhouse.for.2.1.dcache..*..Mod |
148e0 | 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 | ified.1999.Wolfram.Pienkoss.for. |
14900 | 4e 4c 53 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 | NLS..*..Modified.2000.Ben.Harris |
14920 | 2c 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 | ,.University.of.Cambridge.for.NF |
14940 | 53 20 4e 53 20 6d 65 74 61 2d 69 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 | S.NS.meta-info..*..*/..#define.p |
14960 | 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 | r_fmt(fmt).KBUILD_MODNAME.":.".f |
14980 | 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 73 74 61 74 69 63 20 | mt..#include."ncp_fs.h"..static. |
149a0 | 69 6e 6c 69 6e 65 20 76 6f 69 64 20 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 | inline.void.assert_server_locked |
149c0 | 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 69 | (struct.ncp_server.*server).{..i |
149e0 | 66 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 64 62 | f.(server->lock.==.0).{...ncp_db |
14a00 | 67 28 31 2c 20 22 73 65 72 76 65 72 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 29 3b 0a 09 7d | g(1,."server.not.locked!\n");..} |
14a20 | 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 74 72 | .}..static.void.ncp_add_byte(str |
14a40 | 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 78 29 0a | uct.ncp_server.*server,.__u8.x). |
14a60 | 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b | {..assert_server_locked(server); |
14a80 | 0a 09 2a 28 5f 5f 75 38 20 2a 29 20 28 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 | ..*(__u8.*).(&(server->packet[se |
14aa0 | 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 5d 29 29 20 3d 20 78 3b 0a 09 73 65 72 76 | rver->current_size])).=.x;..serv |
14ac0 | 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2b 3d 20 31 3b 0a 09 72 65 74 75 72 6e 3b 0a | er->current_size.+=.1;..return;. |
14ae0 | 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 74 72 75 | }..static.void.ncp_add_word(stru |
14b00 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 6c 65 31 36 20 78 29 | ct.ncp_server.*server,.__le16.x) |
14b20 | 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 | .{..assert_server_locked(server) |
14b40 | 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 78 2c 20 28 5f 5f 6c 65 31 36 20 2a 29 20 28 | ;..put_unaligned(x,.(__le16.*).( |
14b60 | 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 | &(server->packet[server->current |
14b80 | 5f 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 | _size])));..server->current_size |
14ba0 | 20 2b 3d 20 32 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e | .+=.2;..return;.}..static.void.n |
14bc0 | 63 70 5f 61 64 64 5f 62 65 31 36 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 | cp_add_be16(struct.ncp_server.*s |
14be0 | 65 72 76 65 72 2c 20 5f 5f 75 31 36 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 | erver,.__u16.x).{..assert_server |
14c00 | 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 | _locked(server);..put_unaligned( |
14c20 | 63 70 75 5f 74 6f 5f 62 65 31 36 28 78 29 2c 20 28 5f 5f 62 65 31 36 20 2a 29 20 28 26 28 73 65 | cpu_to_be16(x),.(__be16.*).(&(se |
14c40 | 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a | rver->packet[server->current_siz |
14c60 | 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2b 3d 20 | e])));..server->current_size.+=. |
14c80 | 32 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 | 2;.}..static.void.ncp_add_dword( |
14ca0 | 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 6c 65 33 | struct.ncp_server.*server,.__le3 |
14cc0 | 32 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 | 2.x).{..assert_server_locked(ser |
14ce0 | 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 78 2c 20 28 5f 5f 6c 65 33 32 20 | ver);..put_unaligned(x,.(__le32. |
14d00 | 2a 29 20 28 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 | *).(&(server->packet[server->cur |
14d20 | 72 65 6e 74 5f 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f | rent_size])));..server->current_ |
14d40 | 73 69 7a 65 20 2b 3d 20 34 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f | size.+=.4;..return;.}..static.vo |
14d60 | 69 64 20 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | id.ncp_add_be32(struct.ncp_serve |
14d80 | 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 33 32 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 | r.*server,.__u32.x).{..assert_se |
14da0 | 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 | rver_locked(server);..put_unalig |
14dc0 | 6e 65 64 28 63 70 75 5f 74 6f 5f 62 65 33 32 28 78 29 2c 20 28 5f 5f 62 65 33 32 20 2a 29 28 26 | ned(cpu_to_be32(x),.(__be32.*)(& |
14de0 | 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f | (server->packet[server->current_ |
14e00 | 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 | size])));..server->current_size. |
14e20 | 2b 3d 20 34 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f | +=.4;.}..static.inline.void.ncp_ |
14e40 | 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a | add_dword_lh(struct.ncp_server.* |
14e60 | 73 65 72 76 65 72 2c 20 5f 5f 75 33 32 20 78 29 20 7b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 | server,.__u32.x).{..ncp_add_dwor |
14e80 | 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 33 32 28 78 29 29 3b 0a 7d 0a 0a 73 74 | d(server,.cpu_to_le32(x));.}..st |
14ea0 | 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 74 72 75 63 74 20 6e 63 70 | atic.void.ncp_add_mem(struct.ncp |
14ec0 | 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 6f 75 | _server.*server,.const.void.*sou |
14ee0 | 72 63 65 2c 20 69 6e 74 20 73 69 7a 65 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f | rce,.int.size).{..assert_server_ |
14f00 | 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 6d 65 6d 63 70 79 28 26 28 73 65 72 76 65 72 | locked(server);..memcpy(&(server |
14f20 | 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 5d 29 2c | ->packet[server->current_size]), |
14f40 | 20 73 6f 75 72 63 65 2c 20 73 69 7a 65 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 | .source,.size);..server->current |
14f60 | 5f 73 69 7a 65 20 2b 3d 20 73 69 7a 65 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 | _size.+=.size;..return;.}..stati |
14f80 | 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 6e 67 28 73 74 72 75 63 74 20 6e 63 | c.void.ncp_add_pstring(struct.nc |
14fa0 | 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 29 | p_server.*server,.const.char.*s) |
14fc0 | 0a 7b 0a 09 69 6e 74 20 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 29 3b 0a 09 61 73 73 65 72 74 | .{..int.len.=.strlen(s);..assert |
14fe0 | 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 69 66 20 28 6c 65 6e | _server_locked(server);..if.(len |
15000 | 20 3e 20 32 35 35 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 74 72 69 6e 67 20 74 | .>.255).{...ncp_dbg(1,."string.t |
15020 | 6f 6f 20 6c 6f 6e 67 3a 20 25 73 5c 6e 22 2c 20 73 29 3b 0a 09 09 6c 65 6e 20 3d 20 32 35 35 3b | oo.long:.%s\n",.s);...len.=.255; |
15040 | 0a 09 7d 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6c 65 6e 29 3b 0a | ..}..ncp_add_byte(server,.len);. |
15060 | 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 2c 20 6c 65 6e 29 3b 0a 09 72 | .ncp_add_mem(server,.s,.len);..r |
15080 | 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 | eturn;.}..static.inline.void.ncp |
150a0 | 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | _init_request(struct.ncp_server. |
150c0 | 2a 73 65 72 76 65 72 29 0a 7b 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 | *server).{..ncp_lock_server(serv |
150e0 | 65 72 29 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 3d 20 73 69 | er);...server->current_size.=.si |
15100 | 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 3b | zeof(struct.ncp_request_header); |
15120 | 0a 09 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 3d 20 30 3b 0a 7d | ..server->has_subfunction.=.0;.} |
15140 | 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 69 6e 69 74 5f 72 65 | ..static.inline.void.ncp_init_re |
15160 | 71 75 65 73 74 5f 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 | quest_s(struct.ncp_server.*serve |
15180 | 72 2c 20 69 6e 74 20 73 75 62 66 75 6e 63 74 69 6f 6e 29 0a 7b 0a 09 6e 63 70 5f 6c 6f 63 6b 5f | r,.int.subfunction).{..ncp_lock_ |
151a0 | 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 | server(server);....server->curre |
151c0 | 6e 74 5f 73 69 7a 65 20 3d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 | nt_size.=.sizeof(struct.ncp_requ |
151e0 | 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 32 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 | est_header).+.2;..ncp_add_byte(s |
15200 | 65 72 76 65 72 2c 20 73 75 62 66 75 6e 63 74 69 6f 6e 29 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 68 | erver,.subfunction);...server->h |
15220 | 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 3d 20 31 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e | as_subfunction.=.1;.}..static.in |
15240 | 6c 69 6e 65 20 63 68 61 72 20 2a 0a 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 74 72 75 63 | line.char.*.ncp_reply_data(struc |
15260 | 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 | t.ncp_server.*server,.int.offset |
15280 | 29 0a 7b 0a 09 72 65 74 75 72 6e 20 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 69 7a | ).{..return.&(server->packet[siz |
152a0 | 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 6f | eof(struct.ncp_reply_header).+.o |
152c0 | 66 66 73 65 74 5d 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 38 20 42 56 41 | ffset]);.}..static.inline.u8.BVA |
152e0 | 4c 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 2a 28 | L(const.void.*data).{..return.*( |
15300 | 63 6f 6e 73 74 20 75 38 20 2a 29 64 61 74 61 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 75 38 20 6e 63 | const.u8.*)data;.}..static.u8.nc |
15320 | 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a | p_reply_byte(struct.ncp_server.* |
15340 | 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 0a 7b 0a 09 72 65 74 75 72 6e 20 2a 28 | server,.int.offset).{..return.*( |
15360 | 63 6f 6e 73 74 20 75 38 20 2a 29 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 | const.u8.*)ncp_reply_data(server |
15380 | 2c 20 6f 66 66 73 65 74 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 31 36 20 | ,.offset);.}..static.inline.u16. |
153a0 | 57 56 41 4c 5f 4c 48 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 | WVAL_LH(const.void.*data).{..ret |
153c0 | 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 6c 65 31 36 28 64 61 74 61 29 3b 0a 7d 0a | urn.get_unaligned_le16(data);.}. |
153e0 | 0a 73 74 61 74 69 63 20 75 31 36 0a 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 74 72 75 63 | .static.u16.ncp_reply_le16(struc |
15400 | 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 | t.ncp_server.*server,.int.offset |
15420 | 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 6c 65 31 36 28 6e | ).{..return.get_unaligned_le16(n |
15440 | 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0a | cp_reply_data(server,.offset));. |
15460 | 7d 0a 0a 73 74 61 74 69 63 20 75 31 36 0a 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 74 72 | }..static.u16.ncp_reply_be16(str |
15480 | 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 | uct.ncp_server.*server,.int.offs |
154a0 | 65 74 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 62 65 31 36 | et).{..return.get_unaligned_be16 |
154c0 | 28 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 | (ncp_reply_data(server,.offset)) |
154e0 | 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 33 32 20 44 56 41 4c 5f 4c 48 28 63 | ;.}..static.inline.u32.DVAL_LH(c |
15500 | 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 | onst.void.*data).{..return.get_u |
15520 | 6e 61 6c 69 67 6e 65 64 5f 6c 65 33 32 28 64 61 74 61 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 5f | naligned_le32(data);.}..static._ |
15540 | 5f 6c 65 33 32 0a 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 | _le32.ncp_reply_dword(struct.ncp |
15560 | 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 0a 7b 0a 09 | _server.*server,.int.offset).{.. |
15580 | 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 28 28 5f 5f 6c 65 33 32 20 2a 29 6e | return.get_unaligned((__le32.*)n |
155a0 | 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0a | cp_reply_data(server,.offset));. |
155c0 | 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 5f 5f 75 33 32 20 6e 63 70 5f 72 65 70 6c 79 | }..static.inline.__u32.ncp_reply |
155e0 | 5f 64 77 6f 72 64 5f 6c 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 | _dword_lh(struct.ncp_server*.ser |
15600 | 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 20 7b 0a 09 72 65 74 75 72 6e 20 6c 65 33 32 5f | ver,.int.offset).{..return.le32_ |
15620 | 74 6f 5f 63 70 75 28 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 6f | to_cpu(ncp_reply_dword(server,.o |
15640 | 66 66 73 65 74 29 29 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 | ffset));.}..int.ncp_negotiate_bu |
15660 | 66 66 65 72 73 69 7a 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 | ffersize(struct.ncp_server.*serv |
15680 | 65 72 2c 20 69 6e 74 20 73 69 7a 65 2c 20 69 6e 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 69 6e | er,.int.size,.int.*target).{..in |
156a0 | 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 | t.result;...ncp_init_request(ser |
156c0 | 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 73 69 7a 65 | ver);..ncp_add_be16(server,.size |
156e0 | 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 | );...if.((result.=.ncp_request(s |
15700 | 65 72 76 65 72 2c 20 33 33 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b | erver,.33)).!=.0).{...ncp_unlock |
15720 | 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 | _server(server);...return.result |
15740 | 3b 0a 09 7d 0a 09 2a 74 61 72 67 65 74 20 3d 20 6d 69 6e 5f 74 28 75 6e 73 69 67 6e 65 64 20 69 | ;..}..*target.=.min_t(unsigned.i |
15760 | 6e 74 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 30 29 2c 20 73 | nt,.ncp_reply_be16(server,.0),.s |
15780 | 69 7a 65 29 3b 0a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | ize);...ncp_unlock_server(server |
157a0 | 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 0a 2f 2a 20 6f 70 74 69 6f 6e 73 3a 20 0a 20 | );..return.0;.}.../*.options:... |
157c0 | 2a 09 62 69 74 20 30 09 69 70 78 20 63 68 65 63 6b 73 75 6d 0a 20 2a 09 62 69 74 20 31 09 70 61 | *.bit.0.ipx.checksum..*.bit.1.pa |
157e0 | 63 6b 65 74 20 73 69 67 6e 69 6e 67 0a 20 2a 2f 0a 69 6e 74 0a 6e 63 70 5f 6e 65 67 6f 74 69 61 | cket.signing..*/.int.ncp_negotia |
15800 | 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 | te_size_and_options(struct.ncp_s |
15820 | 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 0a 09 69 6e 74 20 73 69 7a 65 2c 20 69 6e 74 20 6f | erver.*server,...int.size,.int.o |
15840 | 70 74 69 6f 6e 73 2c 20 69 6e 74 20 2a 72 65 74 5f 73 69 7a 65 2c 20 69 6e 74 20 2a 72 65 74 5f | ptions,.int.*ret_size,.int.*ret_ |
15860 | 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 2f 2a 20 74 68 65 | options).{..int.result;.../*.the |
15880 | 72 65 20 69 73 20 6d 69 6e 69 6d 75 6d 20 2a 2f 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 4e 43 50 | re.is.minimum.*/..if.(size.<.NCP |
158a0 | 5f 42 4c 4f 43 4b 5f 53 49 5a 45 29 20 73 69 7a 65 20 3d 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 | _BLOCK_SIZE).size.=.NCP_BLOCK_SI |
158c0 | 5a 45 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a | ZE;...ncp_init_request(server);. |
158e0 | 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 73 69 7a 65 29 3b 0a 09 6e 63 | .ncp_add_be16(server,.size);..nc |
15900 | 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 0a 09 | p_add_byte(server,.options);.... |
15920 | 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 | if.((result.=.ncp_request(server |
15940 | 2c 20 30 78 36 31 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 | ,.0x61)).!=.0)..{...ncp_unlock_s |
15960 | 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a | erver(server);...return.result;. |
15980 | 09 7d 0a 0a 09 2f 2a 20 4e 43 50 20 6f 76 65 72 20 55 44 50 20 72 65 74 75 72 6e 73 20 30 20 28 | .}.../*.NCP.over.UDP.returns.0.( |
159a0 | 21 21 21 29 20 2a 2f 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 | !!!).*/..result.=.ncp_reply_be16 |
159c0 | 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 3d 20 4e 43 50 5f | (server,.0);..if.(result.>=.NCP_ |
159e0 | 42 4c 4f 43 4b 5f 53 49 5a 45 29 0a 09 09 73 69 7a 65 20 3d 20 6d 69 6e 28 72 65 73 75 6c 74 2c | BLOCK_SIZE)...size.=.min(result, |
15a00 | 20 73 69 7a 65 29 3b 0a 09 2a 72 65 74 5f 73 69 7a 65 20 3d 20 73 69 7a 65 3b 0a 09 2a 72 65 74 | .size);..*ret_size.=.size;..*ret |
15a20 | 5f 6f 70 74 69 6f 6e 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 | _options.=.ncp_reply_byte(server |
15a40 | 2c 20 34 29 3b 0a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | ,.4);...ncp_unlock_server(server |
15a60 | 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c | );..return.0;.}..int.ncp_get_vol |
15a80 | 75 6d 65 5f 69 6e 66 6f 5f 77 69 74 68 5f 6e 75 6d 62 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f | ume_info_with_number(struct.ncp_ |
15aa0 | 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 20 20 69 6e 74 20 6e 2c 20 73 | server*.server,.........int.n,.s |
15ac0 | 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 20 7b | truct.ncp_volume_info*.target).{ |
15ae0 | 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6e 63 70 5f 69 6e | ..int.result;..int.len;...ncp_in |
15b00 | 69 74 5f 72 65 71 75 65 73 74 5f 73 28 73 65 72 76 65 72 2c 20 34 34 29 3b 0a 09 6e 63 70 5f 61 | it_request_s(server,.44);..ncp_a |
15b20 | 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6e 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c | dd_byte(server,.n);...if.((resul |
15b40 | 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 32 32 29 29 20 21 3d 20 | t.=.ncp_request(server,.22)).!=. |
15b60 | 30 29 20 7b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 74 61 72 67 65 74 2d 3e 74 6f 74 | 0).{...goto.out;..}..target->tot |
15b80 | 61 6c 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 | al_blocks.=.ncp_reply_dword_lh(s |
15ba0 | 65 72 76 65 72 2c 20 30 29 3b 0a 09 74 61 72 67 65 74 2d 3e 66 72 65 65 5f 62 6c 6f 63 6b 73 20 | erver,.0);..target->free_blocks. |
15bc0 | 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 34 29 3b | =.ncp_reply_dword_lh(server,.4); |
15be0 | 0a 09 74 61 72 67 65 74 2d 3e 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 | ..target->purgeable_blocks.=.ncp |
15c00 | 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 38 29 3b 0a 09 74 61 72 | _reply_dword_lh(server,.8);..tar |
15c20 | 67 65 74 2d 3e 6e 6f 74 5f 79 65 74 5f 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 | get->not_yet_purgeable_blocks.=. |
15c40 | 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 32 29 3b 0a | ncp_reply_dword_lh(server,.12);. |
15c60 | 09 74 61 72 67 65 74 2d 3e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 | .target->total_dir_entries.=.ncp |
15c80 | 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 36 29 3b 0a 09 74 61 | _reply_dword_lh(server,.16);..ta |
15ca0 | 72 67 65 74 2d 3e 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 | rget->available_dir_entries.=.nc |
15cc0 | 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a 09 74 | p_reply_dword_lh(server,.20);..t |
15ce0 | 61 72 67 65 74 2d 3e 73 65 63 74 6f 72 73 5f 70 65 72 5f 62 6c 6f 63 6b 20 3d 20 6e 63 70 5f 72 | arget->sectors_per_block.=.ncp_r |
15d00 | 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 38 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 | eply_byte(server,.28);...memset( |
15d20 | 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 2c 20 30 2c 20 73 69 7a 65 6f | &(target->volume_name),.0,.sizeo |
15d40 | 66 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 3b 0a 0a 09 72 65 73 75 6c | f(target->volume_name));...resul |
15d60 | 74 20 3d 20 2d 45 49 4f 3b 0a 09 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 | t.=.-EIO;..len.=.ncp_reply_byte( |
15d80 | 73 65 72 76 65 72 2c 20 32 39 29 3b 0a 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 56 4f 4c 4e | server,.29);..if.(len.>.NCP_VOLN |
15da0 | 41 4d 45 5f 4c 45 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 76 6f 6c 75 6d 65 20 | AME_LEN).{...ncp_dbg(1,."volume. |
15dc0 | 6e 61 6d 65 20 74 6f 6f 20 6c 6f 6e 67 3a 20 25 64 5c 6e 22 2c 20 6c 65 6e 29 3b 0a 09 09 67 6f | name.too.long:.%d\n",.len);...go |
15de0 | 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 6d 65 6d 63 70 79 28 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c | to.out;..}..memcpy(&(target->vol |
15e00 | 75 6d 65 5f 6e 61 6d 65 29 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 | ume_name),.ncp_reply_data(server |
15e20 | 2c 20 33 30 29 2c 20 6c 65 6e 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 | ,.30),.len);..result.=.0;.out:.. |
15e40 | 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 | ncp_unlock_server(server);..retu |
15e60 | 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 74 | rn.result;.}..int.ncp_get_direct |
15e80 | 6f 72 79 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 | ory_info(struct.ncp_server*.serv |
15ea0 | 65 72 2c 20 5f 5f 75 38 20 6e 2c 20 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 76 6f | er,.__u8.n,........struct.ncp_vo |
15ec0 | 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 | lume_info*.target).{..int.result |
15ee0 | 3b 0a 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 5f 73 | ;..int.len;...ncp_init_request_s |
15f00 | 28 73 65 72 76 65 72 2c 20 34 35 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | (server,.45);..ncp_add_byte(serv |
15f20 | 65 72 2c 20 6e 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 | er,.n);...if.((result.=.ncp_requ |
15f40 | 65 73 74 28 73 65 72 76 65 72 2c 20 32 32 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 67 6f 74 6f 20 | est(server,.22)).!=.0).{...goto. |
15f60 | 6f 75 74 3b 0a 09 7d 0a 09 74 61 72 67 65 74 2d 3e 74 6f 74 61 6c 5f 62 6c 6f 63 6b 73 20 3d 20 | out;..}..target->total_blocks.=. |
15f80 | 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 | ncp_reply_dword_lh(server,.0);.. |
15fa0 | 74 61 72 67 65 74 2d 3e 66 72 65 65 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f | target->free_blocks.=.ncp_reply_ |
15fc0 | 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 34 29 3b 0a 09 74 61 72 67 65 74 2d 3e 70 75 | dword_lh(server,.4);..target->pu |
15fe0 | 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 74 61 72 67 65 74 2d 3e 6e 6f 74 | rgeable_blocks.=.0;..target->not |
16000 | 5f 79 65 74 5f 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 74 61 72 67 | _yet_purgeable_blocks.=.0;..targ |
16020 | 65 74 2d 3e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c | et->total_dir_entries.=.ncp_repl |
16040 | 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 38 29 3b 0a 09 74 61 72 67 65 74 2d 3e | y_dword_lh(server,.8);..target-> |
16060 | 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c | available_dir_entries.=.ncp_repl |
16080 | 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 32 29 3b 0a 09 74 61 72 67 65 74 2d | y_dword_lh(server,.12);..target- |
160a0 | 3e 73 65 63 74 6f 72 73 5f 70 65 72 5f 62 6c 6f 63 6b 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 | >sectors_per_block.=.ncp_reply_b |
160c0 | 79 74 65 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 28 74 61 72 67 | yte(server,.20);...memset(&(targ |
160e0 | 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 2c 20 30 2c 20 73 69 7a 65 6f 66 28 74 61 72 67 | et->volume_name),.0,.sizeof(targ |
16100 | 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 | et->volume_name));...result.=.-E |
16120 | 49 4f 3b 0a 09 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 | IO;..len.=.ncp_reply_byte(server |
16140 | 2c 20 32 31 29 3b 0a 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 | ,.21);..if.(len.>.NCP_VOLNAME_LE |
16160 | 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 76 6f 6c 75 6d 65 20 6e 61 6d 65 20 74 | N).{...ncp_dbg(1,."volume.name.t |
16180 | 6f 6f 20 6c 6f 6e 67 3a 20 25 64 5c 6e 22 2c 20 6c 65 6e 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 | oo.long:.%d\n",.len);...goto.out |
161a0 | 3b 0a 09 7d 0a 09 6d 65 6d 63 70 79 28 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 | ;..}..memcpy(&(target->volume_na |
161c0 | 6d 65 29 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 32 32 29 2c | me),.ncp_reply_data(server,.22), |
161e0 | 20 6c 65 6e 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 6e 63 70 5f 75 6e | .len);..result.=.0;.out:..ncp_un |
16200 | 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 | lock_server(server);..return.res |
16220 | 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 73 74 72 75 63 | ult;.}..int.ncp_close_file(struc |
16240 | 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 | t.ncp_server.*server,.const.char |
16260 | 20 2a 66 69 6c 65 5f 69 64 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f | .*file_id).{..int.result;...ncp_ |
16280 | 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 | init_request(server);..ncp_add_b |
162a0 | 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 | yte(server,.0);..ncp_add_mem(ser |
162c0 | 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 | ver,.file_id,.6);...result.=.ncp |
162e0 | 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 36 36 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 | _request(server,.66);..ncp_unloc |
16300 | 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 | k_server(server);..return.result |
16320 | 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 73 74 72 75 63 74 20 | ;.}..int.ncp_make_closed(struct. |
16340 | 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 69 6e 74 20 65 72 72 3b 0a 0a 09 65 72 72 20 | inode.*inode).{..int.err;...err. |
16360 | 3d 20 30 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 | =.0;..mutex_lock(&NCP_FINFO(inod |
16380 | 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 69 66 20 28 61 74 6f 6d 69 63 5f 72 65 61 | e)->open_mutex);..if.(atomic_rea |
163a0 | 64 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 20 3d 3d 20 | d(&NCP_FINFO(inode)->opened).==. |
163c0 | 31 29 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f | 1).{...atomic_set(&NCP_FINFO(ino |
163e0 | 64 65 29 2d 3e 6f 70 65 6e 65 64 2c 20 30 29 3b 0a 09 09 65 72 72 20 3d 20 6e 63 70 5f 63 6c 6f | de)->opened,.0);...err.=.ncp_clo |
16400 | 73 65 5f 66 69 6c 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 | se_file(NCP_SERVER(inode),.NCP_F |
16420 | 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 0a 09 09 69 66 | INFO(inode)->file_handle);....if |
16440 | 20 28 21 65 72 72 29 0a 09 09 09 6e 63 70 5f 76 64 62 67 28 22 76 6f 6c 6e 75 6d 3d 25 64 2c 20 | .(!err)....ncp_vdbg("volnum=%d,. |
16460 | 64 69 72 65 6e 74 3d 25 75 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 0a 09 09 09 09 20 4e 43 50 | dirent=%u,.error=%d\n",......NCP |
16480 | 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 09 09 20 4e | _FINFO(inode)->volNumber,......N |
164a0 | 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 2c 20 65 72 72 29 | CP_FINFO(inode)->dirEntNum,.err) |
164c0 | 3b 0a 09 7d 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e | ;..}..mutex_unlock(&NCP_FINFO(in |
164e0 | 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 3b 0a | ode)->open_mutex);..return.err;. |
16500 | 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 | }..static.void.ncp_add_handle_pa |
16520 | 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f | th(struct.ncp_server.*server,.__ |
16540 | 75 38 20 76 6f 6c 5f 6e 75 6d 2c 0a 09 09 09 09 5f 5f 6c 65 33 32 20 64 69 72 5f 62 61 73 65 2c | u8.vol_num,.....__le32.dir_base, |
16560 | 20 69 6e 74 20 68 61 76 65 5f 64 69 72 5f 62 61 73 65 2c 20 0a 09 09 09 09 63 6f 6e 73 74 20 63 | .int.have_dir_base,......const.c |
16580 | 68 61 72 20 2a 70 61 74 68 29 0a 7b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 | har.*path).{..ncp_add_byte(serve |
165a0 | 72 2c 20 76 6f 6c 5f 6e 75 6d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 | r,.vol_num);..ncp_add_dword(serv |
165c0 | 65 72 2c 20 64 69 72 5f 62 61 73 65 29 3b 0a 09 69 66 20 28 68 61 76 65 5f 64 69 72 5f 62 61 73 | er,.dir_base);..if.(have_dir_bas |
165e0 | 65 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c | e.!=.0).{...ncp_add_byte(server, |
16600 | 20 31 29 3b 09 2f 2a 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 | .1);./*.dir_base.*/..}.else.{... |
16620 | 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 6e | ncp_add_byte(server,.0xff);./*.n |
16640 | 6f 20 68 61 6e 64 6c 65 20 2a 2f 0a 09 7d 0a 09 69 66 20 28 70 61 74 68 20 21 3d 20 4e 55 4c 4c | o.handle.*/..}..if.(path.!=.NULL |
16660 | 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f | ).{...ncp_add_byte(server,.1);./ |
16680 | 2a 20 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 | *.1.component.*/...ncp_add_pstri |
166a0 | 6e 67 28 73 65 72 76 65 72 2c 20 70 61 74 68 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e 63 | ng(server,.path);..}.else.{...nc |
166c0 | 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 7d 0a 7d 0a 0a 69 6e 74 | p_add_byte(server,.0);..}.}..int |
166e0 | 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 74 72 75 63 74 20 6e 63 70 5f | .ncp_dirhandle_alloc(struct.ncp_ |
16700 | 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c 20 5f 5f 6c | server*.server,.__u8.volnum,.__l |
16720 | 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 09 5f 5f 75 38 2a 20 64 69 72 68 61 6e 64 6c 65 29 20 | e32.dirent,....__u8*.dirhandle). |
16740 | 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 | {..int.result;...ncp_init_reques |
16760 | 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c | t(server);..ncp_add_byte(server, |
16780 | 20 31 32 29 3b 09 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 | .12);../*.subfunction.*/..ncp_ad |
167a0 | 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 4e 57 5f 4e 53 5f 44 4f 53 29 3b 0a 09 6e 63 70 5f | d_byte(server,.NW_NS_DOS);..ncp_ |
167c0 | 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f | add_byte(server,.0);..ncp_add_wo |
167e0 | 72 64 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 | rd(server,.0);..ncp_add_handle_p |
16800 | 61 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 4e | ath(server,.volnum,.dirent,.1,.N |
16820 | 55 4c 4c 29 3b 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 | ULL);..if.((result.=.ncp_request |
16840 | 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 3d 3d 20 30 29 20 7b 0a 09 09 2a 64 69 72 68 61 6e 64 | (server,.87)).==.0).{...*dirhand |
16860 | 6c 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a | le.=.ncp_reply_byte(server,.0);. |
16880 | 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 | .}..ncp_unlock_server(server);.. |
168a0 | 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 64 69 72 68 61 6e | return.result;.}..int.ncp_dirhan |
168c0 | 64 6c 65 5f 66 72 65 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 | dle_free(struct.ncp_server*.serv |
168e0 | 65 72 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c | er,.__u8.dirhandle).{..int.resul |
16900 | 74 3b 0a 09 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 5f 73 28 73 65 72 76 65 72 2c | t;....ncp_init_request_s(server, |
16920 | 20 32 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 64 69 72 68 | .20);..ncp_add_byte(server,.dirh |
16940 | 61 6e 64 6c 65 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 | andle);..result.=.ncp_request(se |
16960 | 72 76 65 72 2c 20 32 32 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 | rver,.22);..ncp_unlock_server(se |
16980 | 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 76 6f 69 64 20 6e | rver);..return.result;.}..void.n |
169a0 | 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 63 6f 6e 73 74 20 76 6f 69 64 20 | cp_extract_file_info(const.void. |
169c0 | 2a 73 74 72 75 63 74 75 72 65 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 | *structure,.struct.nw_info_struc |
169e0 | 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 6e 61 6d 65 5f 6c | t.*target).{..const.__u8.*name_l |
16a00 | 65 6e 3b 0a 09 63 6f 6e 73 74 20 69 6e 74 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 69 7a 65 20 | en;..const.int.info_struct_size. |
16a20 | 3d 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 | =.offsetof(struct.nw_info_struct |
16a40 | 2c 20 6e 61 6d 65 4c 65 6e 29 3b 0a 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2c 20 73 74 72 | ,.nameLen);...memcpy(target,.str |
16a60 | 75 63 74 75 72 65 2c 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 69 7a 65 29 3b 0a 09 6e 61 6d 65 | ucture,.info_struct_size);..name |
16a80 | 5f 6c 65 6e 20 3d 20 73 74 72 75 63 74 75 72 65 20 2b 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 | _len.=.structure.+.info_struct_s |
16aa0 | 69 7a 65 3b 0a 09 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 20 3d 20 2a 6e 61 6d 65 5f 6c 65 | ize;..target->nameLen.=.*name_le |
16ac0 | 6e 3b 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 6e 61 | n;..memcpy(target->entryName,.na |
16ae0 | 6d 65 5f 6c 65 6e 20 2b 20 31 2c 20 2a 6e 61 6d 65 5f 6c 65 6e 29 3b 0a 09 74 61 72 67 65 74 2d | me_len.+.1,.*name_len);..target- |
16b00 | 3e 65 6e 74 72 79 4e 61 6d 65 5b 2a 6e 61 6d 65 5f 6c 65 6e 5d 20 3d 20 27 5c 30 27 3b 0a 09 74 | >entryName[*name_len].=.'\0';..t |
16b20 | 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 6c 65 33 32 5f 74 6f 5f 63 70 75 28 74 | arget->volNumber.=.le32_to_cpu(t |
16b40 | 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 23 | arget->volNumber);..return;.}..# |
16b60 | 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 73 74 61 74 69 63 | ifdef.CONFIG_NCPFS_NFS_NS.static |
16b80 | 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 65 78 74 72 61 63 74 5f 6e 66 73 5f 69 6e 66 | .inline.void.ncp_extract_nfs_inf |
16ba0 | 6f 28 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 74 72 75 63 74 75 72 65 | o(const.unsigned.char.*structure |
16bc0 | 2c 0a 09 09 09 09 20 73 74 72 75 63 74 20 6e 77 5f 6e 66 73 5f 69 6e 66 6f 20 2a 74 61 72 67 65 | ,......struct.nw_nfs_info.*targe |
16be0 | 74 29 0a 7b 0a 09 74 61 72 67 65 74 2d 3e 6d 6f 64 65 20 3d 20 44 56 41 4c 5f 4c 48 28 73 74 72 | t).{..target->mode.=.DVAL_LH(str |
16c00 | 75 63 74 75 72 65 29 3b 0a 09 74 61 72 67 65 74 2d 3e 72 64 65 76 20 3d 20 44 56 41 4c 5f 4c 48 | ucture);..target->rdev.=.DVAL_LH |
16c20 | 28 73 74 72 75 63 74 75 72 65 20 2b 20 38 29 3b 0a 7d 0a 23 65 6e 64 69 66 0a 0a 69 6e 74 20 6e | (structure.+.8);.}.#endif..int.n |
16c40 | 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 | cp_obtain_nfs_info(struct.ncp_se |
16c60 | 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 6e | rver.*server,...........struct.n |
16c80 | 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 0a 7b 0a 09 69 6e 74 20 72 | w_info_struct.*target)..{..int.r |
16ca0 | 65 73 75 6c 74 20 3d 20 30 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e | esult.=.0;.#ifdef.CONFIG_NCPFS_N |
16cc0 | 46 53 5f 4e 53 0a 09 5f 5f 75 33 32 20 76 6f 6c 6e 75 6d 20 3d 20 74 61 72 67 65 74 2d 3e 76 6f | FS_NS..__u32.volnum.=.target->vo |
16ce0 | 6c 4e 75 6d 62 65 72 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 | lNumber;...if.(ncp_is_nfs_extras |
16d00 | 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 29 20 7b 0a 09 09 6e 63 70 5f 69 6e 69 74 5f 72 | (server,.volnum)).{...ncp_init_r |
16d20 | 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 | equest(server);...ncp_add_byte(s |
16d40 | 65 72 76 65 72 2c 20 31 39 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 | erver,.19);./*.subfunction.*/... |
16d60 | 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d | ncp_add_byte(server,.server->nam |
16d80 | 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 | e_space[volnum]);...ncp_add_byte |
16da0 | 28 73 65 72 76 65 72 2c 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 | (server,.NW_NS_NFS);...ncp_add_b |
16dc0 | 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 | yte(server,.0);...ncp_add_byte(s |
16de0 | 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 | erver,.volnum);...ncp_add_dword( |
16e00 | 73 65 72 76 65 72 2c 20 74 61 72 67 65 74 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 09 2f 2a | server,.target->dirEntNum);.../* |
16e20 | 20 57 65 20 6d 75 73 74 20 72 65 74 72 69 65 76 65 20 62 6f 74 68 20 6e 6c 69 6e 6b 73 20 61 6e | .We.must.retrieve.both.nlinks.an |
16e40 | 64 20 72 64 65 76 2c 20 6f 74 68 65 72 77 69 73 65 20 73 6f 6d 65 20 73 65 72 76 65 72 20 76 65 | d.rdev,.otherwise.some.server.ve |
16e60 | 72 73 69 6f 6e 73 0a 09 09 20 20 20 72 65 70 6f 72 74 20 7a 65 72 6f 65 73 20 69 6e 73 74 65 61 | rsions......report.zeroes.instea |
16e80 | 64 20 6f 66 20 76 61 6c 69 64 20 64 61 74 61 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f | d.of.valid.data.*/...ncp_add_dwo |
16ea0 | 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 4e 53 49 42 4d 5f 4e 46 53 5f 4d 4f 44 45 20 7c 20 4e | rd_lh(server,.NSIBM_NFS_MODE.|.N |
16ec0 | 53 49 42 4d 5f 4e 46 53 5f 4e 4c 49 4e 4b 53 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 52 44 45 56 | SIBM_NFS_NLINKS.|.NSIBM_NFS_RDEV |
16ee0 | 29 3b 0a 0a 09 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 | );....if.((result.=.ncp_request( |
16f00 | 73 65 72 76 65 72 2c 20 38 37 29 29 20 3d 3d 20 30 29 20 7b 0a 09 09 09 6e 63 70 5f 65 78 74 72 | server,.87)).==.0).{....ncp_extr |
16f20 | 61 63 74 5f 6e 66 73 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 | act_nfs_info(ncp_reply_data(serv |
16f40 | 65 72 2c 20 30 29 2c 20 26 74 61 72 67 65 74 2d 3e 6e 66 73 29 3b 0a 09 09 09 6e 63 70 5f 64 62 | er,.0),.&target->nfs);....ncp_db |
16f60 | 67 28 31 2c 20 22 28 25 73 29 20 6d 6f 64 65 3d 30 25 6f 2c 20 72 64 65 76 3d 30 78 25 78 5c 6e | g(1,."(%s).mode=0%o,.rdev=0x%x\n |
16f80 | 22 2c 0a 09 09 09 09 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 74 61 72 67 65 74 | ",.....target->entryName,.target |
16fa0 | 2d 3e 6e 66 73 2e 6d 6f 64 65 2c 0a 09 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 72 64 65 76 | ->nfs.mode,.....target->nfs.rdev |
16fc0 | 29 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 6d 6f 64 | );...}.else.{....target->nfs.mod |
16fe0 | 65 20 3d 20 30 3b 0a 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 72 64 65 76 20 3d 20 30 3b 0a | e.=.0;....target->nfs.rdev.=.0;. |
17000 | 09 09 7d 0a 09 20 20 20 20 20 20 20 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 | ..}..........ncp_unlock_server(s |
17020 | 65 72 76 65 72 29 3b 0a 0a 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 7b 0a 09 09 74 61 72 | erver);...}.else.#endif..{...tar |
17040 | 67 65 74 2d 3e 6e 66 73 2e 6d 6f 64 65 20 3d 20 30 3b 0a 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 | get->nfs.mode.=.0;...target->nfs |
17060 | 2e 72 64 65 76 20 3d 20 30 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a | .rdev.=.0;..}..return.result;.}. |
17080 | 0a 2f 2a 0a 20 2a 20 52 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 61 | ./*..*.Returns.information.for.a |
170a0 | 20 28 6f 6e 65 2d 63 6f 6d 70 6f 6e 65 6e 74 29 20 6e 61 6d 65 20 72 65 6c 61 74 69 76 65 20 74 | .(one-component).name.relative.t |
170c0 | 6f 0a 20 2a 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 64 69 72 65 63 74 6f 72 79 2e 0a 20 2a | o..*.the.specified.directory...* |
170e0 | 2f 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 | /.int.ncp_obtain_info(struct.ncp |
17100 | 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 | _server.*server,.struct.inode.*d |
17120 | 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 0a 09 09 09 73 74 72 75 63 74 20 | ir,.const.char.*path,....struct. |
17140 | 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f 75 38 20 | nw_info_struct.*target).{..__u8. |
17160 | 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d | .volnum.=.NCP_FINFO(dir)->volNum |
17180 | 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 | ber;..__le32.dirent.=.NCP_FINFO( |
171a0 | 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 | dir)->dirEntNum;..int.result;... |
171c0 | 69 66 20 28 74 61 72 67 65 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 22 | if.(target.==.NULL).{...pr_err(" |
171e0 | 25 73 3a 20 69 6e 76 61 6c 69 64 20 63 61 6c 6c 5c 6e 22 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a | %s:.invalid.call\n",.__func__);. |
17200 | 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 7d 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 | ..return.-EINVAL;..}..ncp_init_r |
17220 | 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 | equest(server);..ncp_add_byte(se |
17240 | 72 76 65 72 2c 20 36 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 | rver,.6);./*.subfunction.*/..ncp |
17260 | 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 | _add_byte(server,.server->name_s |
17280 | 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 | pace[volnum]);..ncp_add_byte(ser |
172a0 | 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 | ver,.server->name_space[volnum]) |
172c0 | 3b 20 2f 2a 20 4e 2e 42 2e 20 74 77 69 63 65 20 3f 3f 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 | ;./*.N.B..twice.??.*/..ncp_add_w |
172e0 | 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 | ord(server,.cpu_to_le16(0x8006)) |
17300 | 3b 09 2f 2a 20 67 65 74 20 61 6c 6c 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 | ;./*.get.all.*/..ncp_add_dword(s |
17320 | 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 | erver,.RIM_ALL);..ncp_add_handle |
17340 | 5f 70 61 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c | _path(server,.volnum,.dirent,.1, |
17360 | 20 70 61 74 68 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 | .path);...if.((result.=.ncp_requ |
17380 | 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 | est(server,.87)).!=.0)...goto.ou |
173a0 | 74 3b 0a 09 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 | t;..ncp_extract_file_info(ncp_re |
173c0 | 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 30 29 2c 20 74 61 72 67 65 74 29 3b 0a 09 6e | ply_data(server,.0),.target);..n |
173e0 | 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 0a 09 72 65 73 | cp_unlock_server(server);....res |
17400 | 75 6c 74 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 | ult.=.ncp_obtain_nfs_info(server |
17420 | 2c 20 74 61 72 67 65 74 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 0a 6f 75 74 3a | ,.target);..return.result;..out: |
17440 | 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 | ..ncp_unlock_server(server);..re |
17460 | 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 | turn.result;.}..#ifdef.CONFIG_NC |
17480 | 50 46 53 5f 4e 46 53 5f 4e 53 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 6f 62 74 61 69 6e | PFS_NFS_NS.static.int.ncp_obtain |
174a0 | 5f 44 4f 53 5f 64 69 72 5f 62 61 73 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | _DOS_dir_base(struct.ncp_server. |
174c0 | 2a 73 65 72 76 65 72 2c 0a 09 09 5f 5f 75 38 20 6e 73 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c | *server,...__u8.ns,.__u8.volnum, |
174e0 | 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 | .__le32.dirent,...const.char.*pa |
17500 | 74 68 2c 20 2f 2a 20 41 74 20 6d 6f 73 74 20 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 | th,./*.At.most.1.component.*/... |
17520 | 5f 5f 6c 65 33 32 20 2a 44 4f 53 5f 64 69 72 5f 62 61 73 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 | __le32.*DOS_dir_base).{..int.res |
17540 | 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b | ult;...ncp_init_request(server); |
17560 | 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 36 29 3b 20 2f 2a 20 73 75 | ..ncp_add_byte(server,.6);./*.su |
17580 | 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 | bfunction.*/..ncp_add_byte(serve |
175a0 | 72 2c 20 6e 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6e 73 | r,.ns);..ncp_add_byte(server,.ns |
175c0 | 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f | );..ncp_add_word(server,.cpu_to_ |
175e0 | 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 20 2f 2a 20 67 65 74 20 61 6c 6c 20 2a 2f 0a 09 6e 63 | le16(0x8006));./*.get.all.*/..nc |
17600 | 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 44 49 52 45 43 54 4f 52 | p_add_dword(server,.RIM_DIRECTOR |
17620 | 59 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 2c | Y);..ncp_add_handle_path(server, |
17640 | 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a 09 69 66 20 | .volnum,.dirent,.1,.path);...if. |
17660 | 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 | ((result.=.ncp_request(server,.8 |
17680 | 37 29 29 20 3d 3d 20 30 29 0a 09 7b 0a 09 20 20 20 09 69 66 20 28 44 4f 53 5f 64 69 72 5f 62 61 | 7)).==.0)..{......if.(DOS_dir_ba |
176a0 | 73 65 29 20 2a 44 4f 53 5f 64 69 72 5f 62 61 73 65 3d 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 | se).*DOS_dir_base=ncp_reply_dwor |
176c0 | 64 28 73 65 72 76 65 72 2c 20 30 78 33 34 29 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f | d(server,.0x34);..}..ncp_unlock_ |
176e0 | 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a | server(server);..return.result;. |
17700 | 7d 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 20 | }.#endif./*.CONFIG_NCPFS_NFS_NS. |
17720 | 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 6b 6e | */..static.inline.int.ncp_get_kn |
17740 | 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | own_namespace(struct.ncp_server. |
17760 | 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 29 0a 7b 0a 23 69 66 20 64 65 66 69 | *server,.__u8.volume).{.#if.defi |
17780 | 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 29 20 7c 7c 20 64 65 66 69 | ned(CONFIG_NCPFS_OS2_NS).||.defi |
177a0 | 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 09 69 6e 74 20 72 65 | ned(CONFIG_NCPFS_NFS_NS)..int.re |
177c0 | 73 75 6c 74 3b 0a 09 5f 5f 75 38 20 2a 6e 61 6d 65 73 70 61 63 65 3b 0a 09 5f 5f 75 31 36 20 6e | sult;..__u8.*namespace;..__u16.n |
177e0 | 6f 5f 6e 61 6d 65 73 70 61 63 65 73 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 | o_namespaces;...ncp_init_request |
17800 | 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 | (server);..ncp_add_byte(server,. |
17820 | 32 34 29 3b 09 2f 2a 20 53 75 62 66 75 6e 63 74 69 6f 6e 3a 20 47 65 74 20 4e 61 6d 65 20 53 70 | 24);./*.Subfunction:.Get.Name.Sp |
17840 | 61 63 65 73 20 4c 6f 61 64 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 | aces.Loaded.*/..ncp_add_word(ser |
17860 | 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 76 | ver,.0);..ncp_add_byte(server,.v |
17880 | 6f 6c 75 6d 65 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 | olume);...if.((result.=.ncp_requ |
178a0 | 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 75 | est(server,.87)).!=.0).{...ncp_u |
178c0 | 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 4e | nlock_server(server);...return.N |
178e0 | 57 5f 4e 53 5f 44 4f 53 3b 20 2f 2a 20 6e 6f 74 20 72 65 73 75 6c 74 20 3f 3f 20 2a 2f 0a 09 7d | W_NS_DOS;./*.not.result.??.*/..} |
17900 | 0a 0a 09 72 65 73 75 6c 74 20 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a 09 6e 6f 5f 6e 61 6d 65 73 | ...result.=.NW_NS_DOS;..no_names |
17920 | 70 61 63 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 30 | paces.=.ncp_reply_le16(server,.0 |
17940 | 29 3b 0a 09 6e 61 6d 65 73 70 61 63 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 | );..namespace.=.ncp_reply_data(s |
17960 | 65 72 76 65 72 2c 20 32 29 3b 0a 0a 09 77 68 69 6c 65 20 28 6e 6f 5f 6e 61 6d 65 73 70 61 63 65 | erver,.2);...while.(no_namespace |
17980 | 73 20 3e 20 30 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 66 6f 75 6e 64 20 25 64 20 | s.>.0).{...ncp_dbg(1,."found.%d. |
179a0 | 6f 6e 20 25 64 5c 6e 22 2c 20 2a 6e 61 6d 65 73 70 61 63 65 2c 20 76 6f 6c 75 6d 65 29 3b 0a 0a | on.%d\n",.*namespace,.volume);.. |
179c0 | 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 69 66 20 | #ifdef.CONFIG_NCPFS_NFS_NS...if. |
179e0 | 28 28 2a 6e 61 6d 65 73 70 61 63 65 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 20 26 26 20 21 28 | ((*namespace.==.NW_NS_NFS).&&.!( |
17a00 | 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 26 4e 43 50 5f 4d 4f 55 4e 54 5f 4e 4f 5f 4e 46 53 | server->m.flags&NCP_MOUNT_NO_NFS |
17a20 | 29 29 20 0a 09 09 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 4e 57 5f 4e 53 5f 4e 46 53 3b 0a 09 | ))....{....result.=.NW_NS_NFS;.. |
17a40 | 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 | ..break;...}.#endif./*.CONFIG_NC |
17a60 | 50 46 53 5f 4e 46 53 5f 4e 53 20 2a 2f 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 | PFS_NFS_NS.*/.#ifdef.CONFIG_NCPF |
17a80 | 53 5f 4f 53 32 5f 4e 53 0a 09 09 69 66 20 28 28 2a 6e 61 6d 65 73 70 61 63 65 20 3d 3d 20 4e 57 | S_OS2_NS...if.((*namespace.==.NW |
17aa0 | 5f 4e 53 5f 4f 53 32 29 20 26 26 20 21 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 26 4e 43 | _NS_OS2).&&.!(server->m.flags&NC |
17ac0 | 50 5f 4d 4f 55 4e 54 5f 4e 4f 5f 4f 53 32 29 29 0a 09 09 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d | P_MOUNT_NO_OS2))...{....result.= |
17ae0 | 20 4e 57 5f 4e 53 5f 4f 53 32 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 | .NW_NS_OS2;...}.#endif./*.CONFIG |
17b00 | 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 20 2a 2f 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 2b 3d 20 | _NCPFS_OS2_NS.*/...namespace.+=. |
17b20 | 31 3b 0a 09 09 6e 6f 5f 6e 61 6d 65 73 70 61 63 65 73 20 2d 3d 20 31 3b 0a 09 7d 0a 09 6e 63 70 | 1;...no_namespaces.-=.1;..}..ncp |
17b40 | 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 | _unlock_server(server);..return. |
17b60 | 72 65 73 75 6c 74 3b 0a 23 65 6c 73 65 09 2f 2a 20 6e 65 69 74 68 65 72 20 4f 53 32 20 6e 6f 72 | result;.#else./*.neither.OS2.nor |
17b80 | 20 4e 46 53 20 2d 20 6f 6e 6c 79 20 44 4f 53 20 2a 2f 0a 09 72 65 74 75 72 6e 20 4e 57 5f 4e 53 | .NFS.-.only.DOS.*/..return.NW_NS |
17ba0 | 5f 44 4f 53 3b 0a 23 65 6e 64 69 66 09 2f 2a 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e | _DOS;.#endif./*.defined(CONFIG_N |
17bc0 | 43 50 46 53 5f 4f 53 32 5f 4e 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e | CPFS_OS2_NS).||.defined(CONFIG_N |
17be0 | 43 50 46 53 5f 4e 46 53 5f 4e 53 29 20 2a 2f 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 75 70 64 61 74 | CPFS_NFS_NS).*/.}..int.ncp_updat |
17c00 | 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 | e_known_namespace(struct.ncp_ser |
17c20 | 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 2c 20 69 6e 74 20 2a 72 | ver.*server,.__u8.volume,.int.*r |
17c40 | 65 74 5f 6e 73 29 0a 7b 0a 09 69 6e 74 20 6e 73 20 3d 20 6e 63 70 5f 67 65 74 5f 6b 6e 6f 77 6e | et_ns).{..int.ns.=.ncp_get_known |
17c60 | 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 76 6f 6c 75 6d 65 29 3b 0a 0a 09 69 66 | _namespace(server,.volume);...if |
17c80 | 20 28 72 65 74 5f 6e 73 29 0a 09 09 2a 72 65 74 5f 6e 73 20 3d 20 6e 73 3b 0a 0a 09 6e 63 70 5f | .(ret_ns)...*ret_ns.=.ns;...ncp_ |
17ca0 | 64 62 67 28 31 2c 20 22 6e 61 6d 65 73 70 61 63 65 5b 25 64 5d 20 3d 20 25 64 5c 6e 22 2c 20 76 | dbg(1,."namespace[%d].=.%d\n",.v |
17cc0 | 6f 6c 75 6d 65 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 75 6d 65 | olume,.server->name_space[volume |
17ce0 | 5d 29 3b 0a 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c | ]);...if.(server->name_space[vol |
17d00 | 75 6d 65 5d 20 3d 3d 20 6e 73 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 73 65 72 76 65 72 2d | ume].==.ns)...return.0;..server- |
17d20 | 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 75 6d 65 5d 20 3d 20 6e 73 3b 0a 09 72 65 74 75 72 | >name_space[volume].=.ns;..retur |
17d40 | 6e 20 31 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 4f 62 74 61 69 6e 53 70 65 | n.1;.}..static.int.ncp_ObtainSpe |
17d60 | 63 69 66 69 63 44 69 72 42 61 73 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a | cificDirBase(struct.ncp_server.* |
17d80 | 73 65 72 76 65 72 2c 0a 09 09 5f 5f 75 38 20 6e 73 53 72 63 2c 20 5f 5f 75 38 20 6e 73 44 73 74 | server,...__u8.nsSrc,.__u8.nsDst |
17da0 | 2c 20 5f 5f 75 38 20 76 6f 6c 5f 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 69 72 5f 62 61 73 65 2c | ,.__u8.vol_num,.__le32.dir_base, |
17dc0 | 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 20 2f 2a 20 41 74 20 6d 6f 73 74 20 | ...const.char.*path,./*.At.most. |
17de0 | 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 5f 5f 6c 65 33 32 20 2a 64 69 72 45 6e 74 4e | 1.component.*/...__le32.*dirEntN |
17e00 | 75 6d 2c 20 5f 5f 6c 65 33 32 20 2a 44 6f 73 44 69 72 4e 75 6d 29 0a 7b 0a 09 69 6e 74 20 72 65 | um,.__le32.*DosDirNum).{..int.re |
17e20 | 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 | sult;...ncp_init_request(server) |
17e40 | 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 36 29 3b 20 2f 2a 20 73 | ;..ncp_add_byte(server,.6);./*.s |
17e60 | 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | ubfunction.*/..ncp_add_byte(serv |
17e80 | 65 72 2c 20 6e 73 53 72 63 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 | er,.nsSrc);..ncp_add_byte(server |
17ea0 | 2c 20 6e 73 44 73 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 | ,.nsDst);..ncp_add_word(server,. |
17ec0 | 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 20 2f 2a 20 67 65 74 20 61 6c 6c | cpu_to_le16(0x8006));./*.get.all |
17ee0 | 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 | .*/..ncp_add_dword(server,.RIM_A |
17f00 | 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 | LL);..ncp_add_handle_path(server |
17f20 | 2c 20 76 6f 6c 5f 6e 75 6d 2c 20 64 69 72 5f 62 61 73 65 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a | ,.vol_num,.dir_base,.1,.path);.. |
17f40 | 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 | .if.((result.=.ncp_request(serve |
17f60 | 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 | r,.87)).!=.0)..{...ncp_unlock_se |
17f80 | 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 | rver(server);...return.result;.. |
17fa0 | 7d 0a 0a 09 69 66 20 28 64 69 72 45 6e 74 4e 75 6d 29 0a 09 09 2a 64 69 72 45 6e 74 4e 75 6d 20 | }...if.(dirEntNum)...*dirEntNum. |
17fc0 | 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 30 78 33 30 29 3b | =.ncp_reply_dword(server,.0x30); |
17fe0 | 0a 09 69 66 20 28 44 6f 73 44 69 72 4e 75 6d 29 0a 09 09 2a 44 6f 73 44 69 72 4e 75 6d 20 3d 20 | ..if.(DosDirNum)...*DosDirNum.=. |
18000 | 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 30 78 33 34 29 3b 0a 09 | ncp_reply_dword(server,.0x34);.. |
18020 | 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 | ncp_unlock_server(server);..retu |
18040 | 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 72 28 73 74 | rn.0;.}..int.ncp_mount_subdir(st |
18060 | 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 5f 5f 75 38 | ruct.ncp_server.*server,....__u8 |
18080 | 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 5f 5f 75 38 20 73 72 63 4e 53 2c 20 5f 5f 6c 65 33 32 20 64 | .volNumber,.__u8.srcNS,.__le32.d |
180a0 | 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c 65 | irEntNum,....__u32*.volume,.__le |
180c0 | 33 32 2a 20 6e 65 77 44 69 72 45 6e 74 2c 20 5f 5f 6c 65 33 32 2a 20 6e 65 77 44 6f 73 45 6e 74 | 32*.newDirEnt,.__le32*.newDosEnt |
180e0 | 29 0a 7b 0a 09 69 6e 74 20 64 73 74 4e 53 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e | ).{..int.dstNS;..int.result;...n |
18100 | 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 | cp_update_known_namespace(server |
18120 | 2c 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 64 73 74 4e 53 29 3b 0a 09 69 66 20 28 28 72 65 73 75 | ,.volNumber,.&dstNS);..if.((resu |
18140 | 6c 74 20 3d 20 6e 63 70 5f 4f 62 74 61 69 6e 53 70 65 63 69 66 69 63 44 69 72 42 61 73 65 28 73 | lt.=.ncp_ObtainSpecificDirBase(s |
18160 | 65 72 76 65 72 2c 20 73 72 63 4e 53 2c 20 64 73 74 4e 53 2c 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 | erver,.srcNS,.dstNS,.volNumber,. |
18180 | 0a 09 09 09 09 20 20 20 20 20 20 64 69 72 45 6e 74 4e 75 6d 2c 20 4e 55 4c 4c 2c 20 6e 65 77 44 | ...........dirEntNum,.NULL,.newD |
181a0 | 69 72 45 6e 74 2c 20 6e 65 77 44 6f 73 45 6e 74 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 72 65 | irEnt,.newDosEnt)).!=.0)..{...re |
181c0 | 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 2a 76 6f 6c 75 6d 65 20 3d 20 76 6f 6c 4e 75 | turn.result;..}..*volume.=.volNu |
181e0 | 6d 62 65 72 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 31 5d 20 | mber;..server->m.mounted_vol[1]. |
18200 | 3d 20 30 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d | =.0;..server->m.mounted_vol[0].= |
18220 | 20 27 58 27 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 20 0a 6e 63 70 5f 67 65 74 | .'X';..return.0;.}..int..ncp_get |
18240 | 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a | _volume_root(struct.ncp_server.* |
18260 | 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d | server,.......const.char.*volnam |
18280 | 65 2c 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c 65 33 32 2a 20 64 69 72 65 6e 74 | e,.__u32*.volume,.__le32*.dirent |
182a0 | 2c 20 5f 5f 6c 65 33 32 2a 20 64 6f 73 64 69 72 65 6e 74 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 | ,.__le32*.dosdirent).{..int.resu |
182c0 | 6c 74 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6c 6f 6f 6b 69 6e 67 20 75 70 20 76 6f 6c | lt;...ncp_dbg(1,."looking.up.vol |
182e0 | 20 25 73 5c 6e 22 2c 20 76 6f 6c 6e 61 6d 65 29 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 | .%s\n",.volname);...ncp_init_req |
18300 | 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | uest(server);..ncp_add_byte(serv |
18320 | 65 72 2c 20 32 32 29 3b 09 2f 2a 20 53 75 62 66 75 6e 63 74 69 6f 6e 3a 20 47 65 6e 65 72 61 74 | er,.22);./*.Subfunction:.Generat |
18340 | 65 20 64 69 72 20 68 61 6e 64 6c 65 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 | e.dir.handle.*/..ncp_add_byte(se |
18360 | 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 44 4f 53 20 6e 61 6d 65 73 70 61 63 65 20 2a 2f 0a 09 6e | rver,.0);./*.DOS.namespace.*/..n |
18380 | 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 | cp_add_byte(server,.0);./*.reser |
183a0 | 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b | ved.*/..ncp_add_byte(server,.0); |
183c0 | 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 | ./*.reserved.*/..ncp_add_byte(se |
183e0 | 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 0a 09 6e 63 70 5f 61 | rver,.0);./*.reserved.*/...ncp_a |
18400 | 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 66 61 6b 65 64 20 76 6f 6c | dd_byte(server,.0);./*.faked.vol |
18420 | 75 6d 65 20 6e 75 6d 62 65 72 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 | ume.number.*/..ncp_add_dword(ser |
18440 | 76 65 72 2c 20 30 29 3b 09 2f 2a 20 66 61 6b 65 64 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 6e | ver,.0);./*.faked.dir_base.*/..n |
18460 | 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 44 6f | cp_add_byte(server,.0xff);./*.Do |
18480 | 6e 27 74 20 68 61 76 65 20 61 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f | n't.have.a.dir_base.*/..ncp_add_ |
184a0 | 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 31 20 70 61 74 68 20 63 6f 6d 70 6f | byte(server,.1);./*.1.path.compo |
184c0 | 6e 65 6e 74 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c | nent.*/..ncp_add_pstring(server, |
184e0 | 20 76 6f 6c 6e 61 6d 65 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 | .volname);...if.((result.=.ncp_r |
18500 | 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 | equest(server,.87)).!=.0).{...nc |
18520 | 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 | p_unlock_server(server);...retur |
18540 | 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 2a 64 69 72 65 6e 74 20 3d 20 2a 64 6f 73 64 69 72 65 | n.result;..}..*dirent.=.*dosdire |
18560 | 6e 74 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 34 29 3b | nt.=.ncp_reply_dword(server,.4); |
18580 | 0a 09 2a 76 6f 6c 75 6d 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 | ..*volume.=.ncp_reply_byte(serve |
185a0 | 72 2c 20 38 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | r,.8);..ncp_unlock_server(server |
185c0 | 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6c 6f 6f 6b 75 70 5f | );..return.0;.}..int.ncp_lookup_ |
185e0 | 76 6f 6c 75 6d 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 | volume(struct.ncp_server.*server |
18600 | 2c 0a 09 09 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d 65 2c 20 73 74 72 75 63 | ,.....const.char.*volname,.struc |
18620 | 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 69 6e 74 | t.nw_info_struct.*target).{..int |
18640 | 20 72 65 73 75 6c 74 3b 0a 0a 09 6d 65 6d 73 65 74 28 74 61 72 67 65 74 2c 20 30 2c 20 73 69 7a | .result;...memset(target,.0,.siz |
18660 | 65 6f 66 28 2a 74 61 72 67 65 74 29 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 67 65 74 | eof(*target));..result.=.ncp_get |
18680 | 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 61 6d 65 2c 0a 09 09 | _volume_root(server,.volname,... |
186a0 | 09 26 74 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 74 61 72 67 65 74 2d 3e 64 69 | .&target->volNumber,.&target->di |
186c0 | 72 45 6e 74 4e 75 6d 2c 20 26 74 61 72 67 65 74 2d 3e 44 6f 73 44 69 72 4e 75 6d 29 3b 0a 09 69 | rEntNum,.&target->DosDirNum);..i |
186e0 | 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d | f.(result).{...return.result;..} |
18700 | 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 | ..ncp_update_known_namespace(ser |
18720 | 76 65 72 2c 20 74 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 | ver,.target->volNumber,.NULL);.. |
18740 | 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 76 6f 6c 6e 61 6d 65 | target->nameLen.=.strlen(volname |
18760 | 29 3b 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 76 6f | );..memcpy(target->entryName,.vo |
18780 | 6c 6e 61 6d 65 2c 20 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 2b 31 29 3b 0a 09 74 61 72 67 | lname,.target->nameLen+1);..targ |
187a0 | 65 74 2d 3e 61 74 74 72 69 62 75 74 65 73 20 3d 20 61 44 49 52 3b 0a 09 2f 2a 20 73 65 74 20 64 | et->attributes.=.aDIR;../*.set.d |
187c0 | 61 74 65 73 20 74 6f 20 4a 61 6e 20 31 2c 20 31 39 38 36 20 20 30 30 3a 30 30 20 2a 2f 0a 09 74 | ates.to.Jan.1,.1986..00:00.*/..t |
187e0 | 61 72 67 65 74 2d 3e 63 72 65 61 74 69 6f 6e 54 69 6d 65 20 3d 20 74 61 72 67 65 74 2d 3e 6d 6f | arget->creationTime.=.target->mo |
18800 | 64 69 66 79 54 69 6d 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 30 30 30 29 3b 0a | difyTime.=.cpu_to_le16(0x0000);. |
18820 | 09 74 61 72 67 65 74 2d 3e 63 72 65 61 74 69 6f 6e 44 61 74 65 20 3d 20 74 61 72 67 65 74 2d 3e | .target->creationDate.=.target-> |
18840 | 6d 6f 64 69 66 79 44 61 74 65 20 3d 20 74 61 72 67 65 74 2d 3e 6c 61 73 74 41 63 63 65 73 73 44 | modifyDate.=.target->lastAccessD |
18860 | 61 74 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 43 32 31 29 3b 0a 09 74 61 72 67 | ate.=.cpu_to_le16(0x0C21);..targ |
18880 | 65 74 2d 3e 6e 66 73 2e 6d 6f 64 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a | et->nfs.mode.=.0;..return.0;.}.. |
188a0 | 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f | int.ncp_modify_file_or_subdir_do |
188c0 | 73 5f 69 6e 66 6f 5f 70 61 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 | s_info_path(struct.ncp_server.*s |
188e0 | 65 72 76 65 72 2c 0a 09 09 09 09 09 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 | erver,..........struct.inode.*di |
18900 | 72 2c 0a 09 09 09 09 09 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 0a 09 09 | r,..........const.char.*path,... |
18920 | 09 09 09 20 20 20 20 5f 5f 6c 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 2c 0a 09 09 09 09 09 20 20 | .......__le32.info_mask,........ |
18940 | 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 | ..const.struct.nw_modify_dos_inf |
18960 | 6f 20 2a 69 6e 66 6f 29 0a 7b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 | o.*info).{..__u8..volnum.=.NCP_F |
18980 | 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 | INFO(dir)->volNumber;..__le32.di |
189a0 | 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d | rent.=.NCP_FINFO(dir)->dirEntNum |
189c0 | 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 | ;..int.result;...ncp_init_reques |
189e0 | 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c | t(server);..ncp_add_byte(server, |
18a00 | 20 37 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f | .7);./*.subfunction.*/..ncp_add_ |
18a20 | 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b | byte(server,.server->name_space[ |
18a40 | 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 | volnum]);..ncp_add_byte(server,. |
18a60 | 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 | 0);./*.reserved.*/..ncp_add_word |
18a80 | 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 09 2f | (server,.cpu_to_le16(0x8006));./ |
18aa0 | 2a 20 73 65 61 72 63 68 20 61 74 74 72 69 62 73 3a 20 61 6c 6c 20 2a 2f 0a 0a 09 6e 63 70 5f 61 | *.search.attribs:.all.*/...ncp_a |
18ac0 | 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 5f 6d 61 73 6b 29 3b 0a 09 6e 63 | dd_dword(server,.info_mask);..nc |
18ae0 | 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 2c 20 73 69 7a 65 6f 66 28 2a | p_add_mem(server,.info,.sizeof(* |
18b00 | 69 6e 66 6f 29 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 | info));..ncp_add_handle_path(ser |
18b20 | 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a | ver,.volnum,.dirent,.1,.path);.. |
18b40 | 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 | .result.=.ncp_request(server,.87 |
18b60 | 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 | );..ncp_unlock_server(server);.. |
18b80 | 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 | return.result;.}..int.ncp_modify |
18ba0 | 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 | _file_or_subdir_dos_info(struct. |
18bc0 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 09 20 20 20 20 20 20 20 73 | ncp_server.*server,............s |
18be0 | 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 0a 09 09 09 09 20 20 20 20 20 20 20 5f 5f 6c | truct.inode.*dir,............__l |
18c00 | 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 2c 0a 09 09 09 09 20 20 20 20 20 20 20 63 6f 6e 73 74 20 | e32.info_mask,............const. |
18c20 | 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 | struct.nw_modify_dos_info.*info) |
18c40 | 0a 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 | .{..return.ncp_modify_file_or_su |
18c60 | 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 | bdir_dos_info_path(server,.dir,. |
18c80 | 4e 55 4c 4c 2c 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 2c 20 69 6e 66 6f 29 3b 0a 7d 0a 0a 23 69 66 | NULL,...info_mask,.info);.}..#if |
18ca0 | 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 69 6e 74 20 6e 63 70 5f | def.CONFIG_NCPFS_NFS_NS.int.ncp_ |
18cc0 | 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | modify_nfs_info(struct.ncp_serve |
18ce0 | 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 | r.*server,.__u8.volnum,.__le32.d |
18d00 | 69 72 65 6e 74 2c 0a 09 09 09 20 20 20 20 20 20 20 5f 5f 75 33 32 20 6d 6f 64 65 2c 20 5f 5f 75 | irent,...........__u32.mode,.__u |
18d20 | 33 32 20 72 64 65 76 29 0a 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0a 0a 09 6e | 32.rdev)..{..int.result.=.0;...n |
18d40 | 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 69 66 20 28 73 65 | cp_init_request(server);..if.(se |
18d60 | 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 20 3d 3d 20 4e 57 5f 4e | rver->name_space[volnum].==.NW_N |
18d80 | 53 5f 4e 46 53 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 | S_NFS).{...ncp_add_byte(server,. |
18da0 | 32 35 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 | 25);./*.subfunction.*/...ncp_add |
18dc0 | 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 | _byte(server,.server->name_space |
18de0 | 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 | [volnum]);...ncp_add_byte(server |
18e00 | 2c 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 | ,.NW_NS_NFS);...ncp_add_byte(ser |
18e20 | 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 | ver,.volnum);...ncp_add_dword(se |
18e40 | 72 76 65 72 2c 20 64 69 72 65 6e 74 29 3b 0a 09 09 2f 2a 20 77 65 20 6d 75 73 74 20 61 6c 77 61 | rver,.dirent);.../*.we.must.alwa |
18e60 | 79 73 20 6f 70 65 72 61 74 65 20 6f 6e 20 62 6f 74 68 20 6e 6c 69 6e 6b 73 20 61 6e 64 20 72 64 | ys.operate.on.both.nlinks.and.rd |
18e80 | 65 76 2c 20 6f 74 68 65 72 77 69 73 65 0a 09 09 20 20 20 72 64 65 76 20 69 73 20 6e 6f 74 20 73 | ev,.otherwise......rdev.is.not.s |
18ea0 | 65 74 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c | et.*/...ncp_add_dword_lh(server, |
18ec0 | 20 4e 53 49 42 4d 5f 4e 46 53 5f 4d 4f 44 45 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 4e 4c 49 4e | .NSIBM_NFS_MODE.|.NSIBM_NFS_NLIN |
18ee0 | 4b 53 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 52 44 45 56 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f | KS.|.NSIBM_NFS_RDEV);...ncp_add_ |
18f00 | 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 6d 6f 64 65 29 3b 0a 09 09 6e 63 70 5f 61 64 | dword_lh(server,.mode);...ncp_ad |
18f20 | 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 6e 6c 69 6e 6b 73 | d_dword_lh(server,.1);./*.nlinks |
18f40 | 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 72 | .*/...ncp_add_dword_lh(server,.r |
18f60 | 64 65 76 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 | dev);...result.=.ncp_request(ser |
18f80 | 76 65 72 2c 20 38 37 29 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 | ver,.87);..}..ncp_unlock_server( |
18fa0 | 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 23 65 6e 64 69 | server);..return.result;.}.#endi |
18fc0 | 66 0a 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 | f...static.int.ncp_DeleteNSEntry |
18fe0 | 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 | (struct.ncp_server.*server,..... |
19000 | 5f 5f 75 38 20 68 61 76 65 5f 64 69 72 5f 62 61 73 65 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c | __u8.have_dir_base,.__u8.volnum, |
19020 | 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 20 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 | .__le32.dirent,.....const.char*. |
19040 | 6e 61 6d 65 2c 20 5f 5f 75 38 20 6e 73 2c 20 5f 5f 6c 65 31 36 20 61 74 74 72 29 0a 7b 0a 09 69 | name,.__u8.ns,.__le16.attr).{..i |
19060 | 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 | nt.result;...ncp_init_request(se |
19080 | 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 38 29 3b | rver);..ncp_add_byte(server,.8); |
190a0 | 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 | ./*.subfunction.*/..ncp_add_byte |
190c0 | 28 73 65 72 76 65 72 2c 20 6e 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | (server,.ns);..ncp_add_byte(serv |
190e0 | 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f | er,.0);./*.reserved.*/..ncp_add_ |
19100 | 77 6f 72 64 28 73 65 72 76 65 72 2c 20 61 74 74 72 29 3b 09 2f 2a 20 73 65 61 72 63 68 20 61 74 | word(server,.attr);./*.search.at |
19120 | 74 72 69 62 73 3a 20 61 6c 6c 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 | tribs:.all.*/..ncp_add_handle_pa |
19140 | 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 68 61 76 65 5f | th(server,.volnum,.dirent,.have_ |
19160 | 64 69 72 5f 62 61 73 65 2c 20 6e 61 6d 65 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f | dir_base,.name);...result.=.ncp_ |
19180 | 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b | request(server,.87);..ncp_unlock |
191a0 | 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b | _server(server);..return.result; |
191c0 | 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 | .}..int.ncp_del_file_or_subdir2( |
191e0 | 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 73 74 | struct.ncp_server.*server,....st |
19200 | 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 | ruct.dentry.*dentry).{..struct.i |
19220 | 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 | node.*inode.=.d_inode(dentry);.. |
19240 | 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 3b 0a 0a 09 | __u8..volnum;..__le32.dirent;... |
19260 | 69 66 20 28 21 69 6e 6f 64 65 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 30 78 46 46 3b 09 2f 2a 20 | if.(!inode).{...return.0xFF;./*. |
19280 | 41 6e 79 20 65 72 72 6f 72 20 2a 2f 0a 09 7d 0a 09 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 | Any.error.*/..}..volnum.=.NCP_FI |
192a0 | 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 64 69 72 65 6e 74 20 3d | NFO(inode)->volNumber;..dirent.= |
192c0 | 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 72 | .NCP_FINFO(inode)->DosDirNum;..r |
192e0 | 65 74 75 72 6e 20 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 | eturn.ncp_DeleteNSEntry(server,. |
19300 | 31 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 4e 55 4c 4c 2c 20 4e 57 5f 4e 53 5f 44 | 1,.volnum,.dirent,.NULL,.NW_NS_D |
19320 | 4f 53 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 0a 7d 0a 0a 69 6e 74 | OS,.cpu_to_le16(0x8006));.}..int |
19340 | 0a 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e | .ncp_del_file_or_subdir(struct.n |
19360 | 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 20 73 74 72 75 | cp_server.*server,..........stru |
19380 | 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 | ct.inode.*dir,.const.char.*name) |
193a0 | 0a 7b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 | .{..__u8..volnum.=.NCP_FINFO(dir |
193c0 | 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e | )->volNumber;..__le32.dirent.=.N |
193e0 | 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 6e | CP_FINFO(dir)->dirEntNum;..int.n |
19400 | 61 6d 65 5f 73 70 61 63 65 3b 0a 0a 09 6e 61 6d 65 5f 73 70 61 63 65 20 3d 20 73 65 72 76 65 72 | ame_space;...name_space.=.server |
19420 | 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 3b 0a 23 69 66 64 65 66 20 43 4f 4e | ->name_space[volnum];.#ifdef.CON |
19440 | 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 69 66 20 28 6e 61 6d 65 5f 73 70 61 63 65 | FIG_NCPFS_NFS_NS..if.(name_space |
19460 | 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 0a 20 09 7b 0a 20 09 09 69 6e 74 20 72 65 73 75 6c 74 | .==.NW_NS_NFS)...{....int.result |
19480 | 3b 0a 20 0a 09 09 72 65 73 75 6c 74 3d 6e 63 70 5f 6f 62 74 61 69 6e 5f 44 4f 53 5f 64 69 72 5f | ;.....result=ncp_obtain_DOS_dir_ |
194a0 | 62 61 73 65 28 73 65 72 76 65 72 2c 20 6e 61 6d 65 5f 73 70 61 63 65 2c 20 76 6f 6c 6e 75 6d 2c | base(server,.name_space,.volnum, |
194c0 | 20 64 69 72 65 6e 74 2c 20 6e 61 6d 65 2c 20 26 64 69 72 65 6e 74 29 3b 0a 20 09 09 69 66 20 28 | .dirent,.name,.&dirent);....if.( |
194e0 | 72 65 73 75 6c 74 29 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 6e 61 6d 65 20 3d 20 | result).return.result;...name.=. |
19500 | 4e 55 4c 4c 3b 0a 09 09 6e 61 6d 65 5f 73 70 61 63 65 20 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a | NULL;...name_space.=.NW_NS_DOS;. |
19520 | 20 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e | ..}.#endif./*.CONFIG_NCPFS_NFS_N |
19540 | 53 20 2a 2f 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 28 73 | S.*/..return.ncp_DeleteNSEntry(s |
19560 | 65 72 76 65 72 2c 20 31 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 6e 61 6d 65 2c 20 | erver,.1,.volnum,.dirent,.name,. |
19580 | 6e 61 6d 65 5f 73 70 61 63 65 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 | name_space,.cpu_to_le16(0x8006)) |
195a0 | 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 43 6f 6e 76 65 72 74 54 | ;.}..static.inline.void.ConvertT |
195c0 | 6f 4e 57 66 72 6f 6d 44 57 4f 52 44 28 5f 5f 75 31 36 20 76 30 2c 20 5f 5f 75 31 36 20 76 31 2c | oNWfromDWORD(__u16.v0,.__u16.v1, |
195e0 | 20 5f 5f 75 38 20 72 65 74 5b 36 5d 29 0a 7b 0a 09 5f 5f 6c 65 31 36 20 2a 64 65 73 74 20 3d 20 | .__u8.ret[6]).{..__le16.*dest.=. |
19600 | 28 5f 5f 6c 65 31 36 20 2a 29 20 72 65 74 3b 0a 09 64 65 73 74 5b 31 5d 20 3d 20 63 70 75 5f 74 | (__le16.*).ret;..dest[1].=.cpu_t |
19620 | 6f 5f 6c 65 31 36 28 76 30 29 3b 0a 09 64 65 73 74 5b 32 5d 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 | o_le16(v0);..dest[2].=.cpu_to_le |
19640 | 31 36 28 76 31 29 3b 0a 09 64 65 73 74 5b 30 5d 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 76 | 16(v1);..dest[0].=.cpu_to_le16(v |
19660 | 30 20 2b 20 31 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 2f 2a 20 49 66 20 62 6f 74 68 20 64 | 0.+.1);..return;.}../*.If.both.d |
19680 | 69 72 20 61 6e 64 20 6e 61 6d 65 20 61 72 65 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 69 6e 20 74 61 | ir.and.name.are.NULL,.then.in.ta |
196a0 | 72 67 65 74 20 74 68 65 72 65 27 73 20 61 6c 72 65 61 64 79 20 61 0a 20 20 20 6c 6f 6f 6b 65 64 | rget.there's.already.a....looked |
196c0 | 2d 75 70 20 65 6e 74 72 79 20 74 68 61 74 20 77 61 6e 74 73 20 74 6f 20 62 65 20 6f 70 65 6e 65 | -up.entry.that.wants.to.be.opene |
196e0 | 64 2e 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f | d..*/.int.ncp_open_create_file_o |
19700 | 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 | r_subdir(struct.ncp_server.*serv |
19720 | 65 72 2c 0a 09 09 09 09 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 63 6f | er,........struct.inode.*dir,.co |
19740 | 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 2c 0a 09 09 09 09 20 20 20 69 6e 74 20 6f 70 65 6e 5f | nst.char.*name,........int.open_ |
19760 | 63 72 65 61 74 65 5f 6d 6f 64 65 2c 0a 09 09 09 09 20 20 20 5f 5f 6c 65 33 32 20 63 72 65 61 74 | create_mode,........__le32.creat |
19780 | 65 5f 61 74 74 72 69 62 75 74 65 73 2c 0a 09 09 09 09 20 20 20 5f 5f 6c 65 31 36 20 64 65 73 69 | e_attributes,........__le16.desi |
197a0 | 72 65 64 5f 61 63 63 5f 72 69 67 68 74 73 2c 0a 09 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 | red_acc_rights,........struct.nc |
197c0 | 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f 6c 65 31 36 20 | p_entry_info.*target).{..__le16. |
197e0 | 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 | search_attribs.=.cpu_to_le16(0x0 |
19800 | 30 30 36 29 3b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 | 006);..__u8..volnum;..__le32.dir |
19820 | 65 6e 74 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 | ent;..int.result;...volnum.=.NCP |
19840 | 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 64 69 72 65 6e 74 20 | _FINFO(dir)->volNumber;..dirent. |
19860 | 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 0a 09 69 | =.NCP_FINFO(dir)->dirEntNum;...i |
19880 | 66 20 28 28 63 72 65 61 74 65 5f 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 20 21 3d | f.((create_attributes.&.aDIR).!= |
198a0 | 20 30 29 20 7b 0a 09 09 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 20 7c 3d 20 63 70 75 5f 74 6f | .0).{...search_attribs.|=.cpu_to |
198c0 | 5f 6c 65 31 36 28 30 78 38 30 30 30 29 3b 0a 09 7d 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 | _le16(0x8000);..}..ncp_init_requ |
198e0 | 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 | est(server);..ncp_add_byte(serve |
19900 | 72 2c 20 31 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 | r,.1);./*.subfunction.*/..ncp_ad |
19920 | 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 | d_byte(server,.server->name_spac |
19940 | 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 | e[volnum]);..ncp_add_byte(server |
19960 | 2c 20 6f 70 65 6e 5f 63 72 65 61 74 65 5f 6d 6f 64 65 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f | ,.open_create_mode);..ncp_add_wo |
19980 | 72 64 28 73 65 72 76 65 72 2c 20 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 29 3b 0a 09 6e 63 70 | rd(server,.search_attribs);..ncp |
199a0 | 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 | _add_dword(server,.RIM_ALL);..nc |
199c0 | 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 72 65 61 74 65 5f 61 74 74 72 69 | p_add_dword(server,.create_attri |
199e0 | 62 75 74 65 73 29 3b 0a 09 2f 2a 20 54 68 65 20 64 65 73 69 72 65 64 20 61 63 63 20 72 69 67 68 | butes);../*.The.desired.acc.righ |
19a00 | 74 73 20 73 65 65 6d 20 74 6f 20 62 65 20 74 68 65 20 69 6e 68 65 72 69 74 65 64 20 72 69 67 68 | ts.seem.to.be.the.inherited.righ |
19a20 | 74 73 20 6d 61 73 6b 0a 09 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 69 65 73 20 2a 2f 0a 09 | ts.mask.....for.directories.*/.. |
19a40 | 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 64 65 73 69 72 65 64 5f 61 63 63 | ncp_add_word(server,.desired_acc |
19a60 | 5f 72 69 67 68 74 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 | _rights);..ncp_add_handle_path(s |
19a80 | 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 6e 61 6d 65 29 3b | erver,.volnum,.dirent,.1,.name); |
19aa0 | 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 | ...if.((result.=.ncp_request(ser |
19ac0 | 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 69 66 20 | ver,.87)).!=.0)...goto.out;..if. |
19ae0 | 28 21 28 63 72 65 61 74 65 5f 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 29 0a 09 09 | (!(create_attributes.&.aDIR))... |
19b00 | 74 61 72 67 65 74 2d 3e 6f 70 65 6e 65 64 20 3d 20 31 3b 0a 0a 09 2f 2a 20 69 6e 20 74 61 72 67 | target->opened.=.1;.../*.in.targ |
19b20 | 65 74 20 74 68 65 72 65 27 73 20 61 20 6e 65 77 20 66 69 6e 66 6f 20 74 6f 20 66 69 6c 6c 20 2a | et.there's.a.new.finfo.to.fill.* |
19b40 | 2f 0a 09 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 70 | /..ncp_extract_file_info(ncp_rep |
19b60 | 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 36 29 2c 20 26 28 74 61 72 67 65 74 2d 3e 69 29 | ly_data(server,.6),.&(target->i) |
19b80 | 29 3b 0a 09 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 20 3d 20 74 61 72 67 65 74 2d 3e 69 2e 76 | );..target->volume.=.target->i.v |
19ba0 | 6f 6c 4e 75 6d 62 65 72 3b 0a 09 43 6f 6e 76 65 72 74 54 6f 4e 57 66 72 6f 6d 44 57 4f 52 44 28 | olNumber;..ConvertToNWfromDWORD( |
19bc0 | 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 30 29 2c 0a 09 09 09 20 20 | ncp_reply_le16(server,.0),...... |
19be0 | 20 20 20 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 32 29 2c 0a 09 09 | ...ncp_reply_le16(server,.2),... |
19c00 | 09 20 20 20 20 20 74 61 72 67 65 74 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 09 0a 09 6e | ......target->file_handle);....n |
19c20 | 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 0a 09 28 76 6f 69 | cp_unlock_server(server);...(voi |
19c40 | 64 29 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 26 28 | d)ncp_obtain_nfs_info(server,.&( |
19c60 | 74 61 72 67 65 74 2d 3e 69 29 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 6f 75 74 3a 0a 09 6e | target->i));..return.0;..out:..n |
19c80 | 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 | cp_unlock_server(server);..retur |
19ca0 | 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 5f | n.result;.}..int.ncp_initialize_ |
19cc0 | 73 65 61 72 63 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 | search(struct.ncp_server.*server |
19ce0 | 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 0a 09 09 09 73 74 72 75 63 74 20 6e | ,.struct.inode.*dir,....struct.n |
19d00 | 77 5f 73 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f | w_search_sequence.*target).{..__ |
19d20 | 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c | u8..volnum.=.NCP_FINFO(dir)->vol |
19d40 | 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e | Number;..__le32.dirent.=.NCP_FIN |
19d60 | 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b | FO(dir)->dirEntNum;..int.result; |
19d80 | 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 | ...ncp_init_request(server);..nc |
19da0 | 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 29 3b 09 2f 2a 20 73 75 62 66 75 6e | p_add_byte(server,.2);./*.subfun |
19dc0 | 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 | ction.*/..ncp_add_byte(server,.s |
19de0 | 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 | erver->name_space[volnum]);..ncp |
19e00 | 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 | _add_byte(server,.0);./*.reserve |
19e20 | 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 | d.*/..ncp_add_handle_path(server |
19e40 | 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 4e 55 4c 4c 29 3b 0a 0a 09 72 65 | ,.volnum,.dirent,.1,.NULL);...re |
19e60 | 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a | sult.=.ncp_request(server,.87);. |
19e80 | 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 6d 65 6d 63 70 79 | .if.(result)...goto.out;..memcpy |
19ea0 | 28 74 61 72 67 65 74 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 | (target,.ncp_reply_data(server,. |
19ec0 | 30 29 2c 20 73 69 7a 65 6f 66 28 2a 74 61 72 67 65 74 29 29 3b 0a 0a 6f 75 74 3a 0a 09 6e 63 70 | 0),.sizeof(*target));..out:..ncp |
19ee0 | 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 | _unlock_server(server);..return. |
19f00 | 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 73 65 61 72 63 68 5f 66 6f 72 5f 66 69 | result;.}..int.ncp_search_for_fi |
19f20 | 6c 65 73 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c | leset(struct.ncp_server.*server, |
19f40 | 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 | .......struct.nw_search_sequence |
19f60 | 20 2a 73 65 71 2c 0a 09 09 09 20 20 20 69 6e 74 2a 20 6d 6f 72 65 2c 0a 09 09 09 20 20 20 69 6e | .*seq,.......int*.more,.......in |
19f80 | 74 2a 20 63 6e 74 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 20 62 75 66 66 65 72 2c 0a 09 09 09 20 | t*.cnt,.......char*.buffer,..... |
19fa0 | 20 20 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 2a 20 72 | ..size_t.bufsize,.......char**.r |
19fc0 | 62 75 66 2c 0a 09 09 09 20 20 20 73 69 7a 65 5f 74 2a 20 72 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 | buf,.......size_t*.rsize).{..int |
19fe0 | 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 | .result;...ncp_init_request(serv |
1a000 | 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a | er);..ncp_add_byte(server,.20);. |
1a020 | 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 | .ncp_add_byte(server,.server->na |
1a040 | 6d 65 5f 73 70 61 63 65 5b 73 65 71 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 3b 0a 09 6e 63 70 5f | me_space[seq->volNumber]);..ncp_ |
1a060 | 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 09 2f 2a 20 64 61 74 61 73 74 72 | add_byte(server,.0);../*.datastr |
1a080 | 65 61 6d 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 | eam.*/..ncp_add_word(server,.cpu |
1a0a0 | 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 | _to_le16(0x8006));..ncp_add_dwor |
1a0c0 | 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 | d(server,.RIM_ALL);..ncp_add_wor |
1a0e0 | 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 33 32 37 36 37 29 29 3b 09 2f | d(server,.cpu_to_le16(32767));./ |
1a100 | 2a 20 6d 61 78 20 72 65 74 75 72 6e 65 64 20 69 74 65 6d 73 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 | *.max.returned.items.*/..ncp_add |
1a120 | 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 65 71 2c 20 39 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e | _mem(server,.seq,.9);.#ifdef.CON |
1a140 | 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 61 | FIG_NCPFS_NFS_NS..if.(server->na |
1a160 | 6d 65 5f 73 70 61 63 65 5b 73 65 71 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 20 3d 3d 20 4e 57 5f 4e | me_space[seq->volNumber].==.NW_N |
1a180 | 53 5f 4e 46 53 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 | S_NFS).{...ncp_add_byte(server,. |
1a1a0 | 30 29 3b 09 2f 2a 20 30 20 62 79 74 65 20 70 61 74 74 65 72 6e 20 2a 2f 0a 09 7d 20 65 6c 73 65 | 0);./*.0.byte.pattern.*/..}.else |
1a1c0 | 20 0a 23 65 6e 64 69 66 0a 09 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 | ..#endif..{...ncp_add_byte(serve |
1a1e0 | 72 2c 20 32 29 3b 09 2f 2a 20 32 20 62 79 74 65 20 70 61 74 74 65 72 6e 20 2a 2f 0a 09 09 6e 63 | r,.2);./*.2.byte.pattern.*/...nc |
1a200 | 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 66 6f 6c | p_add_byte(server,.0xff);./*.fol |
1a220 | 6c 6f 77 69 6e 67 20 69 73 20 61 20 77 69 6c 64 63 61 72 64 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 | lowing.is.a.wildcard.*/...ncp_ad |
1a240 | 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 27 2a 27 29 3b 0a 09 7d 0a 09 72 65 73 75 6c 74 20 | d_byte(server,.'*');..}..result. |
1a260 | 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 72 2c 20 38 37 2c 20 62 75 66 66 65 | =.ncp_request2(server,.87,.buffe |
1a280 | 72 2c 20 62 75 66 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 6e 63 | r,.bufsize);..if.(result).{...nc |
1a2a0 | 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 | p_unlock_server(server);...retur |
1a2c0 | 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 72 65 | n.result;..}..if.(server->ncp_re |
1a2e0 | 70 6c 79 5f 73 69 7a 65 20 3c 20 31 32 29 20 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 | ply_size.<.12).{...ncp_unlock_se |
1a300 | 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 30 78 46 46 3b 0a 09 7d 0a | rver(server);...return.0xFF;..}. |
1a320 | 09 2a 72 73 69 7a 65 20 3d 20 73 65 72 76 65 72 2d 3e 6e 63 70 5f 72 65 70 6c 79 5f 73 69 7a 65 | .*rsize.=.server->ncp_reply_size |
1a340 | 20 2d 20 31 32 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 | .-.12;..ncp_unlock_server(server |
1a360 | 29 3b 0a 09 62 75 66 66 65 72 20 3d 20 62 75 66 66 65 72 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 | );..buffer.=.buffer.+.sizeof(str |
1a380 | 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 3b 0a 09 2a 72 62 75 66 20 3d 20 | uct.ncp_reply_header);..*rbuf.=. |
1a3a0 | 62 75 66 66 65 72 20 2b 20 31 32 3b 0a 09 2a 63 6e 74 20 3d 20 57 56 41 4c 5f 4c 48 28 62 75 66 | buffer.+.12;..*cnt.=.WVAL_LH(buf |
1a3c0 | 66 65 72 20 2b 20 31 30 29 3b 0a 09 2a 6d 6f 72 65 20 3d 20 42 56 41 4c 28 62 75 66 66 65 72 20 | fer.+.10);..*more.=.BVAL(buffer. |
1a3e0 | 2b 20 39 29 3b 0a 09 6d 65 6d 63 70 79 28 73 65 71 2c 20 62 75 66 66 65 72 2c 20 39 29 3b 0a 09 | +.9);..memcpy(seq,.buffer,.9);.. |
1a400 | 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 52 65 6e 61 | return.0;.}..static.int.ncp_Rena |
1a420 | 6d 65 4e 53 45 6e 74 72 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 | meNSEntry(struct.ncp_server.*ser |
1a440 | 76 65 72 2c 0a 09 09 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 | ver,.....struct.inode.*old_dir,. |
1a460 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 6f 6c 64 5f 6e 61 6d 65 2c 20 5f 5f 6c 65 31 36 20 6f 6c 64 | const.char.*old_name,.__le16.old |
1a480 | 5f 74 79 70 65 2c 0a 09 09 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 | _type,.....struct.inode.*new_dir |
1a4a0 | 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 09 69 6e 74 20 72 | ,.const.char.*new_name).{..int.r |
1a4c0 | 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 0a 09 69 66 20 28 28 6f 6c 64 5f 64 69 72 20 | esult.=.-EINVAL;...if.((old_dir. |
1a4e0 | 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20 28 6f 6c 64 5f 6e 61 6d 65 20 3d 3d 20 4e 55 4c 4c 29 20 7c | ==.NULL).||.(old_name.==.NULL).| |
1a500 | 7c 0a 09 20 20 20 20 28 6e 65 77 5f 64 69 72 20 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20 28 6e 65 77 | |......(new_dir.==.NULL).||.(new |
1a520 | 5f 6e 61 6d 65 20 3d 3d 20 4e 55 4c 4c 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 6e 63 | _name.==.NULL))...goto.out;...nc |
1a540 | 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 | p_init_request(server);..ncp_add |
1a560 | 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 34 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e | _byte(server,.4);./*.subfunction |
1a580 | 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 | .*/..ncp_add_byte(server,.server |
1a5a0 | 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 4e 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d | ->name_space[NCP_FINFO(old_dir)- |
1a5c0 | 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | >volNumber]);..ncp_add_byte(serv |
1a5e0 | 65 72 2c 20 31 29 3b 09 2f 2a 20 72 65 6e 61 6d 65 20 66 6c 61 67 20 2a 2f 0a 09 6e 63 70 5f 61 | er,.1);./*.rename.flag.*/..ncp_a |
1a600 | 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 74 79 70 65 29 3b 09 2f 2a 20 73 65 | dd_word(server,.old_type);./*.se |
1a620 | 61 72 63 68 20 61 74 74 72 69 62 75 74 65 73 20 2a 2f 0a 0a 09 2f 2a 20 73 6f 75 72 63 65 20 48 | arch.attributes.*/.../*.source.H |
1a640 | 61 6e 64 6c 65 20 50 61 74 68 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | andle.Path.*/..ncp_add_byte(serv |
1a660 | 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 | er,.NCP_FINFO(old_dir)->volNumbe |
1a680 | 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 | r);..ncp_add_dword(server,.NCP_F |
1a6a0 | 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 6e 63 70 5f | INFO(old_dir)->dirEntNum);..ncp_ |
1a6c0 | 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 | add_byte(server,.1);..ncp_add_by |
1a6e0 | 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 31 20 73 6f 75 72 63 65 20 63 6f 6d 70 6f | te(server,.1);./*.1.source.compo |
1a700 | 6e 65 6e 74 20 2a 2f 0a 0a 09 2f 2a 20 64 65 73 74 20 48 61 6e 64 6c 65 20 50 61 74 68 20 2a 2f | nent.*/.../*.dest.Handle.Path.*/ |
1a720 | 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f | ..ncp_add_byte(server,.NCP_FINFO |
1a740 | 28 6e 65 77 5f 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f | (new_dir)->volNumber);..ncp_add_ |
1a760 | 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 6e 65 77 5f 64 69 72 29 | dword(server,.NCP_FINFO(new_dir) |
1a780 | 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | ->dirEntNum);..ncp_add_byte(serv |
1a7a0 | 65 72 2c 20 31 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 | er,.1);..ncp_add_byte(server,.1) |
1a7c0 | 3b 09 2f 2a 20 31 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a | ;./*.1.destination.component.*/. |
1a7e0 | 0a 09 2f 2a 20 73 6f 75 72 63 65 20 70 61 74 68 20 73 74 72 69 6e 67 20 2a 2f 0a 09 6e 63 70 5f | ../*.source.path.string.*/..ncp_ |
1a800 | 61 64 64 5f 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 6e 61 6d 65 29 3b 0a 09 | add_pstring(server,.old_name);.. |
1a820 | 2f 2a 20 64 65 73 74 20 70 61 74 68 20 73 74 72 69 6e 67 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f | /*.dest.path.string.*/..ncp_add_ |
1a840 | 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 0a 09 72 65 73 | pstring(server,.new_name);...res |
1a860 | 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a 09 | ult.=.ncp_request(server,.87);.. |
1a880 | 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 6f 75 74 3a 0a | ncp_unlock_server(server);.out:. |
1a8a0 | 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 72 65 6e 5f 6f | .return.result;.}..int.ncp_ren_o |
1a8c0 | 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f | r_mov_file_or_subdir(struct.ncp_ |
1a8e0 | 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 | server.*server,.....struct.inode |
1a900 | 20 2a 6f 6c 64 5f 64 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6f 6c 64 5f 6e 61 6d 65 2c | .*old_dir,.const.char.*old_name, |
1a920 | 0a 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 63 6f 6e 73 | .....struct.inode.*new_dir,.cons |
1a940 | 74 20 63 68 61 72 20 2a 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 | t.char.*new_name).{.........int. |
1a960 | 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 5f 5f 6c 65 31 36 20 6f 6c 64 5f 74 79 70 65 20 | result;.........__le16.old_type. |
1a980 | 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 36 29 3b 0a 0a 2f 2a 20 49 66 20 73 6f 6d 65 | =.cpu_to_le16(0x06);../*.If.some |
1a9a0 | 62 6f 64 79 20 63 61 6e 20 64 6f 20 69 74 20 61 74 6f 6d 69 63 2c 20 63 61 6c 6c 20 6d 65 2e 2e | body.can.do.it.atomic,.call.me.. |
1a9c0 | 2e 20 76 61 6e 64 72 6f 76 65 40 76 63 2e 63 76 75 74 2e 63 7a 20 2a 2f 0a 09 72 65 73 75 6c 74 | ..vandrove@vc.cvut.cz.*/..result |
1a9e0 | 20 3d 20 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 | .=.ncp_RenameNSEntry(server,.old |
1aa00 | 5f 64 69 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 20 20 20 20 20 | _dir,.old_name,.old_type,....... |
1aa20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 | ..............................ne |
1aa40 | 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 65 | w_dir,.new_name);.........if.(re |
1aa60 | 73 75 6c 74 20 3d 3d 20 30 78 46 46 29 09 2f 2a 20 46 69 6c 65 20 4e 6f 74 20 46 6f 75 6e 64 2c | sult.==.0xFF)./*.File.Not.Found, |
1aa80 | 20 74 72 79 20 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a 09 7b 0a 09 09 6f 6c 64 5f 74 79 70 65 20 | .try.directory.*/..{...old_type. |
1aaa0 | 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 31 36 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 | =.cpu_to_le16(0x16);...result.=. |
1aac0 | 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 69 | ncp_RenameNSEntry(server,.old_di |
1aae0 | 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 09 09 09 09 09 20 20 20 | r,.old_name,.old_type,.......... |
1ab00 | 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 | new_dir,.new_name);..}..if.(resu |
1ab20 | 6c 74 20 21 3d 20 30 78 39 32 29 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 09 2f 2a 20 41 6c | lt.!=.0x92).return.result;./*.Al |
1ab40 | 6c 20 65 78 63 65 70 74 20 4e 4f 5f 46 49 4c 45 53 5f 52 45 4e 41 4d 45 44 20 2a 2f 0a 09 72 65 | l.except.NO_FILES_RENAMED.*/..re |
1ab60 | 73 75 6c 74 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 | sult.=.ncp_del_file_or_subdir(se |
1ab80 | 72 76 65 72 2c 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 72 | rver,.new_dir,.new_name);..if.(r |
1aba0 | 65 73 75 6c 74 20 21 3d 20 30 29 20 72 65 74 75 72 6e 20 2d 45 41 43 43 45 53 3b 0a 09 72 65 73 | esult.!=.0).return.-EACCES;..res |
1abc0 | 75 6c 74 20 3d 20 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 | ult.=.ncp_RenameNSEntry(server,. |
1abe0 | 6f 6c 64 5f 64 69 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 09 09 | old_dir,.old_name,.old_type,.... |
1ac00 | 09 09 20 20 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 72 65 74 75 72 6e | .....new_dir,.new_name);..return |
1ac20 | 20 72 65 73 75 6c 74 3b 0a 7d 0a 09 0a 0a 2f 2a 20 57 65 20 68 61 76 65 20 74 6f 20 74 72 61 6e | .result;.}..../*.We.have.to.tran |
1ac40 | 73 66 65 72 20 74 6f 2f 66 72 6f 6d 20 75 73 65 72 20 73 70 61 63 65 20 2a 2f 0a 69 6e 74 0a 6e | sfer.to/from.user.space.*/.int.n |
1ac60 | 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 | cp_read_kernel(struct.ncp_server |
1ac80 | 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 | .*server,.const.char.*file_id,.. |
1aca0 | 20 20 20 20 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 6f 5f 72 65 61 64 | .....__u32.offset,.__u16.to_read |
1acc0 | 2c 20 63 68 61 72 20 2a 74 61 72 67 65 74 2c 20 69 6e 74 20 2a 62 79 74 65 73 5f 72 65 61 64 29 | ,.char.*target,.int.*bytes_read) |
1ace0 | 0a 7b 0a 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 6f 75 72 63 65 3b 0a 09 69 6e 74 20 72 65 73 | .{..const.char.*source;..int.res |
1ad00 | 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b | ult;...ncp_init_request(server); |
1ad20 | 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f | ..ncp_add_byte(server,.0);..ncp_ |
1ad40 | 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 | add_mem(server,.file_id,.6);..nc |
1ad60 | 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 | p_add_be32(server,.offset);..ncp |
1ad80 | 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 6f 5f 72 65 61 64 29 3b 0a 0a 09 69 66 | _add_be16(server,.to_read);...if |
1ada0 | 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 | .((result.=.ncp_request(server,. |
1adc0 | 37 32 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 2a 62 79 | 72)).!=.0).{...goto.out;..}..*by |
1ade0 | 74 65 73 5f 72 65 61 64 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 65 72 76 65 72 | tes_read.=.ncp_reply_be16(server |
1ae00 | 2c 20 30 29 3b 0a 09 73 6f 75 72 63 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 | ,.0);..source.=.ncp_reply_data(s |
1ae20 | 65 72 76 65 72 2c 20 32 20 2b 20 28 6f 66 66 73 65 74 20 26 20 31 29 29 3b 0a 0a 09 6d 65 6d 63 | erver,.2.+.(offset.&.1));...memc |
1ae40 | 70 79 28 74 61 72 67 65 74 2c 20 73 6f 75 72 63 65 2c 20 2a 62 79 74 65 73 5f 72 65 61 64 29 3b | py(target,.source,.*bytes_read); |
1ae60 | 0a 6f 75 74 3a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 | .out:..ncp_unlock_server(server) |
1ae80 | 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 20 54 68 65 72 65 20 69 73 | ;..return.result;.}../*.There.is |
1aea0 | 20 61 20 70 72 6f 62 6c 65 6d 2e 2e 2e 20 65 67 72 65 70 20 61 6e 64 20 73 6f 6d 65 20 6f 74 68 | .a.problem....egrep.and.some.oth |
1aec0 | 65 72 20 73 69 6c 6c 79 20 74 6f 6f 6c 73 20 64 6f 3a 0a 09 78 20 3d 20 6d 6d 61 70 28 4e 55 4c | er.silly.tools.do:..x.=.mmap(NUL |
1aee0 | 4c 2c 20 4d 41 50 5f 50 52 49 56 41 54 45 2c 20 50 52 4f 54 5f 52 45 41 44 7c 50 52 4f 54 5f 57 | L,.MAP_PRIVATE,.PROT_READ|PROT_W |
1af00 | 52 49 54 45 2c 20 3c 6e 63 70 66 73 20 66 64 3e 2c 20 33 32 37 36 38 29 3b 0a 09 72 65 61 64 28 | RITE,.<ncpfs.fd>,.32768);..read( |
1af20 | 3c 6e 63 70 66 73 20 66 64 3e 2c 20 78 2c 20 33 32 37 36 38 29 3b 0a 20 20 20 4e 6f 77 20 63 6f | <ncpfs.fd>,.x,.32768);....Now.co |
1af40 | 70 79 69 6e 67 20 72 65 61 64 20 72 65 73 75 6c 74 20 62 79 20 63 6f 70 79 5f 74 6f 5f 75 73 65 | pying.read.result.by.copy_to_use |
1af60 | 72 20 63 61 75 73 65 73 20 70 61 67 65 66 61 75 6c 74 2e 20 54 68 69 73 20 70 61 67 65 66 61 75 | r.causes.pagefault..This.pagefau |
1af80 | 6c 74 0a 20 20 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 68 61 6e 64 6c 65 64 20 62 65 63 61 75 | lt....could.not.be.handled.becau |
1afa0 | 73 65 20 6f 66 20 73 65 72 76 65 72 20 77 61 73 20 6c 6f 63 6b 65 64 20 64 75 65 20 74 6f 20 72 | se.of.server.was.locked.due.to.r |
1afc0 | 65 61 64 2e 20 53 6f 20 77 65 20 68 61 76 65 0a 20 20 20 74 6f 20 75 73 65 20 74 65 6d 70 6f 72 | ead..So.we.have....to.use.tempor |
1afe0 | 61 72 79 20 62 75 66 66 65 72 2e 20 53 6f 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 | ary.buffer..So.ncp_unlock_server |
1b000 | 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 62 65 66 6f 72 65 0a 20 20 20 63 6f 70 79 5f 74 6f 5f | .must.be.done.before....copy_to_ |
1b020 | 75 73 65 72 20 28 61 6e 64 20 66 6f 72 20 77 72 69 74 65 2c 20 63 6f 70 79 5f 66 72 6f 6d 5f 75 | user.(and.for.write,.copy_from_u |
1b040 | 73 65 72 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 62 65 66 6f 72 65 20 0a 20 20 20 6e 63 70 5f | ser.must.be.done.before.....ncp_ |
1b060 | 69 6e 69 74 5f 72 65 71 75 65 73 74 2e 2e 2e 20 73 61 6d 65 20 61 70 70 6c 69 65 73 20 66 6f 72 | init_request....same.applies.for |
1b080 | 20 73 65 6e 64 20 72 61 77 20 70 61 63 6b 65 74 20 69 6f 63 74 6c 29 2e 20 42 65 63 61 75 73 65 | .send.raw.packet.ioctl)..Because |
1b0a0 | 20 6f 66 0a 20 20 20 66 69 6c 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 61 64 20 69 6e 20 | .of....file.is.normally.read.in. |
1b0c0 | 62 69 67 67 65 72 20 63 68 75 6e 6b 73 2c 20 63 61 6c 6c 65 72 20 70 72 6f 76 69 64 65 73 20 6b | bigger.chunks,.caller.provides.k |
1b0e0 | 6d 61 6c 6c 6f 63 65 64 20 0a 20 20 20 28 76 6d 61 6c 6c 6f 63 65 64 29 20 63 68 75 6e 6b 20 6f | malloced.....(vmalloced).chunk.o |
1b100 | 66 20 6d 65 6d 6f 72 79 20 77 69 74 68 20 73 69 7a 65 20 3e 3d 20 74 6f 5f 72 65 61 64 2e 2e 2e | f.memory.with.size.>=.to_read... |
1b120 | 0a 20 2a 2f 0a 69 6e 74 0a 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 73 74 72 75 63 74 20 | ..*/.int.ncp_read_bounce(struct. |
1b140 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a | ncp_server.*server,.const.char.* |
1b160 | 66 69 6c 65 5f 69 64 2c 0a 09 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 | file_id,...__u32.offset,.__u16.t |
1b180 | 6f 5f 72 65 61 64 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 74 6f 2c 0a 09 20 69 | o_read,.struct.iov_iter.*to,...i |
1b1a0 | 6e 74 20 2a 62 79 74 65 73 5f 72 65 61 64 2c 20 76 6f 69 64 20 2a 62 6f 75 6e 63 65 2c 20 5f 5f | nt.*bytes_read,.void.*bounce,.__ |
1b1c0 | 75 33 32 20 62 75 66 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 | u32.bufsize).{..int.result;...nc |
1b1e0 | 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 | p_init_request(server);..ncp_add |
1b200 | 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 | _byte(server,.0);..ncp_add_mem(s |
1b220 | 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 | erver,.file_id,.6);..ncp_add_be3 |
1b240 | 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 | 2(server,.offset);..ncp_add_be16 |
1b260 | 28 73 65 72 76 65 72 2c 20 74 6f 5f 72 65 61 64 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 | (server,.to_read);..result.=.ncp |
1b280 | 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 72 2c 20 37 32 2c 20 62 6f 75 6e 63 65 2c 20 62 75 | _request2(server,.72,.bounce,.bu |
1b2a0 | 66 73 69 7a 65 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 | fsize);..ncp_unlock_server(serve |
1b2c0 | 72 29 3b 0a 09 69 66 20 28 21 72 65 73 75 6c 74 29 20 7b 0a 09 09 69 6e 74 20 6c 65 6e 20 3d 20 | r);..if.(!result).{...int.len.=. |
1b2e0 | 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 62 65 31 36 28 28 63 68 61 72 20 2a 29 62 6f 75 6e 63 | get_unaligned_be16((char.*)bounc |
1b300 | 65 20 2b 0a 09 09 09 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 | e.+......sizeof(struct.ncp_reply |
1b320 | 5f 68 65 61 64 65 72 29 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 69 66 | _header));...result.=.-EIO;...if |
1b340 | 20 28 6c 65 6e 20 3c 3d 20 74 6f 5f 72 65 61 64 29 20 7b 0a 09 09 09 63 68 61 72 2a 20 73 6f 75 | .(len.<=.to_read).{....char*.sou |
1b360 | 72 63 65 3b 0a 0a 09 09 09 73 6f 75 72 63 65 20 3d 20 28 63 68 61 72 2a 29 62 6f 75 6e 63 65 20 | rce;.....source.=.(char*)bounce. |
1b380 | 2b 20 0a 09 09 09 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 | +..............sizeof(struct.ncp |
1b3a0 | 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 32 20 2b 20 0a 09 09 09 20 20 20 20 20 20 20 | _reply_header).+.2.+............ |
1b3c0 | 20 20 28 6f 66 66 73 65 74 20 26 20 31 29 3b 0a 09 09 09 2a 62 79 74 65 73 5f 72 65 61 64 20 3d | ..(offset.&.1);....*bytes_read.= |
1b3e0 | 20 6c 65 6e 3b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 | .len;....result.=.0;....if.(copy |
1b400 | 5f 74 6f 5f 69 74 65 72 28 73 6f 75 72 63 65 2c 20 6c 65 6e 2c 20 74 6f 29 20 21 3d 20 6c 65 6e | _to_iter(source,.len,.to).!=.len |
1b420 | 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 7d 0a 09 7d 0a 09 | ).....result.=.-EFAULT;...}..}.. |
1b440 | 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 77 72 69 74 65 5f | return.result;.}..int.ncp_write_ |
1b460 | 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 | kernel(struct.ncp_server.*server |
1b480 | 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 09 20 5f 5f 75 33 32 20 | ,.const.char.*file_id,....__u32. |
1b4a0 | 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 6f 5f 77 72 69 74 65 2c 0a 09 09 20 63 6f 6e 73 74 | offset,.__u16.to_write,....const |
1b4c0 | 20 63 68 61 72 20 2a 73 6f 75 72 63 65 2c 20 69 6e 74 20 2a 62 79 74 65 73 5f 77 72 69 74 74 65 | .char.*source,.int.*bytes_writte |
1b4e0 | 6e 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 | n).{..int.result;...ncp_init_req |
1b500 | 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 | uest(server);..ncp_add_byte(serv |
1b520 | 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c | er,.0);..ncp_add_mem(server,.fil |
1b540 | 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 | e_id,.6);..ncp_add_be32(server,. |
1b560 | 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 | offset);..ncp_add_be16(server,.t |
1b580 | 6f 5f 77 72 69 74 65 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 | o_write);..ncp_add_mem(server,.s |
1b5a0 | 6f 75 72 63 65 2c 20 74 6f 5f 77 72 69 74 65 29 3b 0a 09 0a 09 69 66 20 28 28 72 65 73 75 6c 74 | ource,.to_write);....if.((result |
1b5c0 | 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 37 33 29 29 20 3d 3d 20 30 | .=.ncp_request(server,.73)).==.0 |
1b5e0 | 29 0a 09 09 2a 62 79 74 65 73 5f 77 72 69 74 74 65 6e 20 3d 20 74 6f 5f 77 72 69 74 65 3b 0a 09 | )...*bytes_written.=.to_write;.. |
1b600 | 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 | ncp_unlock_server(server);..retu |
1b620 | 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 | rn.result;.}..#ifdef.CONFIG_NCPF |
1b640 | 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 69 6e 74 0a 6e 63 70 5f 4c 6f 67 50 68 79 73 69 | S_IOCTL_LOCKING.int.ncp_LogPhysi |
1b660 | 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 | calRecord(struct.ncp_server.*ser |
1b680 | 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 20 20 5f 5f 75 | ver,.const.char.*file_id,....__u |
1b6a0 | 38 20 6c 6f 63 6b 74 79 70 65 2c 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 | 8.locktype,.__u32.offset,.__u32. |
1b6c0 | 6c 65 6e 67 74 68 2c 20 5f 5f 75 31 36 20 74 69 6d 65 6f 75 74 29 0a 7b 0a 09 69 6e 74 20 72 65 | length,.__u16.timeout).{..int.re |
1b6e0 | 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 | sult;...ncp_init_request(server) |
1b700 | 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6c 6f 63 6b 74 79 70 65 | ;..ncp_add_byte(server,.locktype |
1b720 | 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c | );..ncp_add_mem(server,.file_id, |
1b740 | 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 | .6);..ncp_add_be32(server,.offse |
1b760 | 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6c 65 6e 67 74 68 | t);..ncp_add_be32(server,.length |
1b780 | 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 69 6d 65 6f 75 74 | );..ncp_add_be16(server,.timeout |
1b7a0 | 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 | );...if.((result.=.ncp_request(s |
1b7c0 | 65 72 76 65 72 2c 20 30 78 31 41 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c | erver,.0x1A)).!=.0)..{...ncp_unl |
1b7e0 | 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 | ock_server(server);...return.res |
1b800 | 75 6c 74 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 | ult;..}..ncp_unlock_server(serve |
1b820 | 72 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 43 6c 65 61 72 50 | r);..return.0;.}..int.ncp_ClearP |
1b840 | 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | hysicalRecord(struct.ncp_server. |
1b860 | 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 20 | *server,.const.char.*file_id,... |
1b880 | 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 68 29 0a 7b 0a 09 | .__u32.offset,.__u32.length).{.. |
1b8a0 | 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 | int.result;...ncp_init_request(s |
1b8c0 | 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 | erver);..ncp_add_byte(server,.0) |
1b8e0 | 3b 09 2f 2a 20 77 68 6f 20 6b 6e 6f 77 73 2e 2e 2e 20 6c 61 6e 61 6c 79 7a 65 72 20 73 61 79 73 | ;./*.who.knows....lanalyzer.says |
1b900 | 20 74 68 61 74 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 | .that.*/..ncp_add_mem(server,.fi |
1b920 | 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c | le_id,.6);..ncp_add_be32(server, |
1b940 | 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 | .offset);..ncp_add_be32(server,. |
1b960 | 6c 65 6e 67 74 68 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 | length);...if.((result.=.ncp_req |
1b980 | 75 65 73 74 28 73 65 72 76 65 72 2c 20 30 78 31 45 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e | uest(server,.0x1E)).!=.0)..{...n |
1b9a0 | 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 | cp_unlock_server(server);...retu |
1b9c0 | 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 | rn.result;..}..ncp_unlock_server |
1b9e0 | 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a | (server);..return.0;.}.#endif./* |
1ba00 | 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a | .CONFIG_NCPFS_IOCTL_LOCKING.*/.. |
1ba20 | 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 2f 2a 20 54 68 69 73 20 | #ifdef.CONFIG_NCPFS_NLS./*.This. |
1ba40 | 61 72 65 20 74 68 65 20 4e 4c 53 20 63 6f 6e 76 65 72 73 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 | are.the.NLS.conversion.routines. |
1ba60 | 77 69 74 68 20 69 6e 73 70 69 72 61 74 69 6f 6e 73 20 61 6e 64 20 63 6f 64 65 20 70 61 72 74 73 | with.inspirations.and.code.parts |
1ba80 | 0a 20 2a 20 66 72 6f 6d 20 74 68 65 20 76 66 61 74 20 66 69 6c 65 20 73 79 73 74 65 6d 20 61 6e | ..*.from.the.vfat.file.system.an |
1baa0 | 64 20 68 69 6e 74 73 20 66 72 6f 6d 20 50 65 74 72 20 56 61 6e 64 72 6f 76 65 63 2e 0a 20 2a 2f | d.hints.from.Petr.Vandrovec...*/ |
1bac0 | 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 | ..int.ncp__io2vol(struct.ncp_ser |
1bae0 | 76 65 72 20 2a 73 65 72 76 65 72 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d | ver.*server,.unsigned.char.*vnam |
1bb00 | 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 76 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 | e,.unsigned.int.*vlen,...const.u |
1bb20 | 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e | nsigned.char.*iname,.unsigned.in |
1bb40 | 74 20 69 6c 65 6e 2c 20 69 6e 74 20 63 63 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 | t.ilen,.int.cc).{..struct.nls_ta |
1bb60 | 62 6c 65 20 2a 69 6e 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 73 74 72 75 63 | ble.*in.=.server->nls_io;..struc |
1bb80 | 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a 6f 75 74 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 | t.nls_table.*out.=.server->nls_v |
1bba0 | 6f 6c 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 73 74 61 72 74 3b | ol;..unsigned.char.*vname_start; |
1bbc0 | 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 65 6e 64 3b 0a 09 63 6f 6e | ..unsigned.char.*vname_end;..con |
1bbe0 | 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 5f 65 6e 64 3b 0a 0a 09 69 | st.unsigned.char.*iname_end;...i |
1bc00 | 6e 61 6d 65 5f 65 6e 64 20 3d 20 69 6e 61 6d 65 20 2b 20 69 6c 65 6e 3b 0a 09 76 6e 61 6d 65 5f | name_end.=.iname.+.ilen;..vname_ |
1bc20 | 73 74 61 72 74 20 3d 20 76 6e 61 6d 65 3b 0a 09 76 6e 61 6d 65 5f 65 6e 64 20 3d 20 76 6e 61 6d | start.=.vname;..vname_end.=.vnam |
1bc40 | 65 20 2b 20 2a 76 6c 65 6e 20 2d 20 31 3b 0a 0a 09 77 68 69 6c 65 20 28 69 6e 61 6d 65 20 3c 20 | e.+.*vlen.-.1;...while.(iname.<. |
1bc60 | 69 6e 61 6d 65 5f 65 6e 64 29 20 7b 0a 09 09 69 6e 74 20 63 68 6c 3b 0a 09 09 77 63 68 61 72 5f | iname_end).{...int.chl;...wchar_ |
1bc80 | 74 20 65 63 3b 0a 0a 09 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c | t.ec;....if.(NCP_IS_FLAG(server, |
1bca0 | 20 4e 43 50 5f 46 4c 41 47 5f 55 54 46 38 29 29 20 7b 0a 09 09 09 69 6e 74 20 6b 3b 0a 09 09 09 | .NCP_FLAG_UTF8)).{....int.k;.... |
1bcc0 | 75 6e 69 63 6f 64 65 5f 74 20 75 3b 0a 0a 09 09 09 6b 20 3d 20 75 74 66 38 5f 74 6f 5f 75 74 66 | unicode_t.u;.....k.=.utf8_to_utf |
1bce0 | 33 32 28 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 2c 20 26 75 29 | 32(iname,.iname_end.-.iname,.&u) |
1bd00 | 3b 0a 09 09 09 69 66 20 28 6b 20 3c 20 30 20 7c 7c 20 75 20 3e 20 4d 41 58 5f 57 43 48 41 52 5f | ;....if.(k.<.0.||.u.>.MAX_WCHAR_ |
1bd20 | 54 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 69 6e 61 6d 65 20 | T).....return.-EINVAL;....iname. |
1bd40 | 2b 3d 20 6b 3b 0a 09 09 09 65 63 20 3d 20 75 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 69 | +=.k;....ec.=.u;...}.else.{....i |
1bd60 | 66 20 28 2a 69 6e 61 6d 65 20 3d 3d 20 4e 43 50 5f 45 53 43 29 20 7b 0a 09 09 09 09 69 6e 74 20 | f.(*iname.==.NCP_ESC).{.....int. |
1bd80 | 6b 3b 0a 0a 09 09 09 09 69 66 20 28 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 20 3c 20 | k;......if.(iname_end.-.iname.<. |
1bda0 | 35 29 0a 09 09 09 09 09 67 6f 74 6f 20 6e 6f 73 70 65 63 3b 0a 0a 09 09 09 09 65 63 20 3d 20 30 | 5)......goto.nospec;......ec.=.0 |
1bdc0 | 3b 0a 09 09 09 09 66 6f 72 20 28 6b 20 3d 20 31 3b 20 6b 20 3c 20 35 3b 20 6b 2b 2b 29 20 7b 0a | ;.....for.(k.=.1;.k.<.5;.k++).{. |
1bde0 | 09 09 09 09 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6e 63 3b 0a 0a 09 09 09 09 09 6e 63 20 | .....unsigned.char.nc;.......nc. |
1be00 | 3d 20 69 6e 61 6d 65 5b 6b 5d 20 2d 20 27 30 27 3b 0a 09 09 09 09 09 69 66 20 28 6e 63 20 3e 3d | =.iname[k].-.'0';......if.(nc.>= |
1be20 | 20 31 30 29 20 7b 0a 09 09 09 09 09 09 6e 63 20 2d 3d 20 27 41 27 20 2d 20 27 30 27 20 2d 20 31 | .10).{.......nc.-=.'A'.-.'0'.-.1 |
1be40 | 30 3b 0a 09 09 09 09 09 09 69 66 20 28 28 6e 63 20 3c 20 31 30 29 20 7c 7c 20 28 6e 63 20 3e 20 | 0;.......if.((nc.<.10).||.(nc.>. |
1be60 | 31 35 29 29 20 7b 0a 09 09 09 09 09 09 09 67 6f 74 6f 20 6e 6f 73 70 65 63 3b 0a 09 09 09 09 09 | 15)).{........goto.nospec;...... |
1be80 | 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 65 63 20 3d 20 28 65 63 20 3c 3c 20 34 29 20 7c 20 | .}......}......ec.=.(ec.<<.4).|. |
1bea0 | 6e 63 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 35 3b 0a 09 09 09 7d 20 65 | nc;.....}.....iname.+=.5;....}.e |
1bec0 | 6c 73 65 20 7b 0a 6e 6f 73 70 65 63 3a 3b 09 09 09 0a 09 09 09 09 69 66 20 28 20 28 63 68 6c 20 | lse.{.nospec:;........if.(.(chl. |
1bee0 | 3d 20 69 6e 2d 3e 63 68 61 72 32 75 6e 69 28 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 | =.in->char2uni(iname,.iname_end. |
1bf00 | 2d 20 69 6e 61 6d 65 2c 20 26 65 63 29 29 20 3c 20 30 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 | -.iname,.&ec)).<.0)......return. |
1bf20 | 63 68 6c 3b 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 09 09 7d 0a 09 09 7d 0a | chl;.....iname.+=.chl;....}...}. |
1bf40 | 0a 09 09 2f 2a 20 75 6e 69 74 6f 75 70 70 65 72 20 73 68 6f 75 6c 64 20 62 65 20 68 65 72 65 21 | .../*.unitoupper.should.be.here! |
1bf60 | 20 2a 2f 0a 0a 09 09 63 68 6c 20 3d 20 6f 75 74 2d 3e 75 6e 69 32 63 68 61 72 28 65 63 2c 20 76 | .*/....chl.=.out->uni2char(ec,.v |
1bf80 | 6e 61 6d 65 2c 20 76 6e 61 6d 65 5f 65 6e 64 20 2d 20 76 6e 61 6d 65 29 3b 0a 09 09 69 66 20 28 | name,.vname_end.-.vname);...if.( |
1bfa0 | 63 68 6c 20 3c 20 30 29 0a 09 09 09 72 65 74 75 72 6e 20 63 68 6c 3b 0a 0a 09 09 2f 2a 20 74 68 | chl.<.0)....return.chl;..../*.th |
1bfc0 | 69 73 20 69 73 20 77 72 6f 6e 67 2e 2e 2e 20 2a 2f 0a 09 09 69 66 20 28 63 63 29 20 7b 0a 09 09 | is.is.wrong....*/...if.(cc).{... |
1bfe0 | 09 69 6e 74 20 63 68 69 3b 0a 0a 09 09 09 66 6f 72 20 28 63 68 69 20 3d 20 30 3b 20 63 68 69 20 | .int.chi;.....for.(chi.=.0;.chi. |
1c000 | 3c 20 63 68 6c 3b 20 63 68 69 2b 2b 29 7b 0a 09 09 09 09 76 6e 61 6d 65 5b 63 68 69 5d 20 3d 20 | <.chl;.chi++){.....vname[chi].=. |
1c020 | 6e 63 70 5f 74 6f 75 70 70 65 72 28 6f 75 74 2c 20 76 6e 61 6d 65 5b 63 68 69 5d 29 3b 0a 09 09 | ncp_toupper(out,.vname[chi]);... |
1c040 | 09 7d 0a 09 09 7d 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 7d 0a 0a 09 2a 76 6e 61 | .}...}...vname.+=.chl;..}...*vna |
1c060 | 6d 65 20 3d 20 30 3b 0a 09 2a 76 6c 65 6e 20 3d 20 76 6e 61 6d 65 20 2d 20 76 6e 61 6d 65 5f 73 | me.=.0;..*vlen.=.vname.-.vname_s |
1c080 | 74 61 72 74 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 76 6f 6c | tart;..return.0;.}..int.ncp__vol |
1c0a0 | 32 69 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 75 | 2io(struct.ncp_server.*server,.u |
1c0c0 | 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e | nsigned.char.*iname,.unsigned.in |
1c0e0 | 74 20 2a 69 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a | t.*ilen,...const.unsigned.char.* |
1c100 | 76 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 6c 65 6e 2c 20 69 6e 74 20 63 63 | vname,.unsigned.int.vlen,.int.cc |
1c120 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a 69 6e 20 3d 20 73 65 72 76 | ).{..struct.nls_table.*in.=.serv |
1c140 | 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a | er->nls_vol;..struct.nls_table.* |
1c160 | 6f 75 74 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 63 6f 6e 73 74 20 75 6e 73 | out.=.server->nls_io;..const.uns |
1c180 | 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 65 6e 64 3b 0a 09 75 6e 73 69 67 6e 65 64 | igned.char.*vname_end;..unsigned |
1c1a0 | 20 63 68 61 72 20 2a 69 6e 61 6d 65 5f 73 74 61 72 74 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 | .char.*iname_start;..unsigned.ch |
1c1c0 | 61 72 20 2a 69 6e 61 6d 65 5f 65 6e 64 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 | ar.*iname_end;..unsigned.char.*v |
1c1e0 | 6e 61 6d 65 5f 63 63 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 0a 09 76 6e 61 6d 65 5f 63 63 20 3d 20 | name_cc;..int.err;...vname_cc.=. |
1c200 | 4e 55 4c 4c 3b 0a 0a 09 69 66 20 28 63 63 29 20 7b 0a 09 09 69 6e 74 20 69 3b 0a 0a 09 09 2f 2a | NULL;...if.(cc).{...int.i;..../* |
1c220 | 20 74 68 69 73 20 69 73 20 77 72 6f 6e 67 21 20 2a 2f 0a 09 09 76 6e 61 6d 65 5f 63 63 20 3d 20 | .this.is.wrong!.*/...vname_cc.=. |
1c240 | 6b 6d 61 6c 6c 6f 63 28 76 6c 65 6e 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 09 69 66 20 | kmalloc(vlen,.GFP_KERNEL);...if. |
1c260 | 28 21 76 6e 61 6d 65 5f 63 63 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 | (!vname_cc)....return.-ENOMEM;.. |
1c280 | 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 76 6c 65 6e 3b 20 69 2b 2b 29 0a 09 09 09 76 | .for.(i.=.0;.i.<.vlen;.i++)....v |
1c2a0 | 6e 61 6d 65 5f 63 63 5b 69 5d 20 3d 20 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 69 6e 2c 20 76 6e 61 | name_cc[i].=.ncp_tolower(in,.vna |
1c2c0 | 6d 65 5b 69 5d 29 3b 0a 09 09 76 6e 61 6d 65 20 3d 20 76 6e 61 6d 65 5f 63 63 3b 0a 09 7d 0a 0a | me[i]);...vname.=.vname_cc;..}.. |
1c2e0 | 09 69 6e 61 6d 65 5f 73 74 61 72 74 20 3d 20 69 6e 61 6d 65 3b 0a 09 69 6e 61 6d 65 5f 65 6e 64 | .iname_start.=.iname;..iname_end |
1c300 | 20 3d 20 69 6e 61 6d 65 20 2b 20 2a 69 6c 65 6e 20 2d 20 31 3b 0a 09 76 6e 61 6d 65 5f 65 6e 64 | .=.iname.+.*ilen.-.1;..vname_end |
1c320 | 20 3d 20 76 6e 61 6d 65 20 2b 20 76 6c 65 6e 3b 0a 0a 09 77 68 69 6c 65 20 28 76 6e 61 6d 65 20 | .=.vname.+.vlen;...while.(vname. |
1c340 | 3c 20 76 6e 61 6d 65 5f 65 6e 64 29 20 7b 0a 09 09 77 63 68 61 72 5f 74 20 65 63 3b 0a 09 09 69 | <.vname_end).{...wchar_t.ec;...i |
1c360 | 6e 74 20 63 68 6c 3b 0a 0a 09 09 69 66 20 28 20 28 63 68 6c 20 3d 20 69 6e 2d 3e 63 68 61 72 32 | nt.chl;....if.(.(chl.=.in->char2 |
1c380 | 75 6e 69 28 76 6e 61 6d 65 2c 20 76 6e 61 6d 65 5f 65 6e 64 20 2d 20 76 6e 61 6d 65 2c 20 26 65 | uni(vname,.vname_end.-.vname,.&e |
1c3a0 | 63 29 29 20 3c 20 30 29 20 7b 0a 09 09 09 65 72 72 20 3d 20 63 68 6c 3b 0a 09 09 09 67 6f 74 6f | c)).<.0).{....err.=.chl;....goto |
1c3c0 | 20 71 75 69 74 3b 0a 09 09 7d 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 0a 09 09 2f 2a | .quit;...}...vname.+=.chl;..../* |
1c3e0 | 20 75 6e 69 74 6f 6c 6f 77 65 72 20 73 68 6f 75 6c 64 20 62 65 20 68 65 72 65 21 20 2a 2f 0a 0a | .unitolower.should.be.here!.*/.. |
1c400 | 09 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c | ..if.(NCP_IS_FLAG(server,.NCP_FL |
1c420 | 41 47 5f 55 54 46 38 29 29 20 7b 0a 09 09 09 69 6e 74 20 6b 3b 0a 0a 09 09 09 6b 20 3d 20 75 74 | AG_UTF8)).{....int.k;.....k.=.ut |
1c440 | 66 33 32 5f 74 6f 5f 75 74 66 38 28 65 63 2c 20 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 | f32_to_utf8(ec,.iname,.iname_end |
1c460 | 20 2d 20 69 6e 61 6d 65 29 3b 0a 09 09 09 69 66 20 28 6b 20 3c 20 30 29 20 7b 0a 09 09 09 09 65 | .-.iname);....if.(k.<.0).{.....e |
1c480 | 72 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 09 67 6f 74 6f 20 71 75 69 | rr.=.-ENAMETOOLONG;.....goto.qui |
1c4a0 | 74 3b 0a 09 09 09 7d 0a 09 09 09 69 6e 61 6d 65 20 2b 3d 20 6b 3b 0a 09 09 7d 20 65 6c 73 65 20 | t;....}....iname.+=.k;...}.else. |
1c4c0 | 7b 0a 09 09 09 69 66 20 28 20 28 63 68 6c 20 3d 20 6f 75 74 2d 3e 75 6e 69 32 63 68 61 72 28 65 | {....if.(.(chl.=.out->uni2char(e |
1c4e0 | 63 2c 20 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 29 29 20 3e 3d | c,.iname,.iname_end.-.iname)).>= |
1c500 | 20 30 29 20 7b 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 09 09 7d 20 65 6c 73 | .0).{.....iname.+=.chl;....}.els |
1c520 | 65 20 7b 0a 09 09 09 09 69 6e 74 20 6b 3b 0a 0a 09 09 09 09 69 66 20 28 69 6e 61 6d 65 5f 65 6e | e.{.....int.k;......if.(iname_en |
1c540 | 64 20 2d 20 69 6e 61 6d 65 20 3c 20 35 29 20 7b 0a 09 09 09 09 09 65 72 72 20 3d 20 2d 45 4e 41 | d.-.iname.<.5).{......err.=.-ENA |
1c560 | 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 09 09 67 6f 74 6f 20 71 75 69 74 3b 0a 09 09 09 09 7d | METOOLONG;......goto.quit;.....} |
1c580 | 0a 09 09 09 09 2a 69 6e 61 6d 65 20 3d 20 4e 43 50 5f 45 53 43 3b 0a 09 09 09 09 66 6f 72 20 28 | .....*iname.=.NCP_ESC;.....for.( |
1c5a0 | 6b 20 3d 20 34 3b 20 6b 20 3e 20 30 3b 20 6b 2d 2d 29 20 7b 0a 09 09 09 09 09 75 6e 73 69 67 6e | k.=.4;.k.>.0;.k--).{......unsign |
1c5c0 | 65 64 20 63 68 61 72 20 76 3b 0a 09 09 09 09 09 0a 09 09 09 09 09 76 20 3d 20 28 65 63 20 26 20 | ed.char.v;............v.=.(ec.&. |
1c5e0 | 30 78 46 29 20 2b 20 27 30 27 3b 0a 09 09 09 09 09 69 66 20 28 76 20 3e 20 27 39 27 29 20 7b 0a | 0xF).+.'0';......if.(v.>.'9').{. |
1c600 | 09 09 09 09 09 09 76 20 2b 3d 20 27 41 27 20 2d 20 27 39 27 20 2d 20 31 3b 0a 09 09 09 09 09 7d | ......v.+=.'A'.-.'9'.-.1;......} |
1c620 | 0a 09 09 09 09 09 69 6e 61 6d 65 5b 6b 5d 20 3d 20 76 3b 0a 09 09 09 09 09 65 63 20 3e 3e 3d 20 | ......iname[k].=.v;......ec.>>=. |
1c640 | 34 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 35 3b 0a 09 09 09 7d 0a 09 09 | 4;.....}.....iname.+=.5;....}... |
1c660 | 7d 0a 09 7d 0a 0a 09 2a 69 6e 61 6d 65 20 3d 20 30 3b 0a 09 2a 69 6c 65 6e 20 3d 20 69 6e 61 6d | }..}...*iname.=.0;..*ilen.=.inam |
1c680 | 65 20 2d 20 69 6e 61 6d 65 5f 73 74 61 72 74 3b 0a 09 65 72 72 20 3d 20 30 3b 0a 71 75 69 74 3a | e.-.iname_start;..err.=.0;.quit: |
1c6a0 | 3b 0a 09 69 66 20 28 63 63 29 0a 09 09 6b 66 72 65 65 28 76 6e 61 6d 65 5f 63 63 29 3b 0a 09 72 | ;..if.(cc)...kfree(vname_cc);..r |
1c6c0 | 65 74 75 72 6e 20 65 72 72 3b 0a 7d 0a 0a 23 65 6c 73 65 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 69 6f | eturn.err;.}..#else..int.ncp__io |
1c6e0 | 32 76 6f 6c 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 2c 20 75 6e 73 69 67 | 2vol(unsigned.char.*vname,.unsig |
1c700 | 6e 65 64 20 69 6e 74 20 2a 76 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 | ned.int.*vlen,...const.unsigned. |
1c720 | 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 69 6c 65 6e 2c 20 | char.*iname,.unsigned.int.ilen,. |
1c740 | 69 6e 74 20 63 63 29 0a 7b 0a 09 69 6e 74 20 69 3b 0a 0a 09 69 66 20 28 2a 76 6c 65 6e 20 3c 3d | int.cc).{..int.i;...if.(*vlen.<= |
1c760 | 20 69 6c 65 6e 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 0a | .ilen)...return.-ENAMETOOLONG;.. |
1c780 | 09 69 66 20 28 63 63 29 0a 09 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 69 6c 65 6e 3b | .if.(cc)...for.(i.=.0;.i.<.ilen; |
1c7a0 | 20 69 2b 2b 29 20 7b 0a 09 09 09 2a 76 6e 61 6d 65 20 3d 20 74 6f 75 70 70 65 72 28 2a 69 6e 61 | .i++).{....*vname.=.toupper(*ina |
1c7c0 | 6d 65 29 3b 0a 09 09 09 76 6e 61 6d 65 2b 2b 3b 0a 09 09 09 69 6e 61 6d 65 2b 2b 3b 0a 09 09 7d | me);....vname++;....iname++;...} |
1c7e0 | 0a 09 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 6d 6f 76 65 28 76 6e 61 6d 65 2c 20 69 6e 61 6d 65 2c | ..else.{...memmove(vname,.iname, |
1c800 | 20 69 6c 65 6e 29 3b 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 69 6c 65 6e 3b 0a 09 7d 0a 0a 09 2a 76 | .ilen);...vname.+=.ilen;..}...*v |
1c820 | 6c 65 6e 20 3d 20 69 6c 65 6e 3b 0a 09 2a 76 6e 61 6d 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e | len.=.ilen;..*vname.=.0;..return |
1c840 | 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 75 6e 73 69 67 6e 65 64 20 | .0;.}..int.ncp__vol2io(unsigned. |
1c860 | 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 69 6c 65 6e 2c | char.*iname,.unsigned.int.*ilen, |
1c880 | 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 2c 20 75 | ...const.unsigned.char.*vname,.u |
1c8a0 | 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 6c 65 6e 2c 20 69 6e 74 20 63 63 29 0a 7b 0a 09 69 6e 74 | nsigned.int.vlen,.int.cc).{..int |
1c8c0 | 20 69 3b 0a 0a 09 69 66 20 28 2a 69 6c 65 6e 20 3c 3d 20 76 6c 65 6e 29 0a 09 09 72 65 74 75 72 | .i;...if.(*ilen.<=.vlen)...retur |
1c8e0 | 6e 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 0a 09 69 66 20 28 63 63 29 0a 09 09 66 6f 72 | n.-ENAMETOOLONG;...if.(cc)...for |
1c900 | 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 76 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0a 09 09 09 2a 69 6e | .(i.=.0;.i.<.vlen;.i++).{....*in |
1c920 | 61 6d 65 20 3d 20 74 6f 6c 6f 77 65 72 28 2a 76 6e 61 6d 65 29 3b 0a 09 09 09 69 6e 61 6d 65 2b | ame.=.tolower(*vname);....iname+ |
1c940 | 2b 3b 0a 09 09 09 76 6e 61 6d 65 2b 2b 3b 0a 09 09 7d 0a 09 65 6c 73 65 20 7b 0a 09 09 6d 65 6d | +;....vname++;...}..else.{...mem |
1c960 | 6d 6f 76 65 28 69 6e 61 6d 65 2c 20 76 6e 61 6d 65 2c 20 76 6c 65 6e 29 3b 0a 09 09 69 6e 61 6d | move(iname,.vname,.vlen);...inam |
1c980 | 65 20 2b 3d 20 76 6c 65 6e 3b 0a 09 7d 0a 0a 09 2a 69 6c 65 6e 20 3d 20 76 6c 65 6e 3b 0a 09 2a | e.+=.vlen;..}...*ilen.=.vlen;..* |
1c9a0 | 69 6e 61 6d 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a | iname.=.0;..return.0;.}..#endif. |
1c9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1c9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ca00 | 6e 63 70 66 73 2f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncplib_kernel.h........... |
1ca20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ca40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ca60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
1ca80 | 30 30 31 35 34 32 36 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 31 35 36 00 20 30 00 00 00 | 0015426.13023323142.014156..0... |
1caa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cb00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
1cb20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
1cb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1cc00 | 2f 2a 0a 20 2a 20 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f | /*..*..ncplib_kernel.h..*..*..Co |
1cc20 | 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 | pyright.(C).1995,.1996.by.Volker |
1cc40 | 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 | .Lendecke..*..Modified.for.big.e |
1cc60 | 6e 64 69 61 6e 20 62 79 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 | ndian.by.J.F..Chadima.and.David. |
1cc80 | 53 2e 20 4d 69 6c 6c 65 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 | S..Miller..*..Modified.1997.Pete |
1cca0 | 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 | r.Waltenberg,.Bill.Hawes,.David. |
1ccc0 | 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 | Woodhouse.for.2.1.dcache..*..Mod |
1cce0 | 69 66 69 65 64 20 31 39 39 38 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 | ified.1998,.1999.Wolfram.Pienkos |
1cd00 | 73 20 66 6f 72 20 4e 4c 53 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 | s.for.NLS..*..Modified.1999.Wolf |
1cd20 | 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 63 61 63 68 69 | ram.Pienkoss.for.directory.cachi |
1cd40 | 6e 67 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 4c 49 42 5f 48 0a 23 64 65 | ng..*..*/..#ifndef._NCPLIB_H.#de |
1cd60 | 66 69 6e 65 20 5f 4e 43 50 4c 49 42 5f 48 0a 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | fine._NCPLIB_H...#include.<linux |
1cd80 | 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 79 70 65 73 2e 68 3e 0a | /fs.h>.#include.<linux/types.h>. |
1cda0 | 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 | #include.<linux/errno.h>.#includ |
1cdc0 | 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 | e.<linux/slab.h>.#include.<linux |
1cde0 | 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 | /stat.h>.#include.<linux/fcntl.h |
1ce00 | 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 70 61 67 65 6d 61 70 2e 68 3e 0a 0a 23 69 | >.#include.<linux/pagemap.h>..#i |
1ce20 | 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | nclude.<asm/uaccess.h>.#include. |
1ce40 | 3c 61 73 6d 2f 62 79 74 65 6f 72 64 65 72 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f | <asm/byteorder.h>.#include.<asm/ |
1ce60 | 75 6e 61 6c 69 67 6e 65 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 73 74 72 69 6e | unaligned.h>.#include.<asm/strin |
1ce80 | 67 2e 68 3e 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 23 69 | g.h>..#ifdef.CONFIG_NCPFS_NLS.#i |
1cea0 | 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 6c 73 2e 68 3e 0a 23 65 6c 73 65 0a 23 69 6e 63 6c | nclude.<linux/nls.h>.#else.#incl |
1cec0 | 75 64 65 20 3c 6c 69 6e 75 78 2f 63 74 79 70 65 2e 68 3e 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f | ude.<linux/ctype.h>.#endif./*.CO |
1cee0 | 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d | NFIG_NCPFS_NLS.*/..#define.NCP_M |
1cf00 | 49 4e 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 09 38 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d 41 | IN_SYMLINK_SIZE.8.#define.NCP_MA |
1cf20 | 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 09 35 31 32 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f | X_SYMLINK_SIZE.512..#define.NCP_ |
1cf40 | 42 4c 4f 43 4b 5f 53 48 49 46 54 09 09 39 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 42 4c 4f 43 4b | BLOCK_SHIFT..9.#define.NCP_BLOCK |
1cf60 | 5f 53 49 5a 45 09 09 28 31 20 3c 3c 20 28 4e 43 50 5f 42 4c 4f 43 4b 5f 53 48 49 46 54 29 29 0a | _SIZE..(1.<<.(NCP_BLOCK_SHIFT)). |
1cf80 | 0a 69 6e 74 20 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 66 66 65 72 73 69 7a 65 28 73 74 | .int.ncp_negotiate_buffersize(st |
1cfa0 | 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 69 6e 74 2c 20 69 6e 74 20 2a 29 3b 0a | ruct.ncp_server.*,.int,.int.*);. |
1cfc0 | 69 6e 74 20 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f | int.ncp_negotiate_size_and_optio |
1cfe0 | 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e | ns(struct.ncp_server.*server,.in |
1d000 | 74 20 73 69 7a 65 2c 0a 20 20 09 09 09 20 20 69 6e 74 20 6f 70 74 69 6f 6e 73 2c 20 69 6e 74 20 | t.size,........int.options,.int. |
1d020 | 2a 72 65 74 5f 73 69 7a 65 2c 20 69 6e 74 20 2a 72 65 74 5f 6f 70 74 69 6f 6e 73 29 3b 0a 0a 69 | *ret_size,.int.*ret_options);..i |
1d040 | 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 5f 77 69 74 68 5f 6e 75 6d 62 | nt.ncp_get_volume_info_with_numb |
1d060 | 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 69 6e | er(struct.ncp_server*.server,.in |
1d080 | 74 20 6e 2c 0a 09 09 09 09 20 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 | t.n,.........struct.ncp_volume_i |
1d0a0 | 6e 66 6f 20 2a 74 61 72 67 65 74 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 | nfo.*target);..int.ncp_get_direc |
1d0c0 | 74 6f 72 79 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 | tory_info(struct.ncp_server*.ser |
1d0e0 | 76 65 72 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 2c 0a 09 09 09 20 20 20 73 74 72 75 63 | ver,.__u8.dirhandle,.......struc |
1d100 | 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 3b 0a 0a 69 6e 74 | t.ncp_volume_info*.target);..int |
1d120 | 20 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | .ncp_close_file(struct.ncp_serve |
1d140 | 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e | r.*,.const.char.*);.static.inlin |
1d160 | 65 20 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 5f 73 69 7a 65 28 5f 5f 75 33 32 | e.int.ncp_read_bounce_size(__u32 |
1d180 | 20 73 69 7a 65 29 20 7b 0a 09 72 65 74 75 72 6e 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e | .size).{..return.sizeof(struct.n |
1d1a0 | 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 32 20 2b 20 32 20 2b 20 73 69 7a 65 20 | cp_reply_header).+.2.+.2.+.size. |
1d1c0 | 2b 20 38 3b 0a 7d 3b 0a 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 73 74 72 75 | +.8;.};.int.ncp_read_bounce(stru |
1d1e0 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 5f | ct.ncp_server.*,.const.char.*,._ |
1d200 | 5f 75 33 32 2c 20 5f 5f 75 31 36 2c 20 0a 09 09 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 | _u32,.__u16,....struct.iov_iter. |
1d220 | 2a 2c 20 69 6e 74 20 2a 2c 20 76 6f 69 64 20 2a 62 6f 75 6e 63 65 2c 20 5f 5f 75 33 32 20 62 6f | *,.int.*,.void.*bounce,.__u32.bo |
1d240 | 75 6e 63 65 6c 65 6e 29 3b 0a 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 73 74 | uncelen);.int.ncp_read_kernel(st |
1d260 | 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c | ruct.ncp_server.*,.const.char.*, |
1d280 | 20 5f 5f 75 33 32 2c 20 5f 5f 75 31 36 2c 20 0a 09 09 63 68 61 72 20 2a 2c 20 69 6e 74 20 2a 29 | .__u32,.__u16,....char.*,.int.*) |
1d2a0 | 3b 0a 69 6e 74 20 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 | ;.int.ncp_write_kernel(struct.nc |
1d2c0 | 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 5f 5f 75 33 32 2c | p_server.*,.const.char.*,.__u32, |
1d2e0 | 20 5f 5f 75 31 36 2c 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 69 6e 74 20 2a 29 3b 0a | .__u16,...const.char.*,.int.*);. |
1d300 | 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c | .static.inline.void.ncp_inode_cl |
1d320 | 6f 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 20 7b 0a 09 61 74 6f 6d | ose(struct.inode.*inode).{..atom |
1d340 | 69 63 5f 64 65 63 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 | ic_dec(&NCP_FINFO(inode)->opened |
1d360 | 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f | );.}..void.ncp_extract_file_info |
1d380 | 28 63 6f 6e 73 74 20 76 6f 69 64 2a 20 73 72 63 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f | (const.void*.src,.struct.nw_info |
1d3a0 | 5f 73 74 72 75 63 74 2a 20 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e | _struct*.target);.int.ncp_obtain |
1d3c0 | 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c | _info(struct.ncp_server.*server, |
1d3e0 | 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 0a 09 | .struct.inode.*,.const.char.*,.. |
1d400 | 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 3b | .struct.nw_info_struct.*target); |
1d420 | 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 | .int.ncp_obtain_nfs_info(struct. |
1d440 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e | ncp_server.*server,.struct.nw_in |
1d460 | 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 75 70 64 61 | fo_struct.*target);.int.ncp_upda |
1d480 | 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 | te_known_namespace(struct.ncp_se |
1d4a0 | 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 2c 20 69 6e 74 20 2a | rver.*server,.__u8.volume,.int.* |
1d4c0 | 72 65 74 5f 6e 73 29 3b 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 | ret_ns);.int.ncp_get_volume_root |
1d4e0 | 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 | (struct.ncp_server.*server,.cons |
1d500 | 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d 65 2c 0a 09 09 09 5f 5f 75 33 32 20 2a 76 6f 6c 75 6d | t.char.*volname,....__u32.*volum |
1d520 | 65 2c 20 5f 5f 6c 65 33 32 20 2a 64 69 72 65 6e 74 2c 20 5f 5f 6c 65 33 32 20 2a 64 6f 73 64 69 | e,.__le32.*dirent,.__le32.*dosdi |
1d540 | 72 65 6e 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 74 72 | rent);.int.ncp_lookup_volume(str |
1d560 | 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 | uct.ncp_server.*,.const.char.*,. |
1d580 | 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 29 3b 0a 69 6e 74 20 6e 63 | struct.nw_info_struct.*);.int.nc |
1d5a0 | 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f | p_modify_file_or_subdir_dos_info |
1d5c0 | 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 63 74 20 69 6e 6f | (struct.ncp_server.*,.struct.ino |
1d5e0 | 64 65 20 2a 2c 0a 09 20 5f 5f 6c 65 33 32 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f | de.*,...__le32,.const.struct.nw_ |
1d600 | 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 3b 0a 69 6e 74 20 6e 63 70 5f | modify_dos_info.*info);.int.ncp_ |
1d620 | 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 | modify_file_or_subdir_dos_info_p |
1d640 | 61 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 63 74 20 | ath(struct.ncp_server.*,.struct. |
1d660 | 69 6e 6f 64 65 20 2a 2c 0a 09 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 70 61 74 68 2c 20 5f 5f 6c | inode.*,...const.char*.path,.__l |
1d680 | 65 33 32 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f | e32,.const.struct.nw_modify_dos_ |
1d6a0 | 69 6e 66 6f 20 2a 69 6e 66 6f 29 3b 0a 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f | info.*info);.int.ncp_modify_nfs_ |
1d6c0 | 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 20 76 | info(struct.ncp_server.*,.__u8.v |
1d6e0 | 6f 6c 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 09 5f 5f 75 33 32 20 6d | olnum,.__le32.dirent,....__u32.m |
1d700 | 6f 64 65 2c 20 5f 5f 75 33 32 20 72 64 65 76 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 64 65 6c 5f 66 | ode,.__u32.rdev);..int.ncp_del_f |
1d720 | 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 | ile_or_subdir2(struct.ncp_server |
1d740 | 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 64 65 6c | .*,.struct.dentry*);.int.ncp_del |
1d760 | 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | _file_or_subdir(struct.ncp_serve |
1d780 | 72 20 2a 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 | r.*,.struct.inode.*,.const.char. |
1d7a0 | 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f | *);.int.ncp_open_create_file_or_ |
1d7c0 | 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 | subdir(struct.ncp_server.*,.stru |
1d7e0 | 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 0a 09 09 09 09 69 6e | ct.inode.*,.const.char.*,.....in |
1d800 | 74 2c 20 5f 5f 6c 65 33 32 2c 20 5f 5f 6c 65 31 36 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e | t,.__le32,.__le16,.struct.ncp_en |
1d820 | 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 | try_info.*);..int.ncp_initialize |
1d840 | 5f 73 65 61 72 63 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 | _search(struct.ncp_server.*,.str |
1d860 | 75 63 74 20 69 6e 6f 64 65 20 2a 2c 0a 09 09 20 20 20 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 | uct.inode.*,.........struct.nw_s |
1d880 | 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 | earch_sequence.*target);.int.ncp |
1d8a0 | 5f 73 65 61 72 63 68 5f 66 6f 72 5f 66 69 6c 65 73 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 | _search_for_fileset(struct.ncp_s |
1d8c0 | 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 | erver.*server,.......struct.nw_s |
1d8e0 | 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 73 65 71 2c 0a 09 09 09 20 20 20 69 6e 74 2a 20 | earch_sequence.*seq,.......int*. |
1d900 | 6d 6f 72 65 2c 20 69 6e 74 2a 20 63 6e 74 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 20 62 75 66 66 | more,.int*.cnt,.......char*.buff |
1d920 | 65 72 2c 20 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 2a | er,.size_t.bufsize,.......char** |
1d940 | 20 72 62 75 66 2c 20 73 69 7a 65 5f 74 2a 20 72 73 69 7a 65 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f | .rbuf,.size_t*.rsize);..int.ncp_ |
1d960 | 72 65 6e 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 | ren_or_mov_file_or_subdir(struct |
1d980 | 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 20 20 20 73 74 | .ncp_server.*server,..........st |
1d9a0 | 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 73 74 72 75 | ruct.inode.*,.const.char.*,.stru |
1d9c0 | 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 3b 0a 0a 0a 69 6e 74 | ct.inode.*,.const.char.*);...int |
1d9e0 | 0a 6e 63 70 5f 4c 6f 67 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 | .ncp_LogPhysicalRecord(struct.nc |
1da00 | 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 63 6f 6e 73 74 20 | p_server.*server,.........const. |
1da20 | 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 20 5f 5f 75 38 20 6c 6f 63 6b 74 79 70 65 2c 0a 09 09 | char.*file_id,.__u8.locktype,... |
1da40 | 20 20 20 20 20 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 68 | ......__u32.offset,.__u32.length |
1da60 | 2c 20 5f 5f 75 31 36 20 74 69 6d 65 6f 75 74 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 | ,.__u16.timeout);..#ifdef.CONFIG |
1da80 | 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 69 6e 74 0a 6e 63 70 5f 43 6c 65 | _NCPFS_IOCTL_LOCKING.int.ncp_Cle |
1daa0 | 61 72 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 | arPhysicalRecord(struct.ncp_serv |
1dac0 | 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f | er.*server,....const.char.*file_ |
1dae0 | 69 64 2c 0a 09 09 09 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 | id,....__u32.offset,.__u32.lengt |
1db00 | 68 29 3b 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c | h);.#endif./*.CONFIG_NCPFS_IOCTL |
1db20 | 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 | _LOCKING.*/..int.ncp_mount_subdi |
1db40 | 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 2c 20 5f 5f 75 | r(struct.ncp_server.*,.__u8,.__u |
1db60 | 38 2c 20 5f 5f 6c 65 33 32 2c 0a 09 09 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c | 8,.__le32,....__u32*.volume,.__l |
1db80 | 65 33 32 2a 20 64 69 72 65 6e 74 2c 20 5f 5f 6c 65 33 32 2a 20 64 6f 73 64 69 72 65 6e 74 29 3b | e32*.dirent,.__le32*.dosdirent); |
1dba0 | 0a 69 6e 74 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 74 72 75 63 74 20 | .int.ncp_dirhandle_alloc(struct. |
1dbc0 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 20 76 6f 6c 2c 20 5f 5f 6c 65 33 32 20 64 | ncp_server.*,.__u8.vol,.__le32.d |
1dbe0 | 69 72 65 6e 74 2c 20 5f 5f 75 38 20 2a 64 69 72 68 61 6e 64 6c 65 29 3b 0a 69 6e 74 20 6e 63 70 | irent,.__u8.*dirhandle);.int.ncp |
1dc00 | 5f 64 69 72 68 61 6e 64 6c 65 5f 66 72 65 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | _dirhandle_free(struct.ncp_serve |
1dc20 | 72 20 2a 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 63 | r.*,.__u8.dirhandle);..int.ncp_c |
1dc40 | 72 65 61 74 65 5f 6e 65 77 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 | reate_new(struct.inode.*dir,.str |
1dc60 | 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 | uct.dentry.*dentry,............. |
1dc80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 64 65 76 5f | ..............umode_t.mode,.dev_ |
1dca0 | 74 20 72 64 65 76 2c 20 5f 5f 6c 65 33 32 20 61 74 74 72 69 62 75 74 65 73 29 3b 0a 0a 73 74 61 | t.rdev,.__le32.attributes);..sta |
1dcc0 | 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 | tic.inline.int.ncp_is_nfs_extras |
1dce0 | 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 75 6e 73 69 | (struct.ncp_server*.server,.unsi |
1dd00 | 67 6e 65 64 20 69 6e 74 20 76 6f 6c 6e 75 6d 29 20 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 | gned.int.volnum).{.#ifdef.CONFIG |
1dd20 | 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 72 65 74 75 72 6e 20 28 73 65 72 76 65 72 2d 3e 6d | _NCPFS_NFS_NS..return.(server->m |
1dd40 | 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 4e 46 53 5f 45 58 54 52 41 53 29 20 26 | .flags.&.NCP_MOUNT_NFS_EXTRAS).& |
1dd60 | 26 0a 09 20 20 20 20 20 20 20 28 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f | &.........(server->name_space[vo |
1dd80 | 6c 6e 75 6d 5d 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 23 65 6c 73 65 0a 09 72 65 74 75 | lnum].==.NW_NS_NFS);.#else..retu |
1dda0 | 72 6e 20 30 3b 0a 23 65 6e 64 69 66 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 | rn.0;.#endif.}..#ifdef.CONFIG_NC |
1ddc0 | 50 46 53 5f 4e 4c 53 0a 0a 69 6e 74 20 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 73 74 72 75 63 74 20 | PFS_NLS..int.ncp__io2vol(struct. |
1dde0 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 | ncp_server.*,.unsigned.char.*,.u |
1de00 | 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 | nsigned.int.*,.....const.unsigne |
1de20 | 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e | d.char.*,.unsigned.int,.int);.in |
1de40 | 74 20 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | t.ncp__vol2io(struct.ncp_server. |
1de60 | 2a 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 | *,.unsigned.char.*,.unsigned.int |
1de80 | 20 2a 2c 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 | .*,.....const.unsigned.char.*,.u |
1dea0 | 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f | nsigned.int,.int);..#define.NCP_ |
1dec0 | 45 53 43 09 09 09 27 3a 27 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 73 | ESC...':'.#define.NCP_IO_TABLE(s |
1dee0 | 62 29 09 28 4e 43 50 5f 53 42 50 28 73 62 29 2d 3e 6e 6c 73 5f 69 6f 29 0a 23 64 65 66 69 6e 65 | b).(NCP_SBP(sb)->nls_io).#define |
1df00 | 20 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 74 2c 20 63 29 09 6e 6c 73 5f 74 6f 6c 6f 77 65 72 28 74 | .ncp_tolower(t,.c).nls_tolower(t |
1df20 | 2c 20 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 74 6f 75 70 70 65 72 28 74 2c 20 63 29 09 6e | ,.c).#define.ncp_toupper(t,.c).n |
1df40 | 6c 73 5f 74 6f 75 70 70 65 72 28 74 2c 20 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 73 74 72 | ls_toupper(t,.c).#define.ncp_str |
1df60 | 6e 69 63 6d 70 28 74 2c 20 73 31 2c 20 73 32 2c 20 6c 65 6e 29 20 5c 0a 09 6e 6c 73 5f 73 74 72 | nicmp(t,.s1,.s2,.len).\..nls_str |
1df80 | 6e 69 63 6d 70 28 74 2c 20 73 31 2c 20 73 32 2c 20 6c 65 6e 29 0a 23 64 65 66 69 6e 65 20 6e 63 | nicmp(t,.s1,.s2,.len).#define.nc |
1dfa0 | 70 5f 69 6f 32 76 6f 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 69 6f 32 76 6f | p_io2vol(S,m,i,n,k,U).ncp__io2vo |
1dfc0 | 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 76 6f 6c 32 69 | l(S,m,i,n,k,U).#define.ncp_vol2i |
1dfe0 | 6f 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 53 2c 6d 2c 69 | o(S,m,i,n,k,U).ncp__vol2io(S,m,i |
1e000 | 2c 6e 2c 6b 2c 55 29 0a 0a 23 65 6c 73 65 0a 0a 69 6e 74 20 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 | ,n,k,U)..#else..int.ncp__io2vol( |
1e020 | 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c | unsigned.char.*,.unsigned.int.*, |
1e040 | 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 | .....const.unsigned.char.*,.unsi |
1e060 | 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 | gned.int,.int);.int.ncp__vol2io( |
1e080 | 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c | unsigned.char.*,.unsigned.int.*, |
1e0a0 | 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 | .....const.unsigned.char.*,.unsi |
1e0c0 | 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 5f | gned.int,.int);..#define.NCP_IO_ |
1e0e0 | 54 41 42 4c 45 28 73 62 29 09 4e 55 4c 4c 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 74 6f 6c 6f 77 | TABLE(sb).NULL.#define.ncp_tolow |
1e100 | 65 72 28 74 2c 20 63 29 09 74 6f 6c 6f 77 65 72 28 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f | er(t,.c).tolower(c).#define.ncp_ |
1e120 | 74 6f 75 70 70 65 72 28 74 2c 20 63 29 09 74 6f 75 70 70 65 72 28 63 29 0a 23 64 65 66 69 6e 65 | toupper(t,.c).toupper(c).#define |
1e140 | 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 69 6f | .ncp_io2vol(S,m,i,n,k,U).ncp__io |
1e160 | 32 76 6f 6c 28 6d 2c 69 2c 6e 2c 6b 2c 55 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 76 6f 6c 32 | 2vol(m,i,n,k,U).#define.ncp_vol2 |
1e180 | 69 6f 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 6d 2c 69 2c | io(S,m,i,n,k,U).ncp__vol2io(m,i, |
1e1a0 | 6e 2c 6b 2c 55 29 0a 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 73 | n,k,U)...static.inline.int.ncp_s |
1e1c0 | 74 72 6e 69 63 6d 70 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a | trnicmp(const.struct.nls_table.* |
1e1e0 | 74 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 31 2c 20 63 6f | t,...const.unsigned.char.*s1,.co |
1e200 | 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 32 2c 20 69 6e 74 20 6c 65 6e 29 0a | nst.unsigned.char.*s2,.int.len). |
1e220 | 7b 0a 09 77 68 69 6c 65 20 28 6c 65 6e 2d 2d 29 20 7b 0a 09 09 69 66 20 28 74 6f 6c 6f 77 65 72 | {..while.(len--).{...if.(tolower |
1e240 | 28 2a 73 31 2b 2b 29 20 21 3d 20 74 6f 6c 6f 77 65 72 28 2a 73 32 2b 2b 29 29 0a 09 09 09 72 65 | (*s1++).!=.tolower(*s2++))....re |
1e260 | 74 75 72 6e 20 31 3b 0a 09 7d 0a 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 | turn.1;..}...return.0;.}..#endif |
1e280 | 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 | ./*.CONFIG_NCPFS_NLS.*/..#define |
1e2a0 | 20 4e 43 50 5f 47 45 54 5f 41 47 45 28 64 65 6e 74 72 79 29 09 28 6a 69 66 66 69 65 73 20 2d 20 | .NCP_GET_AGE(dentry).(jiffies.-. |
1e2c0 | 28 64 65 6e 74 72 79 29 2d 3e 64 5f 74 69 6d 65 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d 41 | (dentry)->d_time).#define.NCP_MA |
1e2e0 | 58 5f 41 47 45 28 73 65 72 76 65 72 29 09 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 28 73 65 72 76 | X_AGE(server).atomic_read(&(serv |
1e300 | 65 72 29 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 45 53 | er)->dentry_ttl).#define.NCP_TES |
1e320 | 54 5f 41 47 45 28 73 65 72 76 65 72 2c 64 65 6e 74 72 79 29 09 28 4e 43 50 5f 47 45 54 5f 41 47 | T_AGE(server,dentry).(NCP_GET_AG |
1e340 | 45 28 64 65 6e 74 72 79 29 20 3c 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 73 65 72 76 65 72 29 29 | E(dentry).<.NCP_MAX_AGE(server)) |
1e360 | 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e 63 70 5f 61 67 65 5f 64 65 6e | ..static.inline.void.ncp_age_den |
1e380 | 74 72 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 73 | try(struct.ncp_server*.server,.s |
1e3a0 | 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 29 0a 7b 0a 09 64 65 6e 74 72 79 2d | truct.dentry*.dentry).{..dentry- |
1e3c0 | 3e 64 5f 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 20 2d 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 | >d_time.=.jiffies.-.NCP_MAX_AGE( |
1e3e0 | 73 65 72 76 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e | server);.}..static.inline.void.n |
1e400 | 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e | cp_new_dentry(struct.dentry*.den |
1e420 | 74 72 79 29 0a 7b 0a 09 64 65 6e 74 72 79 2d 3e 64 5f 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 | try).{..dentry->d_time.=.jiffies |
1e440 | 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 68 65 61 64 20 7b 0a 09 74 69 | ;.}..struct.ncp_cache_head.{..ti |
1e460 | 6d 65 5f 74 09 09 6d 74 69 6d 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 74 69 6d 65 | me_t..mtime;..unsigned.long.time |
1e480 | 3b 09 2f 2a 20 63 61 63 68 65 20 61 67 65 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 | ;./*.cache.age.*/..unsigned.long |
1e4a0 | 09 65 6e 64 3b 09 2f 2a 20 6c 61 73 74 20 76 61 6c 69 64 20 66 70 6f 73 20 69 6e 20 63 61 63 68 | .end;./*.last.valid.fpos.in.cach |
1e4c0 | 65 20 2a 2f 0a 09 69 6e 74 09 09 65 6f 66 3b 0a 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f | e.*/..int..eof;.};..#define.NCP_ |
1e4e0 | 44 49 52 43 41 43 48 45 5f 53 49 5a 45 09 28 28 69 6e 74 29 28 50 41 47 45 5f 53 49 5a 45 2f 73 | DIRCACHE_SIZE.((int)(PAGE_SIZE/s |
1e500 | 69 7a 65 6f 66 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 29 29 0a 75 6e 69 6f 6e 20 6e | izeof(struct.dentry.*))).union.n |
1e520 | 63 70 5f 64 69 72 5f 63 61 63 68 65 20 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 | cp_dir_cache.{..struct.ncp_cache |
1e540 | 5f 68 65 61 64 09 68 65 61 64 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 09 09 2a 64 65 6e | _head.head;..struct.dentry..*den |
1e560 | 74 72 79 5b 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 5d 3b 0a 7d 3b 0a 0a 23 64 65 66 | try[NCP_DIRCACHE_SIZE];.};..#def |
1e580 | 69 6e 65 20 4e 43 50 5f 46 49 52 53 54 43 41 43 48 45 5f 53 49 5a 45 09 28 28 69 6e 74 29 28 28 | ine.NCP_FIRSTCACHE_SIZE.((int)(( |
1e5a0 | 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 20 2a 20 5c 0a 09 73 69 7a 65 6f 66 28 73 74 | NCP_DIRCACHE_SIZE.*.\..sizeof(st |
1e5c0 | 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e | ruct.dentry.*).-.sizeof(struct.n |
1e5e0 | 63 70 5f 63 61 63 68 65 5f 68 65 61 64 29 29 20 2f 20 5c 0a 09 73 69 7a 65 6f 66 28 73 74 72 75 | cp_cache_head))./.\..sizeof(stru |
1e600 | 63 74 20 64 65 6e 74 72 79 20 2a 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 49 52 43 | ct.dentry.*)))..#define.NCP_DIRC |
1e620 | 41 43 48 45 5f 53 54 41 52 54 09 28 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 20 2d 20 | ACHE_START.(NCP_DIRCACHE_SIZE.-. |
1e640 | 4e 43 50 5f 46 49 52 53 54 43 41 43 48 45 5f 53 49 5a 45 29 0a 0a 73 74 72 75 63 74 20 6e 63 70 | NCP_FIRSTCACHE_SIZE)..struct.ncp |
1e660 | 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 7b 0a 09 73 74 72 75 63 74 09 6e 63 70 5f 63 61 63 | _cache_control.{..struct.ncp_cac |
1e680 | 68 65 5f 68 65 61 64 09 09 68 65 61 64 3b 0a 09 73 74 72 75 63 74 09 70 61 67 65 09 09 09 2a 70 | he_head..head;..struct.page...*p |
1e6a0 | 61 67 65 3b 0a 09 75 6e 69 6f 6e 09 6e 63 70 5f 64 69 72 5f 63 61 63 68 65 09 09 2a 63 61 63 68 | age;..union.ncp_dir_cache..*cach |
1e6c0 | 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09 09 66 70 6f 73 2c 20 6f 66 73 3b 0a 09 | e;..unsigned.long...fpos,.ofs;.. |
1e6e0 | 69 6e 74 09 09 09 09 66 69 6c 6c 65 64 2c 20 76 61 6c 69 64 2c 20 69 64 78 3b 0a 7d 3b 0a 0a 23 | int....filled,.valid,.idx;.};..# |
1e700 | 65 6e 64 69 66 20 2f 2a 20 5f 4e 43 50 4c 49 42 5f 48 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 | endif./*._NCPLIB_H.*/........... |
1e720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e800 | 6e 63 70 66 73 2f 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 63 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncpsign_kernel.c.......... |
1e820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
1e880 | 30 30 30 37 32 32 31 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 33 33 35 00 20 30 00 00 00 | 0007221.13023323142.014335..0... |
1e8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e900 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
1e920 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
1e940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1e9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ea00 | 2f 2a 0a 20 2a 20 20 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 63 0a 20 2a 0a 20 2a 20 20 41 | /*..*..ncpsign_kernel.c..*..*..A |
1ea20 | 72 6e 65 20 64 65 20 42 72 75 69 6a 6e 20 28 61 72 6e 65 40 6b 6e 6f 77 61 72 65 2e 6e 6c 29 2c | rne.de.Bruijn.(arne@knoware.nl), |
1ea40 | 20 31 39 39 37 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 | .1997..*..*/...#ifdef.CONFIG_NCP |
1ea60 | 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e | FS_PACKET_SIGNING..#include.<lin |
1ea80 | 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 70 | ux/string.h>.#include.<linux/ncp |
1eaa0 | 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 62 69 74 6f 70 73 2e 68 3e 0a 23 69 | .h>.#include.<linux/bitops.h>.#i |
1eac0 | 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 73 | nclude."ncp_fs.h".#include."ncps |
1eae0 | 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 22 0a 0a 2f 2a 20 69 33 38 36 3a 20 33 32 2d 62 69 74 2c 20 | ign_kernel.h"../*.i386:.32-bit,. |
1eb00 | 6c 69 74 74 6c 65 20 65 6e 64 69 61 6e 2c 20 68 61 6e 64 6c 65 73 20 6d 69 73 2d 61 6c 69 67 6e | little.endian,.handles.mis-align |
1eb20 | 6d 65 6e 74 20 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 64 65 66 69 6e 65 20 | ment.*/.#ifdef.__i386__.#define. |
1eb40 | 47 45 54 5f 4c 45 33 32 28 70 29 20 28 2a 28 63 6f 6e 73 74 20 69 6e 74 20 2a 29 28 70 29 29 0a | GET_LE32(p).(*(const.int.*)(p)). |
1eb60 | 23 64 65 66 69 6e 65 20 50 55 54 5f 4c 45 33 32 28 70 2c 76 29 20 7b 20 2a 28 69 6e 74 20 2a 29 | #define.PUT_LE32(p,v).{.*(int.*) |
1eb80 | 28 70 29 3d 76 3b 20 7d 0a 23 65 6c 73 65 0a 2f 2a 20 66 72 6f 6d 20 69 6e 63 6c 75 64 65 2f 6e | (p)=v;.}.#else./*.from.include/n |
1eba0 | 63 70 6c 69 62 2e 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 42 56 41 4c 28 62 75 66 2c 70 6f 73 29 | cplib.h.*/.#define.BVAL(buf,pos) |
1ebc0 | 20 28 28 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 29 28 62 75 66 29 29 5b 70 6f 73 5d 29 0a 23 64 | .(((const.__u8.*)(buf))[pos]).#d |
1ebe0 | 65 66 69 6e 65 20 50 56 41 4c 28 62 75 66 2c 70 6f 73 29 20 28 28 75 6e 73 69 67 6e 65 64 29 42 | efine.PVAL(buf,pos).((unsigned)B |
1ec00 | 56 41 4c 28 62 75 66 2c 70 6f 73 29 29 0a 23 64 65 66 69 6e 65 20 42 53 45 54 28 62 75 66 2c 70 | VAL(buf,pos)).#define.BSET(buf,p |
1ec20 | 6f 73 2c 76 61 6c 29 20 28 28 28 5f 5f 75 38 20 2a 29 28 62 75 66 29 29 5b 70 6f 73 5d 20 3d 20 | os,val).(((__u8.*)(buf))[pos].=. |
1ec40 | 28 76 61 6c 29 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 5f 5f 75 31 36 0a 57 56 41 4c | (val))..static.inline.__u16.WVAL |
1ec60 | 5f 4c 48 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 29 0a 7b | _LH(const.__u8.*.buf,.int.pos).{ |
1ec80 | 0a 09 72 65 74 75 72 6e 20 50 56 41 4c 28 62 75 66 2c 20 70 6f 73 29 20 7c 20 50 56 41 4c 28 62 | ..return.PVAL(buf,.pos).|.PVAL(b |
1eca0 | 75 66 2c 20 70 6f 73 20 2b 20 31 29 20 3c 3c 20 38 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 | uf,.pos.+.1).<<.8;.}.static.inli |
1ecc0 | 6e 65 20 5f 5f 75 33 32 0a 44 56 41 4c 5f 4c 48 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 20 62 75 | ne.__u32.DVAL_LH(const.__u8.*.bu |
1ece0 | 66 2c 20 69 6e 74 20 70 6f 73 29 0a 7b 0a 09 72 65 74 75 72 6e 20 57 56 41 4c 5f 4c 48 28 62 75 | f,.int.pos).{..return.WVAL_LH(bu |
1ed00 | 66 2c 20 70 6f 73 29 20 7c 20 57 56 41 4c 5f 4c 48 28 62 75 66 2c 20 70 6f 73 20 2b 20 32 29 20 | f,.pos).|.WVAL_LH(buf,.pos.+.2). |
1ed20 | 3c 3c 20 31 36 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 57 53 45 54 | <<.16;.}.static.inline.void.WSET |
1ed40 | 5f 4c 48 28 5f 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 2c 20 5f 5f 75 31 36 20 76 | _LH(__u8.*.buf,.int.pos,.__u16.v |
1ed60 | 61 6c 29 0a 7b 0a 09 42 53 45 54 28 62 75 66 2c 20 70 6f 73 2c 20 76 61 6c 20 26 20 30 78 66 66 | al).{..BSET(buf,.pos,.val.&.0xff |
1ed80 | 29 3b 0a 09 42 53 45 54 28 62 75 66 2c 20 70 6f 73 20 2b 20 31 2c 20 76 61 6c 20 3e 3e 20 38 29 | );..BSET(buf,.pos.+.1,.val.>>.8) |
1eda0 | 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 44 53 45 54 5f 4c 48 28 5f | ;.}.static.inline.void.DSET_LH(_ |
1edc0 | 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 2c 20 5f 5f 75 33 32 20 76 61 6c 29 0a 7b | _u8.*.buf,.int.pos,.__u32.val).{ |
1ede0 | 0a 09 57 53 45 54 5f 4c 48 28 62 75 66 2c 20 70 6f 73 2c 20 76 61 6c 20 26 20 30 78 66 66 66 66 | ..WSET_LH(buf,.pos,.val.&.0xffff |
1ee00 | 29 3b 0a 09 57 53 45 54 5f 4c 48 28 62 75 66 2c 20 70 6f 73 20 2b 20 32 2c 20 76 61 6c 20 3e 3e | );..WSET_LH(buf,.pos.+.2,.val.>> |
1ee20 | 20 31 36 29 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 47 45 54 5f 4c 45 33 32 28 70 29 20 44 56 41 | .16);.}..#define.GET_LE32(p).DVA |
1ee40 | 4c 5f 4c 48 28 70 2c 30 29 0a 23 64 65 66 69 6e 65 20 50 55 54 5f 4c 45 33 32 28 70 2c 76 29 20 | L_LH(p,0).#define.PUT_LE32(p,v). |
1ee60 | 44 53 45 54 5f 4c 48 28 70 2c 30 2c 76 29 0a 23 65 6e 64 69 66 0a 0a 73 74 61 74 69 63 20 76 6f | DSET_LH(p,0,v).#endif..static.vo |
1ee80 | 69 64 20 6e 77 73 69 67 6e 28 63 68 61 72 20 2a 72 5f 64 61 74 61 31 2c 20 63 68 61 72 20 2a 72 | id.nwsign(char.*r_data1,.char.*r |
1eea0 | 5f 64 61 74 61 32 2c 20 63 68 61 72 20 2a 6f 75 74 64 61 74 61 29 20 7b 0a 20 69 6e 74 20 69 3b | _data2,.char.*outdata).{..int.i; |
1eec0 | 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 77 30 2c 77 31 2c 77 32 2c 77 33 3b 0a 20 73 74 61 | ..unsigned.int.w0,w1,w2,w3;..sta |
1eee0 | 74 69 63 20 69 6e 74 20 72 62 69 74 5b 34 5d 3d 7b 30 2c 20 32 2c 20 31 2c 20 33 7d 3b 0a 23 69 | tic.int.rbit[4]={0,.2,.1,.3};.#i |
1ef00 | 66 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 64 61 74 | fdef.__i386__..unsigned.int.*dat |
1ef20 | 61 32 3d 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 29 72 5f 64 61 74 61 32 3b 0a 23 65 6c 73 | a2=(unsigned.int.*)r_data2;.#els |
1ef40 | 65 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 61 74 61 32 5b 31 36 5d 3b 0a 20 66 6f 72 20 | e..unsigned.int.data2[16];..for. |
1ef60 | 28 69 3d 30 3b 69 3c 31 36 3b 69 2b 2b 29 0a 20 20 64 61 74 61 32 5b 69 5d 3d 47 45 54 5f 4c 45 | (i=0;i<16;i++)...data2[i]=GET_LE |
1ef80 | 33 32 28 72 5f 64 61 74 61 32 2b 28 69 3c 3c 32 29 29 3b 0a 23 65 6e 64 69 66 20 0a 20 77 30 3d | 32(r_data2+(i<<2));.#endif...w0= |
1efa0 | 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 29 3b 0a 20 77 31 3d 47 45 54 5f 4c 45 33 32 28 | GET_LE32(r_data1);..w1=GET_LE32( |
1efc0 | 72 5f 64 61 74 61 31 2b 34 29 3b 0a 20 77 32 3d 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 | r_data1+4);..w2=GET_LE32(r_data1 |
1efe0 | 2b 38 29 3b 0a 20 77 33 3d 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 2b 31 32 29 3b 0a 20 | +8);..w3=GET_LE32(r_data1+12);.. |
1f000 | 66 6f 72 20 28 69 3d 30 3b 69 3c 31 36 3b 69 2b 3d 34 29 20 7b 0a 20 20 77 30 3d 72 6f 6c 33 32 | for.(i=0;i<16;i+=4).{...w0=rol32 |
1f020 | 28 77 30 20 2b 20 28 28 77 31 20 26 20 77 32 29 20 7c 20 28 28 7e 77 31 29 20 26 20 77 33 29 29 | (w0.+.((w1.&.w2).|.((~w1).&.w3)) |
1f040 | 20 2b 20 64 61 74 61 32 5b 69 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 20 | .+.data2[i+0],3);...w3=rol32(w3. |
1f060 | 2b 20 28 28 77 30 20 26 20 77 31 29 20 7c 20 28 28 7e 77 30 29 20 26 20 77 32 29 29 20 2b 20 64 | +.((w0.&.w1).|.((~w0).&.w2)).+.d |
1f080 | 61 74 61 32 5b 69 2b 31 5d 2c 37 29 3b 0a 20 20 77 32 3d 72 6f 6c 33 32 28 77 32 20 2b 20 28 28 | ata2[i+1],7);...w2=rol32(w2.+.(( |
1f0a0 | 77 33 20 26 20 77 30 29 20 7c 20 28 28 7e 77 33 29 20 26 20 77 31 29 29 20 2b 20 64 61 74 61 32 | w3.&.w0).|.((~w3).&.w1)).+.data2 |
1f0c0 | 5b 69 2b 32 5d 2c 31 31 29 3b 0a 20 20 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 77 32 20 | [i+2],11);...w1=rol32(w1.+.((w2. |
1f0e0 | 26 20 77 33 29 20 7c 20 28 28 7e 77 32 29 20 26 20 77 30 29 29 20 2b 20 64 61 74 61 32 5b 69 2b | &.w3).|.((~w2).&.w0)).+.data2[i+ |
1f100 | 33 5d 2c 31 39 29 3b 0a 20 7d 0a 20 66 6f 72 20 28 69 3d 30 3b 69 3c 34 3b 69 2b 2b 29 20 7b 0a | 3],19);..}..for.(i=0;i<4;i++).{. |
1f120 | 20 20 77 30 3d 72 6f 6c 33 32 28 77 30 20 2b 20 28 28 28 77 32 20 7c 20 77 33 29 20 26 20 77 31 | ..w0=rol32(w0.+.(((w2.|.w3).&.w1 |
1f140 | 29 20 7c 20 28 77 32 20 26 20 77 33 29 29 20 2b 20 30 78 35 61 38 32 37 39 39 39 20 2b 20 64 61 | ).|.(w2.&.w3)).+.0x5a827999.+.da |
1f160 | 74 61 32 5b 69 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 20 2b 20 28 28 28 | ta2[i+0],3);...w3=rol32(w3.+.((( |
1f180 | 77 31 20 7c 20 77 32 29 20 26 20 77 30 29 20 7c 20 28 77 31 20 26 20 77 32 29 29 20 2b 20 30 78 | w1.|.w2).&.w0).|.(w1.&.w2)).+.0x |
1f1a0 | 35 61 38 32 37 39 39 39 20 2b 20 64 61 74 61 32 5b 69 2b 34 5d 2c 35 29 3b 0a 20 20 77 32 3d 72 | 5a827999.+.data2[i+4],5);...w2=r |
1f1c0 | 6f 6c 33 32 28 77 32 20 2b 20 28 28 28 77 30 20 7c 20 77 31 29 20 26 20 77 33 29 20 7c 20 28 77 | ol32(w2.+.(((w0.|.w1).&.w3).|.(w |
1f1e0 | 30 20 26 20 77 31 29 29 20 2b 20 30 78 35 61 38 32 37 39 39 39 20 2b 20 64 61 74 61 32 5b 69 2b | 0.&.w1)).+.0x5a827999.+.data2[i+ |
1f200 | 38 5d 2c 39 29 3b 0a 20 20 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 28 77 33 20 7c 20 77 | 8],9);...w1=rol32(w1.+.(((w3.|.w |
1f220 | 30 29 20 26 20 77 32 29 20 7c 20 28 77 33 20 26 20 77 30 29 29 20 2b 20 30 78 35 61 38 32 37 39 | 0).&.w2).|.(w3.&.w0)).+.0x5a8279 |
1f240 | 39 39 20 2b 20 64 61 74 61 32 5b 69 2b 31 32 5d 2c 31 33 29 3b 0a 20 7d 0a 20 66 6f 72 20 28 69 | 99.+.data2[i+12],13);..}..for.(i |
1f260 | 3d 30 3b 69 3c 34 3b 69 2b 2b 29 20 7b 0a 20 20 77 30 3d 72 6f 6c 33 32 28 77 30 20 2b 20 28 28 | =0;i<4;i++).{...w0=rol32(w0.+.(( |
1f280 | 77 31 20 5e 20 77 32 29 20 5e 20 77 33 29 20 2b 20 30 78 36 65 64 39 65 62 61 31 20 2b 20 64 61 | w1.^.w2).^.w3).+.0x6ed9eba1.+.da |
1f2a0 | 74 61 32 5b 72 62 69 74 5b 69 5d 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 | ta2[rbit[i]+0],3);...w3=rol32(w3 |
1f2c0 | 20 2b 20 28 28 77 30 20 5e 20 77 31 29 20 5e 20 77 32 29 20 2b 20 30 78 36 65 64 39 65 62 61 31 | .+.((w0.^.w1).^.w2).+.0x6ed9eba1 |
1f2e0 | 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 38 5d 2c 39 29 3b 0a 20 20 77 32 3d 72 6f 6c | .+.data2[rbit[i]+8],9);...w2=rol |
1f300 | 33 32 28 77 32 20 2b 20 28 28 77 33 20 5e 20 77 30 29 20 5e 20 77 31 29 20 2b 20 30 78 36 65 64 | 32(w2.+.((w3.^.w0).^.w1).+.0x6ed |
1f320 | 39 65 62 61 31 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 34 5d 2c 31 31 29 3b 0a 20 20 | 9eba1.+.data2[rbit[i]+4],11);... |
1f340 | 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 77 32 20 5e 20 77 33 29 20 5e 20 77 30 29 20 2b | w1=rol32(w1.+.((w2.^.w3).^.w0).+ |
1f360 | 20 30 78 36 65 64 39 65 62 61 31 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 31 32 5d 2c | .0x6ed9eba1.+.data2[rbit[i]+12], |
1f380 | 31 35 29 3b 0a 20 7d 0a 20 50 55 54 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2c 28 77 30 2b 47 45 | 15);..}..PUT_LE32(outdata,(w0+GE |
1f3a0 | 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a | T_LE32(r_data1)).&.0xffffffff);. |
1f3c0 | 20 50 55 54 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2b 34 2c 28 77 31 2b 47 45 54 5f 4c 45 33 32 | .PUT_LE32(outdata+4,(w1+GET_LE32 |
1f3e0 | 28 72 5f 64 61 74 61 31 2b 34 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 20 50 55 54 | (r_data1+4)).&.0xffffffff);..PUT |
1f400 | 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2b 38 2c 28 77 32 2b 47 45 54 5f 4c 45 33 32 28 72 5f 64 | _LE32(outdata+8,(w2+GET_LE32(r_d |
1f420 | 61 74 61 31 2b 38 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 20 50 55 54 5f 4c 45 33 | ata1+8)).&.0xffffffff);..PUT_LE3 |
1f440 | 32 28 6f 75 74 64 61 74 61 2b 31 32 2c 28 77 33 2b 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 | 2(outdata+12,(w3+GET_LE32(r_data |
1f460 | 31 2b 31 32 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 7d 0a 0a 2f 2a 20 4d 61 6b 65 | 1+12)).&.0xffffffff);.}../*.Make |
1f480 | 20 61 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61 63 | .a.signature.for.the.current.pac |
1f4a0 | 6b 65 74 20 61 6e 64 20 61 64 64 20 69 74 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 | ket.and.add.it.at.the.end.of.the |
1f4c0 | 20 2a 2f 0a 2f 2a 20 70 61 63 6b 65 74 2e 20 2a 2f 0a 76 6f 69 64 20 5f 5f 73 69 67 6e 5f 70 61 | .*/./*.packet..*/.void.__sign_pa |
1f4e0 | 63 6b 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 | cket(struct.ncp_server.*server,. |
1f500 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 63 6b 65 74 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c | const.char.*packet,.size_t.size, |
1f520 | 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 | .__u32.totalsize,.void.*sign_buf |
1f540 | 66 29 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 61 74 61 5b 36 34 5d 3b 0a 0a 09 | f).{..unsigned.char.data[64];... |
1f560 | 6d 65 6d 63 70 79 28 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 6f 6f 74 2c 20 | memcpy(data,.server->sign_root,. |
1f580 | 38 29 3b 0a 09 2a 28 5f 5f 75 33 32 2a 29 28 64 61 74 61 20 2b 20 38 29 20 3d 20 74 6f 74 61 6c | 8);..*(__u32*)(data.+.8).=.total |
1f5a0 | 73 69 7a 65 3b 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 35 32 29 20 7b 0a 09 09 6d 65 6d 63 70 79 | size;..if.(size.<.52).{...memcpy |
1f5c0 | 28 64 61 74 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 73 69 7a 65 29 3b 0a 09 09 6d 65 6d | (data.+.12,.packet,.size);...mem |
1f5e0 | 73 65 74 28 64 61 74 61 20 2b 20 31 32 20 2b 20 73 69 7a 65 2c 20 30 2c 20 35 32 20 2d 20 73 69 | set(data.+.12.+.size,.0,.52.-.si |
1f600 | 7a 65 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 63 70 79 28 64 61 74 61 20 2b 20 31 | ze);..}.else.{...memcpy(data.+.1 |
1f620 | 32 2c 20 70 61 63 6b 65 74 2c 20 35 32 29 3b 0a 09 7d 0a 09 6e 77 73 69 67 6e 28 73 65 72 76 65 | 2,.packet,.52);..}..nwsign(serve |
1f640 | 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e | r->sign_last,.data,.server->sign |
1f660 | 5f 6c 61 73 74 29 3b 0a 09 6d 65 6d 63 70 79 28 73 69 67 6e 5f 62 75 66 66 2c 20 73 65 72 76 65 | _last);..memcpy(sign_buff,.serve |
1f680 | 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 38 29 3b 0a 7d 0a 0a 69 6e 74 20 73 69 67 6e 5f 76 65 | r->sign_last,.8);.}..int.sign_ve |
1f6a0 | 72 69 66 79 5f 72 65 70 6c 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 | rify_reply(struct.ncp_server.*se |
1f6c0 | 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 63 6b 65 74 2c 20 73 69 7a 65 5f 74 | rver,.const.char.*packet,.size_t |
1f6e0 | 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 63 6f 6e 73 74 20 76 6f | .size,.__u32.totalsize,.const.vo |
1f700 | 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 | id.*sign_buff).{..unsigned.char. |
1f720 | 64 61 74 61 5b 36 34 5d 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 68 61 73 68 5b 31 36 | data[64];..unsigned.char.hash[16 |
1f740 | 5d 3b 0a 0a 09 6d 65 6d 63 70 79 28 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 | ];...memcpy(data,.server->sign_r |
1f760 | 6f 6f 74 2c 20 38 29 3b 0a 09 2a 28 5f 5f 75 33 32 2a 29 28 64 61 74 61 20 2b 20 38 29 20 3d 20 | oot,.8);..*(__u32*)(data.+.8).=. |
1f780 | 74 6f 74 61 6c 73 69 7a 65 3b 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 35 32 29 20 7b 0a 09 09 6d | totalsize;..if.(size.<.52).{...m |
1f7a0 | 65 6d 63 70 79 28 64 61 74 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 73 69 7a 65 29 3b 0a | emcpy(data.+.12,.packet,.size);. |
1f7c0 | 09 09 6d 65 6d 73 65 74 28 64 61 74 61 20 2b 20 31 32 20 2b 20 73 69 7a 65 2c 20 30 2c 20 35 32 | ..memset(data.+.12.+.size,.0,.52 |
1f7e0 | 20 2d 20 73 69 7a 65 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 63 70 79 28 64 61 74 | .-.size);..}.else.{...memcpy(dat |
1f800 | 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 35 32 29 3b 0a 09 7d 0a 09 6e 77 73 69 67 6e 28 | a.+.12,.packet,.52);..}..nwsign( |
1f820 | 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 64 61 74 61 2c 20 68 61 73 68 29 3b 0a | server->sign_last,.data,.hash);. |
1f840 | 09 72 65 74 75 72 6e 20 6d 65 6d 63 6d 70 28 73 69 67 6e 5f 62 75 66 66 2c 20 68 61 73 68 2c 20 | .return.memcmp(sign_buff,.hash,. |
1f860 | 38 29 3b 0a 7d 0a 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 | 8);.}..#endif./*.CONFIG_NCPFS_PA |
1f880 | 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | CKET_SIGNING.*/................. |
1f8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1f9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fa00 | 6e 63 70 66 73 2f 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 00 00 00 00 00 00 00 00 00 00 | ncpfs/ncpsign_kernel.h.......... |
1fa20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fa40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fa60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
1fa80 | 30 30 30 31 32 37 34 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 33 34 34 00 20 30 00 00 00 | 0001274.13023323142.014344..0... |
1faa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fb00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
1fb20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
1fb40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fb60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fb80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fbc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fbe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fc00 | 2f 2a 0a 20 2a 20 20 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 0a 20 2a 0a 20 2a 20 20 41 | /*..*..ncpsign_kernel.h..*..*..A |
1fc20 | 72 6e 65 20 64 65 20 42 72 75 69 6a 6e 20 28 61 72 6e 65 40 6b 6e 6f 77 61 72 65 2e 6e 6c 29 2c | rne.de.Bruijn.(arne@knoware.nl), |
1fc40 | 20 31 39 39 37 0a 20 2a 0a 20 2a 2f 0a 20 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 53 49 47 4e 5f | .1997..*..*/...#ifndef._NCPSIGN_ |
1fc60 | 4b 45 52 4e 45 4c 5f 48 0a 23 64 65 66 69 6e 65 20 5f 4e 43 50 53 49 47 4e 5f 4b 45 52 4e 45 4c | KERNEL_H.#define._NCPSIGN_KERNEL |
1fc80 | 5f 48 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 | _H..#ifdef.CONFIG_NCPFS_PACKET_S |
1fca0 | 49 47 4e 49 4e 47 0a 76 6f 69 64 20 5f 5f 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 74 72 75 63 74 | IGNING.void.__sign_packet(struct |
1fcc0 | 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 | .ncp_server.*server,.const.char. |
1fce0 | 2a 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 | *data,.size_t.size,.__u32.totals |
1fd00 | 69 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 3b 0a 69 6e 74 20 73 69 67 6e 5f | ize,.void.*sign_buff);.int.sign_ |
1fd20 | 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a | verify_reply(struct.ncp_server.* |
1fd40 | 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 61 74 61 2c 20 73 69 7a 65 5f 74 | server,.const.char.*data,.size_t |
1fd60 | 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 63 6f 6e 73 74 20 76 6f | .size,.__u32.totalsize,.const.vo |
1fd80 | 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 3b 0a 23 65 6e 64 69 66 0a 0a 73 74 61 74 69 63 20 69 | id.*sign_buff);.#endif..static.i |
1fda0 | 6e 6c 69 6e 65 20 73 69 7a 65 5f 74 20 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 74 72 75 63 74 20 | nline.size_t.sign_packet(struct. |
1fdc0 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a | ncp_server.*server,.const.char.* |
1fde0 | 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 | data,.size_t.size,.__u32.totalsi |
1fe00 | 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 20 7b 0a 23 69 66 64 65 66 20 43 4f | ze,.void.*sign_buff).{.#ifdef.CO |
1fe20 | 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 69 66 20 28 73 | NFIG_NCPFS_PACKET_SIGNING..if.(s |
1fe40 | 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a 09 09 5f 5f 73 69 67 6e 5f 70 | erver->sign_active).{...__sign_p |
1fe60 | 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 64 61 74 61 2c 20 73 69 7a 65 2c 20 74 6f 74 61 6c 73 | acket(server,.data,.size,.totals |
1fe80 | 69 7a 65 2c 20 73 69 67 6e 5f 62 75 66 66 29 3b 0a 09 09 72 65 74 75 72 6e 20 38 3b 0a 09 7d 0a | ize,.sign_buff);...return.8;..}. |
1fea0 | 23 65 6e 64 69 66 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a 00 00 00 00 | #endif..return.0;.}..#endif..... |
1fec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1fee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ff00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ff20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ff40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ff60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ff80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ffa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ffc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
1ffe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20000 | 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/sock.c.................... |
20020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
20080 | 30 30 35 34 37 35 36 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 33 31 32 00 20 30 00 00 00 | 0054756.13023323142.012312..0... |
200a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
200c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
200e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20100 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
20120 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
20140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
201a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
201c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
201e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
20200 | 2f 2a 0a 20 2a 20 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 0a 20 2a 0a | /*..*..linux/fs/ncpfs/sock.c..*. |
20220 | 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 32 2c 20 31 39 39 33 20 20 52 69 | .*..Copyright.(C).1992,.1993..Ri |
20240 | 63 6b 20 53 6c 61 64 6b 65 79 0a 20 2a 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 35 2c | ck.Sladkey..*..*..Modified.1995, |
20260 | 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 20 74 6f 20 62 65 20 75 | .1996.by.Volker.Lendecke.to.be.u |
20280 | 73 61 62 6c 65 20 66 6f 72 20 6e 63 70 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 | sable.for.ncp..*..Modified.1997. |
202a0 | 50 65 74 65 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 | Peter.Waltenberg,.Bill.Hawes,.Da |
202c0 | 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a | vid.Woodhouse.for.2.1.dcache..*. |
202e0 | 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f | .*/..#define.pr_fmt(fmt).KBUILD_ |
20300 | 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 | MODNAME.":.".fmt..#include.<linu |
20320 | 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e | x/time.h>.#include.<linux/errno. |
20340 | 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6f 63 6b 65 74 2e 68 3e 0a 23 69 6e | h>.#include.<linux/socket.h>.#in |
20360 | 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c | clude.<linux/fcntl.h>.#include.< |
20380 | 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 | linux/stat.h>.#include.<linux/st |
203a0 | 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e | ring.h>.#include.<asm/uaccess.h> |
203c0 | 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 | .#include.<linux/in.h>.#include. |
203e0 | 3c 6c 69 6e 75 78 2f 6e 65 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d | <linux/net.h>.#include.<linux/mm |
20400 | 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 65 74 64 65 76 69 63 65 2e 68 3e | .h>.#include.<linux/netdevice.h> |
20420 | 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 69 67 6e 61 6c 2e 68 3e 0a 23 69 6e 63 6c | .#include.<linux/signal.h>.#incl |
20440 | 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 | ude.<linux/slab.h>.#include.<net |
20460 | 2f 73 63 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 2f 73 6f 63 6b 2e 68 3e 0a 23 69 | /scm.h>.#include.<net/sock.h>.#i |
20480 | 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 70 78 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c | nclude.<linux/ipx.h>.#include.<l |
204a0 | 69 6e 75 78 2f 70 6f 6c 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 69 6c | inux/poll.h>.#include.<linux/fil |
204c0 | 65 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 23 69 6e 63 6c | e.h>..#include."ncp_fs.h"..#incl |
204e0 | 75 64 65 20 22 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 22 0a 0a 73 74 61 74 69 63 20 69 | ude."ncpsign_kernel.h"..static.i |
20500 | 6e 74 20 5f 72 65 63 76 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 76 6f | nt._recv(struct.socket.*sock,.vo |
20520 | 69 64 20 2a 62 75 66 2c 20 69 6e 74 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20 66 6c 61 67 | id.*buf,.int.size,.unsigned.flag |
20540 | 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 67 20 3d 20 7b 4e 55 4c 4c 2c | s).{..struct.msghdr.msg.=.{NULL, |
20560 | 20 7d 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 69 6f 76 20 3d 20 7b 62 75 66 2c 20 73 69 7a | .};..struct.kvec.iov.=.{buf,.siz |
20580 | 65 7d 3b 0a 09 72 65 74 75 72 6e 20 6b 65 72 6e 65 6c 5f 72 65 63 76 6d 73 67 28 73 6f 63 6b 2c | e};..return.kernel_recvmsg(sock, |
205a0 | 20 26 6d 73 67 2c 20 26 69 6f 76 2c 20 31 2c 20 73 69 7a 65 2c 20 66 6c 61 67 73 29 3b 0a 7d 0a | .&msg,.&iov,.1,.size,.flags);.}. |
205c0 | 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 64 6f 5f 73 65 6e 64 28 73 74 72 75 63 | .static.inline.int.do_send(struc |
205e0 | 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 73 74 72 75 63 74 20 6b 76 65 63 20 2a 76 65 63 | t.socket.*sock,.struct.kvec.*vec |
20600 | 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 0a 09 09 09 20 20 69 6e 74 20 6c 65 6e 2c 20 75 6e 73 69 67 | ,.int.count,......int.len,.unsig |
20620 | 6e 65 64 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 67 20 | ned.flags).{..struct.msghdr.msg. |
20640 | 3d 20 7b 20 2e 6d 73 67 5f 66 6c 61 67 73 20 3d 20 66 6c 61 67 73 20 7d 3b 0a 09 72 65 74 75 72 | =.{..msg_flags.=.flags.};..retur |
20660 | 6e 20 6b 65 72 6e 65 6c 5f 73 65 6e 64 6d 73 67 28 73 6f 63 6b 2c 20 26 6d 73 67 2c 20 76 65 63 | n.kernel_sendmsg(sock,.&msg,.vec |
20680 | 2c 20 63 6f 75 6e 74 2c 20 6c 65 6e 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 5f 73 65 | ,.count,.len);.}..static.int._se |
206a0 | 6e 64 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 63 6f 6e 73 74 20 76 6f | nd(struct.socket.*sock,.const.vo |
206c0 | 69 64 20 2a 62 75 66 66 2c 20 69 6e 74 20 6c 65 6e 29 0a 7b 0a 09 73 74 72 75 63 74 20 6b 76 65 | id.*buff,.int.len).{..struct.kve |
206e0 | 63 20 76 65 63 3b 0a 09 76 65 63 2e 69 6f 76 5f 62 61 73 65 20 3d 20 28 76 6f 69 64 20 2a 29 20 | c.vec;..vec.iov_base.=.(void.*). |
20700 | 62 75 66 66 3b 0a 09 76 65 63 2e 69 6f 76 5f 6c 65 6e 20 3d 20 6c 65 6e 3b 0a 09 72 65 74 75 72 | buff;..vec.iov_len.=.len;..retur |
20720 | 6e 20 64 6f 5f 73 65 6e 64 28 73 6f 63 6b 2c 20 26 76 65 63 2c 20 31 2c 20 6c 65 6e 2c 20 30 29 | n.do_send(sock,.&vec,.1,.len,.0) |
20740 | 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 7b 0a | ;.}..struct.ncp_request_reply.{. |
20760 | 09 73 74 72 75 63 74 20 6c 69 73 74 5f 68 65 61 64 20 72 65 71 3b 0a 09 77 61 69 74 5f 71 75 65 | .struct.list_head.req;..wait_que |
20780 | 75 65 5f 68 65 61 64 5f 74 20 77 71 3b 0a 09 61 74 6f 6d 69 63 5f 74 20 72 65 66 73 3b 0a 09 75 | ue_head_t.wq;..atomic_t.refs;..u |
207a0 | 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c 79 5f 62 75 66 3b 0a 09 73 69 7a 65 5f 74 | nsigned.char*.reply_buf;..size_t |
207c0 | 20 64 61 74 61 6c 65 6e 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 65 6e 75 6d 20 7b 20 52 | .datalen;..int.result;..enum.{.R |
207e0 | 51 5f 44 4f 4e 45 2c 20 52 51 5f 49 4e 50 52 4f 47 52 45 53 53 2c 20 52 51 5f 51 55 45 55 45 44 | Q_DONE,.RQ_INPROGRESS,.RQ_QUEUED |
20800 | 2c 20 52 51 5f 49 44 4c 45 2c 20 52 51 5f 41 42 41 4e 44 4f 4e 45 44 20 7d 20 73 74 61 74 75 73 | ,.RQ_IDLE,.RQ_ABANDONED.}.status |
20820 | 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 2a 20 74 78 5f 63 69 6f 76 3b 0a 09 73 69 7a 65 5f 74 | ;..struct.kvec*.tx_ciov;..size_t |
20840 | 20 74 78 5f 74 6f 74 61 6c 6c 65 6e 3b 0a 09 73 69 7a 65 5f 74 20 74 78 5f 69 6f 76 6c 65 6e 3b | .tx_totallen;..size_t.tx_iovlen; |
20860 | 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 74 78 5f 69 6f 76 5b 33 5d 3b 0a 09 75 5f 69 6e 74 31 | ..struct.kvec.tx_iov[3];..u_int1 |
20880 | 36 5f 74 20 74 78 5f 74 79 70 65 3b 0a 09 75 5f 69 6e 74 33 32 5f 74 20 73 69 67 6e 5b 36 5d 3b | 6_t.tx_type;..u_int32_t.sign[6]; |
208a0 | 0a 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | .};..static.inline.struct.ncp_re |
208c0 | 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 6e 63 70 5f 61 6c 6c 6f 63 5f 72 65 71 28 76 6f 69 64 29 | quest_reply*.ncp_alloc_req(void) |
208e0 | 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 | .{..struct.ncp_request_reply.*re |
20900 | 71 3b 0a 0a 09 72 65 71 20 3d 20 6b 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 73 74 72 75 63 74 | q;...req.=.kmalloc(sizeof(struct |
20920 | 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 29 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 | .ncp_request_reply),.GFP_KERNEL) |
20940 | 3b 0a 09 69 66 20 28 21 72 65 71 29 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 0a 09 69 6e | ;..if.(!req)...return.NULL;...in |
20960 | 69 74 5f 77 61 69 74 71 75 65 75 65 5f 68 65 61 64 28 26 72 65 71 2d 3e 77 71 29 3b 0a 09 61 74 | it_waitqueue_head(&req->wq);..at |
20980 | 6f 6d 69 63 5f 73 65 74 28 26 72 65 71 2d 3e 72 65 66 73 2c 20 28 31 29 29 3b 0a 09 72 65 71 2d | omic_set(&req->refs,.(1));..req- |
209a0 | 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 49 44 4c 45 3b 0a 0a 09 72 65 74 75 72 6e 20 72 65 71 3b | >status.=.RQ_IDLE;...return.req; |
209c0 | 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 72 65 71 5f 67 65 74 28 73 74 72 75 | .}..static.void.ncp_req_get(stru |
209e0 | 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 61 74 | ct.ncp_request_reply.*req).{..at |
20a00 | 6f 6d 69 63 5f 69 6e 63 28 26 72 65 71 2d 3e 72 65 66 73 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 | omic_inc(&req->refs);.}..static. |
20a20 | 76 6f 69 64 20 6e 63 70 5f 72 65 71 5f 70 75 74 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 | void.ncp_req_put(struct.ncp_requ |
20a40 | 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 69 66 20 28 61 74 6f 6d 69 63 5f 64 65 | est_reply.*req).{..if.(atomic_de |
20a60 | 63 5f 61 6e 64 5f 74 65 73 74 28 26 72 65 71 2d 3e 72 65 66 73 29 29 0a 09 09 6b 66 72 65 65 28 | c_and_test(&req->refs))...kfree( |
20a80 | 72 65 71 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 64 79 | req);.}..void.ncp_tcp_data_ready |
20aa0 | 28 73 74 72 75 63 74 20 73 6f 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f | (struct.sock.*sk).{..struct.ncp_ |
20ac0 | 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 | server.*server.=.sk->sk_user_dat |
20ae0 | 61 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 28 73 6b 29 3b 0a 09 73 63 | a;...server->data_ready(sk);..sc |
20b00 | 68 65 64 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 7d 0a | hedule_work(&server->rcv.tq);.}. |
20b20 | 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 74 72 75 63 | .void.ncp_tcp_error_report(struc |
20b40 | 74 20 73 6f 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 | t.sock.*sk).{..struct.ncp_server |
20b60 | 20 2a 73 65 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 61 3b 0a 09 0a 09 | .*server.=.sk->sk_user_data;.... |
20b80 | 73 65 72 76 65 72 2d 3e 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 6b 29 3b 0a 09 73 63 68 65 64 | server->error_report(sk);..sched |
20ba0 | 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 7d 0a 0a 76 6f | ule_work(&server->rcv.tq);.}..vo |
20bc0 | 69 64 20 6e 63 70 5f 74 63 70 5f 77 72 69 74 65 5f 73 70 61 63 65 28 73 74 72 75 63 74 20 73 6f | id.ncp_tcp_write_space(struct.so |
20be0 | 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 | ck.*sk).{..struct.ncp_server.*se |
20c00 | 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 61 3b 0a 09 0a 09 2f 2a 20 57 | rver.=.sk->sk_user_data;..../*.W |
20c20 | 65 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 61 6e 79 20 6c 6f 63 6b 69 6e 67 3a 20 77 65 20 66 69 | e.do.not.need.any.locking:.we.fi |
20c40 | 72 73 74 20 73 65 74 20 74 78 2e 63 72 65 71 2c 20 61 6e 64 20 74 68 65 6e 20 77 65 20 64 6f 20 | rst.set.tx.creq,.and.then.we.do. |
20c60 | 73 65 6e 64 6d 73 67 2c 0a 09 20 20 20 6e 6f 74 20 76 69 63 65 20 76 65 72 73 61 2e 2e 2e 20 2a | sendmsg,.....not.vice.versa....* |
20c80 | 2f 0a 09 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 65 28 73 6b 29 3b 0a 09 69 66 20 | /..server->write_space(sk);..if. |
20ca0 | 28 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 29 0a 09 09 73 63 68 65 64 75 6c 65 5f 77 6f 72 | (server->tx.creq)...schedule_wor |
20cc0 | 6b 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 74 71 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 | k(&server->tx.tq);.}..void.ncpdg |
20ce0 | 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 63 61 6c 6c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 76 | ram_timeout_call(unsigned.long.v |
20d00 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d | ).{..struct.ncp_server.*server.= |
20d20 | 20 28 76 6f 69 64 2a 29 76 3b 0a 09 0a 09 73 63 68 65 64 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 | .(void*)v;....schedule_work(&ser |
20d40 | 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 | ver->timeout_tq);.}..static.inli |
20d60 | 6e 65 20 76 6f 69 64 20 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 | ne.void.ncp_finish_request(struc |
20d80 | 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 | t.ncp_server.*server,.struct.ncp |
20da0 | 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 72 65 73 75 6c 74 29 | _request_reply.*req,.int.result) |
20dc0 | 0a 7b 0a 09 72 65 71 2d 3e 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c 74 3b 0a 09 69 66 20 28 72 | .{..req->result.=.result;..if.(r |
20de0 | 65 71 2d 3e 73 74 61 74 75 73 20 21 3d 20 52 51 5f 41 42 41 4e 44 4f 4e 45 44 29 0a 09 09 6d 65 | eq->status.!=.RQ_ABANDONED)...me |
20e00 | 6d 63 70 79 28 72 65 71 2d 3e 72 65 70 6c 79 5f 62 75 66 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 | mcpy(req->reply_buf,.server->rxb |
20e20 | 75 66 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 29 3b 0a 09 72 65 71 2d 3e 73 74 61 74 75 73 20 | uf,.req->datalen);..req->status. |
20e40 | 3d 20 52 51 5f 44 4f 4e 45 3b 0a 09 77 61 6b 65 5f 75 70 5f 61 6c 6c 28 26 72 65 71 2d 3e 77 71 | =.RQ_DONE;..wake_up_all(&req->wq |
20e60 | 29 3b 0a 09 6e 63 70 5f 72 65 71 5f 70 75 74 28 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 | );..ncp_req_put(req);.}..static. |
20e80 | 76 6f 69 64 20 5f 5f 61 62 6f 72 74 5f 6e 63 70 5f 63 6f 6e 6e 65 63 74 69 6f 6e 28 73 74 72 75 | void.__abort_ncp_connection(stru |
20ea0 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 63 74 | ct.ncp_server.*server).{..struct |
20ec0 | 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 6e 63 70 5f 69 | .ncp_request_reply.*req;...ncp_i |
20ee0 | 6e 76 61 6c 69 64 61 74 65 5f 63 6f 6e 6e 28 73 65 72 76 65 72 29 3b 0a 09 64 65 6c 5f 74 69 6d | nvalidate_conn(server);..del_tim |
20f00 | 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 09 77 68 69 6c 65 20 | er(&server->timeout_tm);..while. |
20f20 | 28 21 6c 69 73 74 5f 65 6d 70 74 79 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 | (!list_empty(&server->tx.request |
20f40 | 73 29 29 20 7b 0a 09 09 72 65 71 20 3d 20 6c 69 73 74 5f 65 6e 74 72 79 28 73 65 72 76 65 72 2d | s)).{...req.=.list_entry(server- |
20f60 | 3e 74 78 2e 72 65 71 75 65 73 74 73 2e 6e 65 78 74 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | >tx.requests.next,.struct.ncp_re |
20f80 | 71 75 65 73 74 5f 72 65 70 6c 79 2c 20 72 65 71 29 3b 0a 09 09 0a 09 09 6c 69 73 74 5f 64 65 6c | quest_reply,.req);......list_del |
20fa0 | 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 | _init(&req->req);...ncp_finish_r |
20fc0 | 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 7d 0a 09 72 | equest(server,.req,.-EIO);..}..r |
20fe0 | 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 69 66 20 28 72 65 71 29 | eq.=.server->rcv.creq;..if.(req) |
21000 | 20 7b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 | .{...server->rcv.creq.=.NULL;... |
21020 | 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 | ncp_finish_request(server,.req,. |
21040 | 2d 45 49 4f 29 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 4e 55 4c 4c 3b | -EIO);...server->rcv.ptr.=.NULL; |
21060 | 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 3b 0a 09 7d 0a 09 72 65 | ...server->rcv.state.=.0;..}..re |
21080 | 71 20 3d 20 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 3b 0a 09 69 66 20 28 72 65 71 29 20 7b | q.=.server->tx.creq;..if.(req).{ |
210a0 | 0a 09 09 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 6e 63 70 | ...server->tx.creq.=.NULL;...ncp |
210c0 | 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 | _finish_request(server,.req,.-EI |
210e0 | 4f 29 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 67 65 74 5f | O);..}.}..static.inline.int.get_ |
21100 | 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 | conn_number(struct.ncp_reply_hea |
21120 | 64 65 72 20 2a 72 70 29 0a 7b 0a 09 72 65 74 75 72 6e 20 72 70 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 | der.*rp).{..return.rp->conn_low. |
21140 | 7c 20 28 72 70 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 3c 3c 20 38 29 3b 0a 7d 0a 0a 73 74 61 74 69 | |.(rp->conn_high.<<.8);.}..stati |
21160 | 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 | c.inline.void.__ncp_abort_reques |
21180 | 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 | t(struct.ncp_server.*server,.str |
211a0 | 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 | uct.ncp_request_reply.*req,.int. |
211c0 | 65 72 72 29 0a 7b 0a 09 2f 2a 20 49 66 20 72 65 71 20 69 73 20 64 6f 6e 65 2c 20 77 65 20 67 6f | err).{../*.If.req.is.done,.we.go |
211e0 | 74 20 73 69 67 6e 61 6c 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 72 65 63 65 69 76 65 64 20 61 | t.signal,.but.we.also.received.a |
21200 | 6e 73 77 65 72 2e 2e 2e 20 2a 2f 0a 09 73 77 69 74 63 68 20 28 72 65 71 2d 3e 73 74 61 74 75 73 | nswer....*/..switch.(req->status |
21220 | 29 20 7b 0a 09 09 63 61 73 65 20 52 51 5f 49 44 4c 45 3a 0a 09 09 63 61 73 65 20 52 51 5f 44 4f | ).{...case.RQ_IDLE:...case.RQ_DO |
21240 | 4e 45 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 51 55 45 55 45 44 3a 0a | NE:....break;...case.RQ_QUEUED:. |
21260 | 09 09 09 6c 69 73 74 5f 64 65 6c 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 09 09 | ...list_del_init(&req->req);.... |
21280 | 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 | ncp_finish_request(server,.req,. |
212a0 | 65 72 72 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 49 4e 50 52 4f 47 | err);....break;...case.RQ_INPROG |
212c0 | 52 45 53 53 3a 0a 09 09 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 41 42 41 4e 44 4f | RESS:....req->status.=.RQ_ABANDO |
212e0 | 4e 45 44 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 41 42 41 4e 44 4f 4e | NED;....break;...case.RQ_ABANDON |
21300 | 45 44 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e | ED:....break;..}.}..static.inlin |
21320 | 65 20 76 6f 69 64 20 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 | e.void.ncp_abort_request(struct. |
21340 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 | ncp_server.*server,.struct.ncp_r |
21360 | 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 65 72 72 29 0a 7b 0a 09 6d | equest_reply.*req,.int.err).{..m |
21380 | 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 | utex_lock(&server->rcv.creq_mute |
213a0 | 78 29 3b 0a 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c | x);..__ncp_abort_request(server, |
213c0 | 20 72 65 71 2c 20 65 72 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 | .req,.err);..mutex_unlock(&serve |
213e0 | 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e | r->rcv.creq_mutex);.}..static.in |
21400 | 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 74 72 75 63 74 20 | line.void.__ncptcp_abort(struct. |
21420 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 5f 5f 61 62 6f 72 74 5f 6e | ncp_server.*server).{..__abort_n |
21440 | 63 70 5f 63 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 72 76 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 | cp_connection(server);.}..static |
21460 | 20 69 6e 74 20 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 | .int.ncpdgram_send(struct.socket |
21480 | 20 2a 73 6f 63 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 | .*sock,.struct.ncp_request_reply |
214a0 | 20 2a 72 65 71 29 0a 7b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 76 65 63 5b 33 5d 3b 0a 09 2f | .*req).{..struct.kvec.vec[3];../ |
214c0 | 2a 20 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 20 75 70 64 61 74 65 73 20 69 6f 76 20 70 6f 69 6e 74 | *.sock_sendmsg.updates.iov.point |
214e0 | 65 72 73 20 66 6f 72 20 75 73 20 3a 2d 28 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 76 65 63 2c 20 72 | ers.for.us.:-(.*/..memcpy(vec,.r |
21500 | 65 71 2d 3e 74 78 5f 63 69 6f 76 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 20 2a 20 73 69 | eq->tx_ciov,.req->tx_iovlen.*.si |
21520 | 7a 65 6f 66 28 76 65 63 5b 30 5d 29 29 3b 0a 09 72 65 74 75 72 6e 20 64 6f 5f 73 65 6e 64 28 73 | zeof(vec[0]));..return.do_send(s |
21540 | 6f 63 6b 2c 20 76 65 63 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 2c 0a 09 09 20 20 20 20 | ock,.vec,.req->tx_iovlen,....... |
21560 | 20 20 20 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 | ...req->tx_totallen,.MSG_DONTWAI |
21580 | 54 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 74 63 70 5f 74 72 79 5f | T);.}..static.void.__ncptcp_try_ |
215a0 | 73 65 6e 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a | send(struct.ncp_server.*server). |
215c0 | 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 71 3b | {..struct.ncp_request_reply.*rq; |
215e0 | 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 2a 69 6f 76 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 | ..struct.kvec.*iov;..struct.kvec |
21600 | 20 69 6f 76 63 5b 33 5d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 72 71 20 3d 20 73 65 | .iovc[3];..int.result;...rq.=.se |
21620 | 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 3b 0a 09 69 66 20 28 21 72 71 29 0a 09 09 72 65 74 75 72 | rver->tx.creq;..if.(!rq)...retur |
21640 | 6e 3b 0a 0a 09 2f 2a 20 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 20 75 70 64 61 74 65 73 20 69 6f 76 | n;.../*.sock_sendmsg.updates.iov |
21660 | 20 70 6f 69 6e 74 65 72 73 20 66 6f 72 20 75 73 20 3a 2d 28 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 | .pointers.for.us.:-(.*/..memcpy( |
21680 | 69 6f 76 63 2c 20 72 71 2d 3e 74 78 5f 63 69 6f 76 2c 20 72 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e | iovc,.rq->tx_ciov,.rq->tx_iovlen |
216a0 | 20 2a 20 73 69 7a 65 6f 66 28 69 6f 76 5b 30 5d 29 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 64 6f | .*.sizeof(iov[0]));..result.=.do |
216c0 | 5f 73 65 6e 64 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 69 6f 76 63 2c 20 72 71 | _send(server->ncp_sock,.iovc,.rq |
216e0 | 2d 3e 74 78 5f 69 6f 76 6c 65 6e 2c 0a 09 09 09 20 72 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e | ->tx_iovlen,.....rq->tx_totallen |
21700 | 2c 20 4d 53 47 5f 4e 4f 53 49 47 4e 41 4c 20 7c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a | ,.MSG_NOSIGNAL.|.MSG_DONTWAIT);. |
21720 | 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 2d 45 41 47 41 49 4e 29 0a 09 09 72 65 74 75 72 | ..if.(result.==.-EAGAIN)...retur |
21740 | 6e 3b 0a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 | n;...if.(result.<.0).{...pr_err( |
21760 | 22 74 63 70 3a 20 53 65 6e 64 20 66 61 69 6c 65 64 3a 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 | "tcp:.Send.failed:.%d\n",.result |
21780 | 29 3b 0a 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c | );...__ncp_abort_request(server, |
217a0 | 20 72 71 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 69 66 20 28 | .rq,.result);...return;..}..if.( |
217c0 | 72 65 73 75 6c 74 20 3e 3d 20 72 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 29 20 7b 0a 09 09 73 | result.>=.rq->tx_totallen).{...s |
217e0 | 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 72 71 3b 0a 09 09 73 65 72 76 65 72 2d 3e | erver->rcv.creq.=.rq;...server-> |
21800 | 74 78 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 72 71 | tx.creq.=.NULL;...return;..}..rq |
21820 | 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 69 6f 76 20 3d 20 | ->tx_totallen.-=.result;..iov.=. |
21840 | 72 71 2d 3e 74 78 5f 63 69 6f 76 3b 0a 09 77 68 69 6c 65 20 28 69 6f 76 2d 3e 69 6f 76 5f 6c 65 | rq->tx_ciov;..while.(iov->iov_le |
21860 | 6e 20 3c 3d 20 72 65 73 75 6c 74 29 20 7b 0a 09 09 72 65 73 75 6c 74 20 2d 3d 20 69 6f 76 2d 3e | n.<=.result).{...result.-=.iov-> |
21880 | 69 6f 76 5f 6c 65 6e 3b 0a 09 09 69 6f 76 2b 2b 3b 0a 09 09 72 71 2d 3e 74 78 5f 69 6f 76 6c 65 | iov_len;...iov++;...rq->tx_iovle |
218a0 | 6e 2d 2d 3b 0a 09 7d 0a 09 69 6f 76 2d 3e 69 6f 76 5f 62 61 73 65 20 2b 3d 20 72 65 73 75 6c 74 | n--;..}..iov->iov_base.+=.result |
218c0 | 3b 0a 09 69 6f 76 2d 3e 69 6f 76 5f 6c 65 6e 20 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 72 71 2d 3e | ;..iov->iov_len.-=.result;..rq-> |
218e0 | 74 78 5f 63 69 6f 76 20 3d 20 69 6f 76 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 | tx_ciov.=.iov;.}..static.inline. |
21900 | 76 6f 69 64 20 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f | void.ncp_init_header(struct.ncp_ |
21920 | 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 | server.*server,.struct.ncp_reque |
21940 | 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 | st_reply.*req,.struct.ncp_reques |
21960 | 74 5f 68 65 61 64 65 72 20 2a 68 29 0a 7b 0a 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 | t_header.*h).{..req->status.=.RQ |
21980 | 5f 49 4e 50 52 4f 47 52 45 53 53 3b 0a 09 68 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 3d 20 73 65 72 76 | _INPROGRESS;..h->conn_low.=.serv |
219a0 | 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 68 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 3d 20 | er->connection;..h->conn_high.=. |
219c0 | 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3e 3e 20 38 3b 0a 09 68 2d 3e 73 65 71 | server->connection.>>.8;..h->seq |
219e0 | 75 65 6e 63 65 20 3d 20 2b 2b 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 3b 0a 7d 0a 09 0a | uence.=.++server->sequence;.}... |
21a00 | 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 73 74 61 72 74 5f 72 65 71 75 65 | static.void.ncpdgram_start_reque |
21a20 | 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 | st(struct.ncp_server.*server,.st |
21a40 | 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 | ruct.ncp_request_reply.*req).{.. |
21a60 | 73 69 7a 65 5f 74 20 73 69 67 6e 6c 65 6e 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 | size_t.signlen;..struct.ncp_requ |
21a80 | 65 73 74 5f 68 65 61 64 65 72 2a 20 68 3b 0a 09 0a 09 72 65 71 2d 3e 74 78 5f 63 69 6f 76 20 3d | est_header*.h;....req->tx_ciov.= |
21aa0 | 20 72 65 71 2d 3e 74 78 5f 69 6f 76 20 2b 20 31 3b 0a 0a 09 68 20 3d 20 72 65 71 2d 3e 74 78 5f | .req->tx_iov.+.1;...h.=.req->tx_ |
21ac0 | 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 3b 0a 09 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 | iov[1].iov_base;..ncp_init_heade |
21ae0 | 72 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 68 29 3b 0a 09 73 69 67 6e 6c 65 6e 20 3d 20 73 69 | r(server,.req,.h);..signlen.=.si |
21b00 | 67 6e 5f 70 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d | gn_packet(server,.req->tx_iov[1] |
21b20 | 2e 69 6f 76 5f 62 61 73 65 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | .iov_base.+.sizeof(struct.ncp_re |
21b40 | 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2d 20 31 2c 20 0a 09 09 09 72 65 71 2d 3e 74 78 5f 69 | quest_header).-.1,.....req->tx_i |
21b60 | 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 | ov[1].iov_len.-.sizeof(struct.nc |
21b80 | 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 31 2c 0a 09 09 09 63 70 75 5f 74 6f | p_request_header).+.1,....cpu_to |
21ba0 | 5f 6c 65 33 32 28 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 29 2c 20 72 65 71 2d 3e 73 69 | _le32(req->tx_totallen),.req->si |
21bc0 | 67 6e 29 3b 0a 09 69 66 20 28 73 69 67 6e 6c 65 6e 29 20 7b 0a 09 09 72 65 71 2d 3e 74 78 5f 63 | gn);..if.(signlen).{...req->tx_c |
21be0 | 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 72 65 71 2d 3e 73 69 67 6e 3b 0a 09 09 72 | iov[1].iov_base.=.req->sign;...r |
21c00 | 65 71 2d 3e 74 78 5f 63 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e 6c 65 6e | eq->tx_ciov[1].iov_len.=.signlen |
21c20 | 3b 0a 09 09 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 20 2b 3d 20 31 3b 0a 09 09 72 65 71 2d 3e | ;...req->tx_iovlen.+=.1;...req-> |
21c40 | 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 3d 20 73 69 67 6e 6c 65 6e 3b 0a 09 7d 0a 09 73 65 72 76 | tx_totallen.+=.signlen;..}..serv |
21c60 | 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 72 65 71 3b 0a 09 73 65 72 76 65 72 2d 3e 74 69 6d | er->rcv.creq.=.req;..server->tim |
21c80 | 65 6f 75 74 5f 6c 61 73 74 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 3b 0a | eout_last.=.server->m.time_out;. |
21ca0 | 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 20 3d 20 73 65 72 76 65 | .server->timeout_retries.=.serve |
21cc0 | 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 3b 0a 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 | r->m.retry_count;..ncpdgram_send |
21ce0 | 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 72 65 71 29 3b 0a 09 6d 6f 64 5f 74 69 | (server->ncp_sock,.req);..mod_ti |
21d00 | 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 | mer(&server->timeout_tm,.jiffies |
21d20 | 20 2b 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 29 3b 0a 7d 0a 0a 23 64 65 66 69 | .+.server->m.time_out);.}..#defi |
21d40 | 6e 65 20 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 4d 41 47 49 43 09 28 30 78 34 34 36 44 36 34 35 | ne.NCP_TCP_XMIT_MAGIC.(0x446D645 |
21d60 | 34 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 56 45 52 53 49 4f 4e 09 | 4).#define.NCP_TCP_XMIT_VERSION. |
21d80 | 28 31 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 09 28 | (1).#define.NCP_TCP_RCVD_MAGIC.( |
21da0 | 30 78 37 34 34 45 36 33 35 30 29 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 74 63 70 5f | 0x744E6350)..static.void.ncptcp_ |
21dc0 | 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 | start_request(struct.ncp_server. |
21de0 | 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c | *server,.struct.ncp_request_repl |
21e00 | 79 20 2a 72 65 71 29 0a 7b 0a 09 73 69 7a 65 5f 74 20 73 69 67 6e 6c 65 6e 3b 0a 09 73 74 72 75 | y.*req).{..size_t.signlen;..stru |
21e20 | 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 2a 20 68 3b 0a 0a 09 72 65 71 2d | ct.ncp_request_header*.h;...req- |
21e40 | 3e 74 78 5f 63 69 6f 76 20 3d 20 72 65 71 2d 3e 74 78 5f 69 6f 76 3b 0a 09 68 20 3d 20 72 65 71 | >tx_ciov.=.req->tx_iov;..h.=.req |
21e60 | 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 3b 0a 09 6e 63 70 5f 69 6e 69 74 5f | ->tx_iov[1].iov_base;..ncp_init_ |
21e80 | 68 65 61 64 65 72 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 68 29 3b 0a 09 73 69 67 6e 6c 65 6e | header(server,.req,.h);..signlen |
21ea0 | 20 3d 20 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 72 65 71 2d 3e 74 78 5f 69 | .=.sign_packet(server,.req->tx_i |
21ec0 | 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e | ov[1].iov_base.+.sizeof(struct.n |
21ee0 | 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2d 20 31 2c 0a 09 09 09 72 65 71 2d 3e | cp_request_header).-.1,....req-> |
21f00 | 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 | tx_iov[1].iov_len.-.sizeof(struc |
21f20 | 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 31 2c 0a 09 09 09 63 70 | t.ncp_request_header).+.1,....cp |
21f40 | 75 5f 74 6f 5f 62 65 33 32 28 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 20 32 34 29 | u_to_be32(req->tx_totallen.+.24) |
21f60 | 2c 20 72 65 71 2d 3e 73 69 67 6e 20 2b 20 34 29 20 2b 20 31 36 3b 0a 0a 09 72 65 71 2d 3e 73 69 | ,.req->sign.+.4).+.16;...req->si |
21f80 | 67 6e 5b 30 5d 20 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 4d 41 47 49 43 | gn[0].=.htonl(NCP_TCP_XMIT_MAGIC |
21fa0 | 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 31 5d 20 3d 20 68 74 6f 6e 6c 28 72 65 71 2d 3e 74 78 | );..req->sign[1].=.htonl(req->tx |
21fc0 | 5f 74 6f 74 61 6c 6c 65 6e 20 2b 20 73 69 67 6e 6c 65 6e 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e | _totallen.+.signlen);..req->sign |
21fe0 | 5b 32 5d 20 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 56 45 52 53 49 4f 4e | [2].=.htonl(NCP_TCP_XMIT_VERSION |
22000 | 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 33 5d 20 3d 20 68 74 6f 6e 6c 28 72 65 71 2d 3e 64 61 | );..req->sign[3].=.htonl(req->da |
22020 | 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 30 5d 2e 69 6f 76 5f | talen.+.8);..req->tx_iov[0].iov_ |
22040 | 62 61 73 65 20 3d 20 72 65 71 2d 3e 73 69 67 6e 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 30 | base.=.req->sign;..req->tx_iov[0 |
22060 | 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e 6c 65 6e 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f | ].iov_len.=.signlen;..req->tx_io |
22080 | 76 6c 65 6e 20 2b 3d 20 31 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 3d 20 | vlen.+=.1;..req->tx_totallen.+=. |
220a0 | 73 69 67 6e 6c 65 6e 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 20 3d 20 72 65 71 | signlen;...server->tx.creq.=.req |
220c0 | 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 74 72 79 5f 73 65 6e 64 28 73 65 72 76 65 72 29 3b 0a 7d 0a | ;..__ncptcp_try_send(server);.}. |
220e0 | 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 73 74 61 72 74 5f | .static.inline.void.__ncp_start_ |
22100 | 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 | request(struct.ncp_server.*serve |
22120 | 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 | r,.struct.ncp_request_reply.*req |
22140 | 29 0a 7b 0a 09 2f 2a 20 77 65 20 63 6f 70 79 20 74 68 65 20 64 61 74 61 20 73 6f 20 74 68 61 74 | ).{../*.we.copy.the.data.so.that |
22160 | 20 77 65 20 64 6f 20 6e 6f 74 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 0a | .we.do.not.depend.on.the.caller. |
22180 | 09 20 20 20 73 74 61 79 69 6e 67 20 61 6c 69 76 65 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 73 65 72 | ....staying.alive.*/..memcpy(ser |
221a0 | 76 65 72 2d 3e 74 78 62 75 66 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 | ver->txbuf,.req->tx_iov[1].iov_b |
221c0 | 61 73 65 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 29 3b 0a 09 72 | ase,.req->tx_iov[1].iov_len);..r |
221e0 | 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 73 65 72 76 65 72 2d | eq->tx_iov[1].iov_base.=.server- |
22200 | 3e 74 78 62 75 66 3b 0a 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2d 3e | >txbuf;...if.(server->ncp_sock-> |
22220 | 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 0a 09 09 6e 63 70 74 63 70 5f 73 74 | type.==.SOCK_STREAM)...ncptcp_st |
22240 | 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 09 65 6c 73 65 0a | art_request(server,.req);..else. |
22260 | 09 09 6e 63 70 64 67 72 61 6d 5f 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c | ..ncpdgram_start_request(server, |
22280 | 20 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 61 64 64 5f 72 65 71 | .req);.}..static.int.ncp_add_req |
222a0 | 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 | uest(struct.ncp_server.*server,. |
222c0 | 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b | struct.ncp_request_reply.*req).{ |
222e0 | 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d | ..mutex_lock(&server->rcv.creq_m |
22300 | 75 74 65 78 29 3b 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 | utex);..if.(!ncp_conn_valid(serv |
22320 | 65 72 29 29 20 7b 0a 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 | er)).{...mutex_unlock(&server->r |
22340 | 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 53 | cv.creq_mutex);...pr_err("tcp:.S |
22360 | 65 72 76 65 72 20 64 69 65 64 5c 6e 22 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 | erver.died\n");...return.-EIO;.. |
22380 | 7d 0a 09 6e 63 70 5f 72 65 71 5f 67 65 74 28 72 65 71 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 | }..ncp_req_get(req);..if.(server |
223a0 | 2d 3e 74 78 2e 63 72 65 71 20 7c 7c 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 29 20 7b | ->tx.creq.||.server->rcv.creq).{ |
223c0 | 0a 09 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 51 55 45 55 45 44 3b 0a 09 09 6c 69 | ...req->status.=.RQ_QUEUED;...li |
223e0 | 73 74 5f 61 64 64 5f 74 61 69 6c 28 26 72 65 71 2d 3e 72 65 71 2c 20 26 73 65 72 76 65 72 2d 3e | st_add_tail(&req->req,.&server-> |
22400 | 74 78 2e 72 65 71 75 65 73 74 73 29 3b 0a 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 | tx.requests);...mutex_unlock(&se |
22420 | 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 72 65 74 75 72 6e 20 | rver->rcv.creq_mutex);...return. |
22440 | 30 3b 0a 09 7d 0a 09 5f 5f 6e 63 70 5f 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 | 0;..}..__ncp_start_request(serve |
22460 | 72 2c 20 72 65 71 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e | r,.req);..mutex_unlock(&server-> |
22480 | 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 | rcv.creq_mutex);..return.0;.}..s |
224a0 | 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 74 | tatic.void.__ncp_next_request(st |
224c0 | 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 | ruct.ncp_server.*server).{..stru |
224e0 | 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 73 65 72 | ct.ncp_request_reply.*req;...ser |
22500 | 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 69 66 20 28 6c 69 73 74 5f | ver->rcv.creq.=.NULL;..if.(list_ |
22520 | 65 6d 70 74 79 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 73 29 29 20 7b 0a 09 | empty(&server->tx.requests)).{.. |
22540 | 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 72 65 71 20 3d 20 6c 69 73 74 5f 65 6e 74 72 79 28 73 65 | .return;..}..req.=.list_entry(se |
22560 | 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 73 2e 6e 65 78 74 2c 20 73 74 72 75 63 74 20 6e | rver->tx.requests.next,.struct.n |
22580 | 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2c 20 72 65 71 29 3b 0a 09 6c 69 73 74 5f 64 65 | cp_request_reply,.req);..list_de |
225a0 | 6c 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 5f 5f 6e 63 70 5f 73 74 61 72 74 5f | l_init(&req->req);..__ncp_start_ |
225c0 | 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 | request(server,.req);.}..static. |
225e0 | 76 6f 69 64 20 69 6e 66 6f 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 | void.info_server(struct.ncp_serv |
22600 | 65 72 20 2a 73 65 72 76 65 72 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 69 64 2c 20 63 6f 6e | er.*server,.unsigned.int.id,.con |
22620 | 73 74 20 76 6f 69 64 20 2a 20 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 29 0a 7b 0a 09 69 | st.void.*.data,.size_t.len).{..i |
22640 | 66 20 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 20 7b 0a 09 09 73 74 72 75 63 74 | f.(server->info_sock).{...struct |
22660 | 20 6b 76 65 63 20 69 6f 76 5b 32 5d 3b 0a 09 09 5f 5f 62 65 33 32 20 68 64 72 5b 32 5d 3b 0a 09 | .kvec.iov[2];...__be32.hdr[2];.. |
22680 | 0a 09 09 68 64 72 5b 30 5d 20 3d 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 6c 65 6e 20 2b 20 38 29 | ...hdr[0].=.cpu_to_be32(len.+.8) |
226a0 | 3b 0a 09 09 68 64 72 5b 31 5d 20 3d 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 69 64 29 3b 0a 09 0a | ;...hdr[1].=.cpu_to_be32(id);... |
226c0 | 09 09 69 6f 76 5b 30 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 68 64 72 3b 0a 09 09 69 6f 76 5b 30 | ..iov[0].iov_base.=.hdr;...iov[0 |
226e0 | 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 38 3b 0a 09 09 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 | ].iov_len.=.8;...iov[1].iov_base |
22700 | 20 3d 20 28 76 6f 69 64 20 2a 29 20 64 61 74 61 3b 0a 09 09 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c | .=.(void.*).data;...iov[1].iov_l |
22720 | 65 6e 20 3d 20 6c 65 6e 3b 0a 0a 09 09 64 6f 5f 73 65 6e 64 28 73 65 72 76 65 72 2d 3e 69 6e 66 | en.=.len;....do_send(server->inf |
22740 | 6f 5f 73 6f 63 6b 2c 20 69 6f 76 2c 20 32 2c 20 6c 65 6e 20 2b 20 38 2c 20 4d 53 47 5f 4e 4f 53 | o_sock,.iov,.2,.len.+.8,.MSG_NOS |
22760 | 49 47 4e 41 4c 29 3b 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 72 63 76 5f | IGNAL);..}.}..void.ncpdgram_rcv_ |
22780 | 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b | proc(struct.work_struct.*work).{ |
227a0 | 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 | ..struct.ncp_server.*server.=... |
227c0 | 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 | container_of(work,.struct.ncp_se |
227e0 | 72 76 65 72 2c 20 72 63 76 2e 74 71 29 3b 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 2a 20 73 | rver,.rcv.tq);..struct.socket*.s |
22800 | 6f 63 6b 3b 0a 09 0a 09 73 6f 63 6b 20 3d 20 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 3b | ock;....sock.=.server->ncp_sock; |
22820 | 0a 09 0a 09 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 | ....while.(1).{...struct.ncp_rep |
22840 | 6c 79 5f 68 65 61 64 65 72 20 72 65 70 6c 79 3b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a | ly_header.reply;...int.result;.. |
22860 | 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 26 72 65 70 6c 79 2c 20 73 | ..result.=._recv(sock,.&reply,.s |
22880 | 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 50 45 45 4b 20 7c 20 4d 53 47 5f 44 4f 4e | izeof(reply),.MSG_PEEK.|.MSG_DON |
228a0 | 54 57 41 49 54 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 62 | TWAIT);...if.(result.<.0).{....b |
228c0 | 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 3d 20 73 69 7a 65 6f 66 | reak;...}...if.(result.>=.sizeof |
228e0 | 28 72 65 70 6c 79 29 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 | (reply)).{....struct.ncp_request |
22900 | 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 09 0a 09 09 09 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 | _reply.*req;......if.(reply.type |
22920 | 20 3d 3d 20 4e 43 50 5f 57 41 54 43 48 44 4f 47 29 20 7b 0a 09 09 09 09 75 6e 73 69 67 6e 65 64 | .==.NCP_WATCHDOG).{.....unsigned |
22940 | 20 63 68 61 72 20 62 75 66 5b 31 30 5d 3b 0a 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e | .char.buf[10];......if.(server-> |
22960 | 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 67 65 74 5f 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 26 72 | connection.!=.get_conn_number(&r |
22980 | 65 70 6c 79 29 29 20 7b 0a 09 09 09 09 09 67 6f 74 6f 20 64 72 6f 70 3b 0a 09 09 09 09 7d 0a 09 | eply)).{......goto.drop;.....}.. |
229a0 | 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 62 75 66 2c 20 73 69 7a | ...result.=._recv(sock,.buf,.siz |
229c0 | 65 6f 66 28 62 75 66 29 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 09 09 09 69 66 20 | eof(buf),.MSG_DONTWAIT);.....if. |
229e0 | 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 | (result.<.0).{......ncp_dbg(1,." |
22a00 | 72 65 63 76 20 66 61 69 6c 65 64 20 77 69 74 68 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b | recv.failed.with.%d\n",.result); |
22a20 | 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 72 65 | ......continue;.....}.....if.(re |
22a40 | 73 75 6c 74 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 74 6f | sult.<.10).{......ncp_dbg(1,."to |
22a60 | 6f 20 73 68 6f 72 74 20 28 25 75 29 20 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 5c 6e 22 2c | o.short.(%u).watchdog.packet\n", |
22a80 | 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 | .result);......continue;.....}.. |
22aa0 | 09 09 09 69 66 20 28 62 75 66 5b 39 5d 20 21 3d 20 27 3f 27 29 20 7b 0a 09 09 09 09 09 6e 63 70 | ...if.(buf[9].!=.'?').{......ncp |
22ac0 | 5f 64 62 67 28 31 2c 20 22 62 61 64 20 73 69 67 6e 61 74 75 72 65 20 28 25 30 32 58 29 20 69 6e | _dbg(1,."bad.signature.(%02X).in |
22ae0 | 20 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 5c 6e 22 2c 20 62 75 66 5b 39 5d 29 3b 0a 09 09 | .watchdog.packet\n",.buf[9]);... |
22b00 | 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 75 66 5b 39 5d 20 3d 20 | ...continue;.....}.....buf[9].=. |
22b20 | 27 59 27 3b 0a 09 09 09 09 5f 73 65 6e 64 28 73 6f 63 6b 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 | 'Y';....._send(sock,.buf,.sizeof |
22b40 | 28 62 75 66 29 29 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 09 69 66 | (buf));.....continue;....}....if |
22b60 | 20 28 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 50 4f 53 49 54 49 56 45 5f 41 43 4b | .(reply.type.!=.NCP_POSITIVE_ACK |
22b80 | 20 26 26 20 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 | .&&.reply.type.!=.NCP_REPLY).{.. |
22ba0 | 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 73 65 72 76 65 72 2d 3e | ...result.=._recv(sock,.server-> |
22bc0 | 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 2c 20 73 69 7a 65 6f 66 28 73 | unexpected_packet.data,.sizeof(s |
22be0 | 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 2c 20 | erver->unexpected_packet.data),. |
22c00 | 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 | MSG_DONTWAIT);.....if.(result.<. |
22c20 | 30 29 20 7b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e | 0).{......continue;.....}.....in |
22c40 | 66 6f 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 2c 20 30 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 | fo_server(server,.0,.server->une |
22c60 | 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 | xpected_packet.data,.result);... |
22c80 | 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 | ..continue;....}....mutex_lock(& |
22ca0 | 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 72 65 71 20 | server->rcv.creq_mutex);....req. |
22cc0 | 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 69 66 20 28 72 65 71 20 26 | =.server->rcv.creq;....if.(req.& |
22ce0 | 26 20 28 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 3d 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f | &.(req->tx_type.==.NCP_ALLOC_SLO |
22d00 | 54 5f 52 45 51 55 45 53 54 20 7c 7c 20 28 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 20 3d | T_REQUEST.||.(server->sequence.= |
22d20 | 3d 20 72 65 70 6c 79 2e 73 65 71 75 65 6e 63 65 20 26 26 20 0a 09 09 09 09 09 73 65 72 76 65 72 | =.reply.sequence.&&.......server |
22d40 | 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 67 65 74 5f 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 | ->connection.==.get_conn_number( |
22d60 | 26 72 65 70 6c 79 29 29 29 29 20 7b 0a 09 09 09 09 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 20 | &reply)))).{.....if.(reply.type. |
22d80 | 3d 3d 20 4e 43 50 5f 50 4f 53 49 54 49 56 45 5f 41 43 4b 29 20 7b 0a 09 09 09 09 09 73 65 72 76 | ==.NCP_POSITIVE_ACK).{......serv |
22da0 | 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e | er->timeout_retries.=.server->m. |
22dc0 | 72 65 74 72 79 5f 63 6f 75 6e 74 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 | retry_count;......server->timeou |
22de0 | 74 5f 6c 61 73 74 20 3d 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 | t_last.=.NCP_MAX_RPC_TIMEOUT;... |
22e00 | 09 09 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d | ...mod_timer(&server->timeout_tm |
22e20 | 2c 20 6a 69 66 66 69 65 73 20 2b 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 29 | ,.jiffies.+.NCP_MAX_RPC_TIMEOUT) |
22e40 | 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 20 3d 3d 20 4e | ;.....}.else.if.(reply.type.==.N |
22e60 | 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 | CP_REPLY).{......result.=._recv( |
22e80 | 73 6f 63 6b 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 | sock,.server->rxbuf,.req->datale |
22ea0 | 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f | n,.MSG_DONTWAIT);.#ifdef.CONFIG_ |
22ec0 | 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 09 09 09 09 69 66 20 28 72 65 | NCPFS_PACKET_SIGNING......if.(re |
22ee0 | 73 75 6c 74 20 3e 3d 20 30 20 26 26 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 | sult.>=.0.&&.server->sign_active |
22f00 | 20 26 26 20 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 5f 44 45 41 4c 4c 4f 43 5f | .&&.req->tx_type.!=.NCP_DEALLOC_ |
22f20 | 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b 0a 09 09 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 | SLOT_REQUEST).{.......if.(result |
22f40 | 20 3c 20 38 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f | .<.8.+.8).{........result.=.-EIO |
22f60 | 3b 0a 09 09 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 09 75 6e 73 69 67 6e 65 64 | ;.......}.else.{........unsigned |
22f80 | 20 69 6e 74 20 68 64 72 6c 3b 0a 09 09 09 09 09 09 09 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 | .int.hdrl;................result |
22fa0 | 20 2d 3d 20 38 3b 0a 09 09 09 09 09 09 09 68 64 72 6c 20 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 | .-=.8;........hdrl.=.sock->sk->s |
22fc0 | 6b 5f 66 61 6d 69 6c 79 20 3d 3d 20 41 46 5f 49 4e 45 54 20 3f 20 38 20 3a 20 36 3b 0a 09 09 09 | k_family.==.AF_INET.?.8.:.6;.... |
22fe0 | 09 09 09 09 69 66 20 28 73 69 67 6e 5f 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 65 72 76 65 72 | ....if.(sign_verify_reply(server |
23000 | 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 68 64 72 6c 2c 20 72 65 73 75 6c 74 20 2d | ,.server->rxbuf.+.hdrl,.result.- |
23020 | 20 68 64 72 6c 2c 20 63 70 75 5f 74 6f 5f 6c 65 33 32 28 72 65 73 75 6c 74 29 2c 20 73 65 72 76 | .hdrl,.cpu_to_le32(result),.serv |
23040 | 65 72 2d 3e 72 78 62 75 66 20 2b 20 72 65 73 75 6c 74 29 29 20 7b 0a 09 09 09 09 09 09 09 09 70 | er->rxbuf.+.result)).{.........p |
23060 | 72 5f 69 6e 66 6f 28 22 53 69 67 6e 61 74 75 72 65 20 76 69 6f 6c 61 74 69 6f 6e 5c 6e 22 29 3b | r_info("Signature.violation\n"); |
23080 | 0a 09 09 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 09 09 09 09 09 7d | .........result.=.-EIO;........} |
230a0 | 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 23 65 6e 64 69 66 0a 09 09 09 09 09 64 65 6c 5f | .......}......}.#endif......del_ |
230c0 | 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 09 09 09 09 | timer(&server->timeout_tm);..... |
230e0 | 20 20 20 20 20 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 | ......server->rcv.creq.=.NULL;.. |
23100 | 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 | ....ncp_finish_request(server,.r |
23120 | 65 71 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 | eq,.result);......__ncp_next_req |
23140 | 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 | uest(server);......mutex_unlock( |
23160 | 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 09 09 63 | &server->rcv.creq_mutex);......c |
23180 | 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 75 6e 6c | ontinue;.....}....}....mutex_unl |
231a0 | 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 | ock(&server->rcv.creq_mutex);... |
231c0 | 7d 0a 64 72 6f 70 3a 3b 09 09 0a 09 09 5f 72 65 63 76 28 73 6f 63 6b 2c 20 26 72 65 70 6c 79 2c | }.drop:;....._recv(sock,.&reply, |
231e0 | 20 73 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 | .sizeof(reply),.MSG_DONTWAIT);.. |
23200 | 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 | }.}..static.void.__ncpdgram_time |
23220 | 6f 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 | out_proc(struct.ncp_server.*serv |
23240 | 65 72 29 0a 7b 0a 09 2f 2a 20 49 66 20 74 69 6d 65 72 20 69 73 20 70 65 6e 64 69 6e 67 2c 20 77 | er).{../*.If.timer.is.pending,.w |
23260 | 65 20 61 72 65 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 6f 74 68 65 72 20 72 65 71 75 65 73 74 | e.are.processing.another.request |
23280 | 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 21 74 69 6d 65 72 5f 70 65 6e 64 69 6e 67 28 26 73 65 72 76 | ....*/..if.(!timer_pending(&serv |
232a0 | 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f | er->timeout_tm)).{...struct.ncp_ |
232c0 | 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 72 65 71 3b 0a 09 09 0a 09 09 72 65 71 20 3d 20 73 | request_reply*.req;......req.=.s |
232e0 | 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 69 66 20 28 72 65 71 29 20 7b 0a 09 09 | erver->rcv.creq;...if.(req).{... |
23300 | 09 69 6e 74 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d | .int.timeout;........if.(server- |
23320 | 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 4f 46 54 29 20 7b 0a 09 09 09 | >m.flags.&.NCP_MOUNT_SOFT).{.... |
23340 | 09 69 66 20 28 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 2d 2d 20 3d | .if.(server->timeout_retries--.= |
23360 | 3d 20 30 29 20 7b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 | =.0).{......__ncp_abort_request( |
23380 | 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 54 49 4d 45 44 4f 55 54 29 3b 0a 09 09 09 09 09 72 | server,.req,.-ETIMEDOUT);......r |
233a0 | 65 74 75 72 6e 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 2f 2a 20 49 67 6e 6f 72 65 20 65 | eturn;.....}....}..../*.Ignore.e |
233c0 | 72 72 6f 72 73 20 2a 2f 0a 09 09 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 28 73 65 72 76 65 72 | rrors.*/....ncpdgram_send(server |
233e0 | 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 72 65 71 29 3b 0a 09 09 09 74 69 6d 65 6f 75 74 20 3d 20 73 | ->ncp_sock,.req);....timeout.=.s |
23400 | 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 74 20 3c 3c 20 31 3b 0a 09 09 09 69 66 20 | erver->timeout_last.<<.1;....if. |
23420 | 28 74 69 6d 65 6f 75 74 20 3e 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 29 20 | (timeout.>.NCP_MAX_RPC_TIMEOUT). |
23440 | 7b 0a 09 09 09 09 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 | {.....timeout.=.NCP_MAX_RPC_TIME |
23460 | 4f 55 54 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 | OUT;....}....server->timeout_las |
23480 | 74 20 3d 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 | t.=.timeout;....mod_timer(&serve |
234a0 | 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 20 2b 20 74 69 6d 65 6f 75 74 | r->timeout_tm,.jiffies.+.timeout |
234c0 | 29 3b 0a 09 09 7d 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f | );...}..}.}..void.ncpdgram_timeo |
234e0 | 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b | ut_proc(struct.work_struct.*work |
23500 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d | ).{..struct.ncp_server.*server.= |
23520 | 0a 09 09 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 | ...container_of(work,.struct.ncp |
23540 | 5f 73 65 72 76 65 72 2c 20 74 69 6d 65 6f 75 74 5f 74 71 29 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 | _server,.timeout_tq);..mutex_loc |
23560 | 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e | k(&server->rcv.creq_mutex);..__n |
23580 | 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f 63 28 73 65 72 76 65 72 29 3b 0a 09 6d | cpdgram_timeout_proc(server);..m |
235a0 | 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 | utex_unlock(&server->rcv.creq_mu |
235c0 | 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 64 6f 5f 74 63 70 5f 72 63 76 28 73 | tex);.}..static.int.do_tcp_rcv(s |
235e0 | 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 76 6f 69 64 20 2a | truct.ncp_server.*server,.void.* |
23600 | 62 75 66 66 65 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c | buffer,.size_t.len).{..int.resul |
23620 | 74 3b 0a 09 0a 09 69 66 20 28 62 75 66 66 65 72 29 20 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 5f | t;....if.(buffer).{...result.=._ |
23640 | 72 65 63 76 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 62 75 66 66 65 72 2c 20 6c | recv(server->ncp_sock,.buffer,.l |
23660 | 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 73 | en,.MSG_DONTWAIT);..}.else.{...s |
23680 | 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 75 6d 6d 79 5b 31 30 32 34 5d 3b | tatic.unsigned.char.dummy[1024]; |
236a0 | 0a 09 09 09 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 20 | .......if.(len.>.sizeof(dummy)). |
236c0 | 7b 0a 09 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 3b 0a 09 09 7d 0a 09 09 | {....len.=.sizeof(dummy);...}... |
236e0 | 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c | result.=._recv(server->ncp_sock, |
23700 | 20 64 75 6d 6d 79 2c 20 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 7d 0a 09 | .dummy,.len,.MSG_DONTWAIT);..}.. |
23720 | 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c | if.(result.<.0).{...return.resul |
23740 | 74 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 6c 65 6e 29 20 7b 0a 09 09 70 72 5f | t;..}..if.(result.>.len).{...pr_ |
23760 | 65 72 72 28 22 74 63 70 3a 20 62 75 67 20 69 6e 20 72 65 63 76 6d 73 67 20 28 25 75 20 3e 20 25 | err("tcp:.bug.in.recvmsg.(%u.>.% |
23780 | 5a 75 29 5c 6e 22 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d | Zu)\n",.result,.len);...return.- |
237a0 | 45 49 4f 3b 09 09 09 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 09 0a 0a 73 | EIO;.....}..return.result;.}...s |
237c0 | 74 61 74 69 63 20 69 6e 74 20 5f 5f 6e 63 70 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 | tatic.int.__ncptcp_rcv_proc(stru |
237e0 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 2f 2a 20 57 65 20 | ct.ncp_server.*server).{../*.We. |
23800 | 68 61 76 65 20 74 6f 20 63 68 65 63 6b 20 74 68 65 20 72 65 73 75 6c 74 2c 20 73 6f 20 73 74 6f | have.to.check.the.result,.so.sto |
23820 | 72 65 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 68 65 61 64 65 72 20 2a 2f 0a 09 77 68 69 6c 65 | re.the.complete.header.*/..while |
23840 | 20 28 31 29 20 7b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 09 73 74 72 75 63 74 20 6e 63 | .(1).{...int.result;...struct.nc |
23860 | 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 09 09 69 6e 74 20 64 61 74 61 | p_request_reply.*req;...int.data |
23880 | 6c 65 6e 3b 0a 09 09 69 6e 74 20 74 79 70 65 3b 0a 0a 09 09 77 68 69 6c 65 20 28 73 65 72 76 65 | len;...int.type;....while.(serve |
238a0 | 72 2d 3e 72 63 76 2e 6c 65 6e 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 64 6f 5f 74 63 70 | r->rcv.len).{....result.=.do_tcp |
238c0 | 5f 72 63 76 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 2c 20 73 65 | _rcv(server,.server->rcv.ptr,.se |
238e0 | 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d | rver->rcv.len);....if.(result.== |
23900 | 20 2d 45 41 47 41 49 4e 29 20 7b 0a 09 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 09 7d 0a 09 | .-EAGAIN).{.....return.0;....}.. |
23920 | 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 3d 20 30 29 20 7b 0a 09 09 09 09 72 65 71 20 3d 20 73 | ..if.(result.<=.0).{.....req.=.s |
23940 | 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 72 65 71 29 20 7b 0a | erver->rcv.creq;.....if.(req).{. |
23960 | 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c | .....__ncp_abort_request(server, |
23980 | 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 5f | .req,.-EIO);.....}.else.{......_ |
239a0 | 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 7d 0a 09 09 09 | _ncptcp_abort(server);.....}.... |
239c0 | 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 | .if.(result.<.0).{......pr_err(" |
239e0 | 74 63 70 3a 20 65 72 72 6f 72 20 69 6e 20 72 65 63 76 6d 73 67 3a 20 25 64 5c 6e 22 2c 20 72 65 | tcp:.error.in.recvmsg:.%d\n",.re |
23a00 | 73 75 6c 74 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 | sult);.....}.else.{......ncp_dbg |
23a20 | 28 31 2c 20 22 74 63 70 3a 20 45 4f 46 5c 6e 22 29 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 74 | (1,."tcp:.EOF\n");.....}.....ret |
23a40 | 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 7d 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 72 63 | urn.-EIO;....}....if.(server->rc |
23a60 | 76 2e 70 74 72 29 20 7b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 2b 3d 20 | v.ptr).{.....server->rcv.ptr.+=. |
23a80 | 72 65 73 75 6c 74 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 20 | result;....}....server->rcv.len. |
23aa0 | 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 09 09 73 77 69 74 63 68 20 28 73 65 72 76 65 72 2d | -=.result;...}...switch.(server- |
23ac0 | 3e 72 63 76 2e 73 74 61 74 65 29 20 7b 0a 09 09 09 63 61 73 65 20 30 3a 0a 09 09 09 09 69 66 20 | >rcv.state).{....case.0:.....if. |
23ae0 | 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6d 61 67 69 63 20 21 3d 20 68 74 6f 6e 6c 28 | (server->rcv.buf.magic.!=.htonl( |
23b00 | 4e 43 50 5f 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 29 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 | NCP_TCP_RCVD_MAGIC)).{......pr_e |
23b20 | 72 72 28 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 74 79 70 65 20 25 | rr("tcp:.Unexpected.reply.type.% |
23b40 | 30 38 58 5c 6e 22 2c 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6d 61 | 08X\n",.ntohl(server->rcv.buf.ma |
23b60 | 67 69 63 29 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 | gic));......__ncptcp_abort(serve |
23b80 | 72 29 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 7d 0a 09 09 09 09 | r);......return.-EIO;.....}..... |
23ba0 | 64 61 74 61 6c 65 6e 20 3d 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e | datalen.=.ntohl(server->rcv.buf. |
23bc0 | 6c 65 6e 29 20 26 20 30 78 30 46 46 46 46 46 46 46 3b 0a 09 09 09 09 69 66 20 28 64 61 74 61 6c | len).&.0x0FFFFFFF;.....if.(datal |
23be0 | 65 6e 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 55 6e 65 | en.<.10).{......pr_err("tcp:.Une |
23c00 | 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 64 5c 6e 22 2c 20 64 61 74 61 6c 65 6e | xpected.reply.len.%d\n",.datalen |
23c20 | 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a | );......__ncptcp_abort(server);. |
23c40 | 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 7d 0a 23 69 66 64 65 66 20 43 | .....return.-EIO;.....}.#ifdef.C |
23c60 | 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 09 | ONFIG_NCPFS_PACKET_SIGNING...... |
23c80 | 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a 09 09 | ...if.(server->sign_active).{... |
23ca0 | 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 3c 20 31 38 29 20 7b 0a 09 09 09 09 09 09 70 72 5f | ...if.(datalen.<.18).{.......pr_ |
23cc0 | 65 72 72 28 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 | err("tcp:.Unexpected.reply.len.% |
23ce0 | 64 5c 6e 22 2c 20 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 | d\n",.datalen);.......__ncptcp_a |
23d00 | 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b | bort(server);.......return.-EIO; |
23d20 | 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6c 65 6e | ......}......server->rcv.buf.len |
23d40 | 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 | .=.datalen.-.8;......server->rcv |
23d60 | 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 72 76 65 72 2d 3e | .ptr.=.(unsigned.char*)&server-> |
23d80 | 72 63 76 2e 62 75 66 2e 70 31 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e | rcv.buf.p1;......server->rcv.len |
23da0 | 20 3d 20 38 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 34 | .=.8;......server->rcv.state.=.4 |
23dc0 | 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 23 65 6e 64 69 66 09 09 09 09 0a 09 | ;......break;.....}.#endif...... |
23de0 | 09 09 09 74 79 70 65 20 3d 20 6e 74 6f 68 73 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e | ...type.=.ntohs(server->rcv.buf. |
23e00 | 74 79 70 65 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 | type);.#ifdef.CONFIG_NCPFS_PACKE |
23e20 | 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 63 6f 6e 74 3a 3b 09 09 09 09 0a 23 65 6e 64 69 66 0a | T_SIGNING.....cont:;.....#endif. |
23e40 | 09 09 09 09 69 66 20 28 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 09 09 | ....if.(type.!=.NCP_REPLY).{.... |
23e60 | 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 2d 20 38 20 3c 3d 20 73 69 7a 65 6f 66 28 73 65 72 76 | ..if.(datalen.-.8.<=.sizeof(serv |
23e80 | 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 29 20 7b 0a 09 | er->unexpected_packet.data)).{.. |
23ea0 | 09 09 09 09 09 2a 28 5f 5f 75 31 36 2a 29 28 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 | .....*(__u16*)(server->unexpecte |
23ec0 | 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 20 3d 20 68 74 6f 6e 73 28 74 79 70 65 29 3b 0a 09 09 | d_packet.data).=.htons(type);... |
23ee0 | 09 09 09 09 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 6c 65 | ....server->unexpected_packet.le |
23f00 | 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e | n.=.datalen.-.8;........server-> |
23f20 | 72 63 76 2e 73 74 61 74 65 20 3d 20 35 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 | rcv.state.=.5;.......server->rcv |
23f40 | 2e 70 74 72 20 3d 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 | .ptr.=.server->unexpected_packet |
23f60 | 2e 64 61 74 61 20 2b 20 32 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e | .data.+.2;.......server->rcv.len |
23f80 | 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 | .=.datalen.-.10;.......break;... |
23fa0 | 09 09 09 7d 09 09 09 09 09 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 74 63 70 3a 20 | ...}...........ncp_dbg(1,."tcp:. |
23fc0 | 55 6e 65 78 70 65 63 74 65 64 20 4e 43 50 20 74 79 70 65 20 25 30 32 58 5c 6e 22 2c 20 74 79 70 | Unexpected.NCP.type.%02X\n",.typ |
23fe0 | 65 29 3b 0a 73 6b 69 70 64 61 74 61 32 3a 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 | e);.skipdata2:;......server->rcv |
24000 | 2e 73 74 61 74 65 20 3d 20 32 3b 0a 73 6b 69 70 64 61 74 61 3a 3b 0a 09 09 09 09 09 73 65 72 76 | .state.=.2;.skipdata:;......serv |
24020 | 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d | er->rcv.ptr.=.NULL;......server- |
24040 | 3e 72 63 76 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 09 62 72 | >rcv.len.=.datalen.-.10;......br |
24060 | 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 | eak;.....}.....req.=.server->rcv |
24080 | 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 21 72 65 71 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f | .creq;.....if.(!req).{......ncp_ |
240a0 | 64 62 67 28 31 2c 20 22 52 65 70 6c 79 20 77 69 74 68 6f 75 74 20 61 70 70 72 6f 70 72 69 61 74 | dbg(1,."Reply.without.appropriat |
240c0 | 65 20 72 65 71 75 65 73 74 5c 6e 22 29 3b 0a 09 09 09 09 09 67 6f 74 6f 20 73 6b 69 70 64 61 74 | e.request\n");......goto.skipdat |
240e0 | 61 32 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 3e 20 72 65 71 2d | a2;.....}.....if.(datalen.>.req- |
24100 | 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 | >datalen.+.8).{......pr_err("tcp |
24120 | 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 64 20 28 65 78 70 65 63 | :.Unexpected.reply.len.%d.(expec |
24140 | 74 65 64 20 61 74 20 6d 6f 73 74 20 25 5a 64 29 5c 6e 22 2c 20 64 61 74 61 6c 65 6e 2c 20 72 65 | ted.at.most.%Zd)\n",.datalen,.re |
24160 | 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 | q->datalen.+.8);......server->rc |
24180 | 76 2e 73 74 61 74 65 20 3d 20 33 3b 0a 09 09 09 09 09 67 6f 74 6f 20 73 6b 69 70 64 61 74 61 3b | v.state.=.3;......goto.skipdata; |
241a0 | 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 3d 20 64 61 74 61 6c 65 | .....}.....req->datalen.=.datale |
241c0 | 6e 20 2d 20 38 3b 0a 09 09 09 09 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 | n.-.8;.....((struct.ncp_reply_he |
241e0 | 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 74 79 70 65 20 3d 20 4e 43 50 | ader*)server->rxbuf)->type.=.NCP |
24200 | 5f 52 45 50 4c 59 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 73 65 | _REPLY;.....server->rcv.ptr.=.se |
24220 | 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 32 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 | rver->rxbuf.+.2;.....server->rcv |
24240 | 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 73 65 72 76 65 72 2d | .len.=.datalen.-.10;.....server- |
24260 | 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 31 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 23 69 66 64 65 | >rcv.state.=.1;.....break;.#ifde |
24280 | 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 | f.CONFIG_NCPFS_PACKET_SIGNING... |
242a0 | 09 0a 09 09 09 63 61 73 65 20 34 3a 0a 09 09 09 09 64 61 74 61 6c 65 6e 20 3d 20 73 65 72 76 65 | .....case.4:.....datalen.=.serve |
242c0 | 72 2d 3e 72 63 76 2e 62 75 66 2e 6c 65 6e 3b 0a 09 09 09 09 74 79 70 65 20 3d 20 6e 74 6f 68 73 | r->rcv.buf.len;.....type.=.ntohs |
242e0 | 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 74 79 70 65 32 29 3b 0a 09 09 09 09 67 6f 74 | (server->rcv.buf.type2);.....got |
24300 | 6f 20 63 6f 6e 74 3b 0a 23 65 6e 64 69 66 0a 09 09 09 63 61 73 65 20 31 3a 0a 09 09 09 09 72 65 | o.cont;.#endif....case.1:.....re |
24320 | 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 72 65 | q.=.server->rcv.creq;.....if.(re |
24340 | 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 | q->tx_type.!=.NCP_ALLOC_SLOT_REQ |
24360 | 55 45 53 54 29 20 7b 0a 09 09 09 09 09 69 66 20 28 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | UEST).{......if.(((struct.ncp_re |
24380 | 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 73 65 71 75 | ply_header*)server->rxbuf)->sequ |
243a0 | 65 6e 63 65 20 21 3d 20 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 29 20 7b 0a 09 09 09 09 | ence.!=.server->sequence).{..... |
243c0 | 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 42 61 64 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 | ..pr_err("tcp:.Bad.sequence.numb |
243e0 | 65 72 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 | er\n");.......__ncp_abort_reques |
24400 | 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 | t(server,.req,.-EIO);.......retu |
24420 | 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 69 66 20 28 28 28 28 73 74 72 75 | rn.-EIO;......}......if.((((stru |
24440 | 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 | ct.ncp_reply_header*)server->rxb |
24460 | 75 66 29 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 7c 20 28 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | uf)->conn_low.|.(((struct.ncp_re |
24480 | 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 63 6f 6e 6e | ply_header*)server->rxbuf)->conn |
244a0 | 5f 68 69 67 68 20 3c 3c 20 38 29 29 20 21 3d 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 | _high.<<.8)).!=.server->connecti |
244c0 | 6f 6e 29 20 7b 0a 09 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 43 6f 6e 6e 65 63 74 | on).{.......pr_err("tcp:.Connect |
244e0 | 69 6f 6e 20 6e 75 6d 62 65 72 20 6d 69 73 6d 61 74 63 68 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f | ion.number.mismatch\n");......._ |
24500 | 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 | _ncp_abort_request(server,.req,. |
24520 | 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d | -EIO);.......return.-EIO;......} |
24540 | 0a 09 09 09 09 7d 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 | .....}.#ifdef.CONFIG_NCPFS_PACKE |
24560 | 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 | T_SIGNING.........if.(server->si |
24580 | 67 6e 5f 61 63 74 69 76 65 20 26 26 20 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 | gn_active.&&.req->tx_type.!=.NCP |
245a0 | 5f 44 45 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b 0a 09 09 09 09 09 69 66 | _DEALLOC_SLOT_REQUEST).{......if |
245c0 | 20 28 73 69 67 6e 5f 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 65 72 76 65 72 2c 20 73 65 72 76 | .(sign_verify_reply(server,.serv |
245e0 | 65 72 2d 3e 72 78 62 75 66 20 2b 20 36 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2d 20 36 2c | er->rxbuf.+.6,.req->datalen.-.6, |
24600 | 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 31 36 29 2c | .cpu_to_be32(req->datalen.+.16), |
24620 | 20 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 74 79 70 65 29 29 20 7b 0a 09 09 09 09 09 | .&server->rcv.buf.type)).{...... |
24640 | 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 53 69 67 6e 61 74 75 72 65 20 76 69 6f 6c 61 74 69 6f | .pr_err("tcp:.Signature.violatio |
24660 | 6e 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 | n\n");.......__ncp_abort_request |
24680 | 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 | (server,.req,.-EIO);.......retur |
246a0 | 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 23 65 6e 64 69 66 09 09 09 09 0a | n.-EIO;......}.....}.#endif..... |
246c0 | 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 | ....ncp_finish_request(server,.r |
246e0 | 65 71 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 6e 65 78 74 72 65 71 3a 3b 0a | eq,.req->datalen);....nextreq:;. |
24700 | 09 09 09 09 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a | ....__ncp_next_request(server);. |
24720 | 09 09 09 63 61 73 65 20 32 3a 0a 09 09 09 6e 65 78 74 3a 3b 0a 09 09 09 09 73 65 72 76 65 72 2d | ...case.2:....next:;.....server- |
24740 | 3e 72 63 76 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 72 76 | >rcv.ptr.=.(unsigned.char*)&serv |
24760 | 65 72 2d 3e 72 63 76 2e 62 75 66 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e | er->rcv.buf;.....server->rcv.len |
24780 | 20 3d 20 31 30 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 | .=.10;.....server->rcv.state.=.0 |
247a0 | 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 33 3a 0a 09 09 09 09 6e 63 70 5f | ;.....break;....case.3:.....ncp_ |
247c0 | 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 | finish_request(server,.server->r |
247e0 | 63 76 2e 63 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 67 6f 74 6f 20 6e 65 78 74 72 65 71 | cv.creq,.-EIO);.....goto.nextreq |
24800 | 3b 0a 09 09 09 63 61 73 65 20 35 3a 0a 09 09 09 09 69 6e 66 6f 5f 73 65 72 76 65 72 28 73 65 72 | ;....case.5:.....info_server(ser |
24820 | 76 65 72 2c 20 30 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 | ver,.0,.server->unexpected_packe |
24840 | 74 2e 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 | t.data,.server->unexpected_packe |
24860 | 74 2e 6c 65 6e 29 3b 0a 09 09 09 09 67 6f 74 6f 20 6e 65 78 74 3b 0a 09 09 7d 0a 09 7d 0a 7d 0a | t.len);.....goto.next;...}..}.}. |
24880 | 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f | .void.ncp_tcp_rcv_proc(struct.wo |
248a0 | 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 | rk_struct.*work).{..struct.ncp_s |
248c0 | 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 | erver.*server.=...container_of(w |
248e0 | 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 72 63 76 2e 74 71 29 3b | ork,.struct.ncp_server,.rcv.tq); |
24900 | 0a 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f | ...mutex_lock(&server->rcv.creq_ |
24920 | 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 65 72 76 65 | mutex);..__ncptcp_rcv_proc(serve |
24940 | 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 | r);..mutex_unlock(&server->rcv.c |
24960 | 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 74 78 5f 70 | req_mutex);.}..void.ncp_tcp_tx_p |
24980 | 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b 0a | roc(struct.work_struct.*work).{. |
249a0 | 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 63 | .struct.ncp_server.*server.=...c |
249c0 | 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 | ontainer_of(work,.struct.ncp_ser |
249e0 | 76 65 72 2c 20 74 78 2e 74 71 29 3b 0a 09 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 | ver,.tx.tq);....mutex_lock(&serv |
24a00 | 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 74 | er->rcv.creq_mutex);..__ncptcp_t |
24a20 | 72 79 5f 73 65 6e 64 28 73 65 72 76 65 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 | ry_send(server);..mutex_unlock(& |
24a40 | 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 | server->rcv.creq_mutex);.}..stat |
24a60 | 69 63 20 69 6e 74 20 64 6f 5f 6e 63 70 5f 72 70 63 5f 63 61 6c 6c 28 73 74 72 75 63 74 20 6e 63 | ic.int.do_ncp_rpc_call(struct.nc |
24a80 | 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 73 69 7a 65 2c 0a 09 09 75 6e | p_server.*server,.int.size,...un |
24aa0 | 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c 79 5f 62 75 66 2c 20 69 6e 74 20 6d 61 78 5f | signed.char*.reply_buf,.int.max_ |
24ac0 | 72 65 70 6c 79 5f 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 73 74 72 75 | reply_size).{..int.result;..stru |
24ae0 | 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 72 65 71 | ct.ncp_request_reply.*req;...req |
24b00 | 20 3d 20 6e 63 70 5f 61 6c 6c 6f 63 5f 72 65 71 28 29 3b 0a 09 69 66 20 28 21 72 65 71 29 0a 09 | .=.ncp_alloc_req();..if.(!req).. |
24b20 | 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 0a 09 72 65 71 2d 3e 72 65 70 6c 79 5f 62 75 | .return.-ENOMEM;...req->reply_bu |
24b40 | 66 20 3d 20 72 65 70 6c 79 5f 62 75 66 3b 0a 09 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 3d 20 6d | f.=.reply_buf;..req->datalen.=.m |
24b60 | 61 78 5f 72 65 70 6c 79 5f 73 69 7a 65 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 | ax_reply_size;..req->tx_iov[1].i |
24b80 | 6f 76 5f 62 61 73 65 20 3d 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 3b 0a 09 72 65 71 2d 3e | ov_base.=.server->packet;..req-> |
24ba0 | 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 7a 65 3b 0a 09 72 65 71 2d 3e | tx_iov[1].iov_len.=.size;..req-> |
24bc0 | 74 78 5f 69 6f 76 6c 65 6e 20 3d 20 31 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e | tx_iovlen.=.1;..req->tx_totallen |
24be0 | 20 3d 20 73 69 7a 65 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 3d 20 2a 28 75 5f 69 6e 74 | .=.size;..req->tx_type.=.*(u_int |
24c00 | 31 36 5f 74 2a 29 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d | 16_t*)server->packet;...result.= |
24c20 | 20 6e 63 70 5f 61 64 64 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 09 | .ncp_add_request(server,.req);.. |
24c40 | 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 | if.(result.<.0)...goto.out;...if |
24c60 | 20 28 77 61 69 74 5f 65 76 65 6e 74 5f 69 6e 74 65 72 72 75 70 74 69 62 6c 65 28 72 65 71 2d 3e | .(wait_event_interruptible(req-> |
24c80 | 77 71 2c 20 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 3d 20 52 51 5f 44 4f 4e 45 29 29 20 7b 0a 09 | wq,.req->status.==.RQ_DONE)).{.. |
24ca0 | 09 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 | .ncp_abort_request(server,.req,. |
24cc0 | 2d 45 49 4e 54 52 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 54 52 3b 0a 09 09 67 6f | -EINTR);...result.=.-EINTR;...go |
24ce0 | 74 6f 20 6f 75 74 3b 0a 09 7d 0a 0a 09 72 65 73 75 6c 74 20 3d 20 72 65 71 2d 3e 72 65 73 75 6c | to.out;..}...result.=.req->resul |
24d00 | 74 3b 0a 0a 6f 75 74 3a 0a 09 6e 63 70 5f 72 65 71 5f 70 75 74 28 72 65 71 29 3b 0a 0a 09 72 65 | t;..out:..ncp_req_put(req);...re |
24d20 | 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 57 65 20 6e 65 65 64 20 74 68 | turn.result;.}../*..*.We.need.th |
24d40 | 65 20 73 65 72 76 65 72 20 74 6f 20 62 65 20 6c 6f 63 6b 65 64 20 68 65 72 65 2c 20 73 6f 20 63 | e.server.to.be.locked.here,.so.c |
24d60 | 68 65 63 6b 21 0a 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 64 6f 5f 72 65 71 | heck!..*/..static.int.ncp_do_req |
24d80 | 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 | uest(struct.ncp_server.*server,. |
24da0 | 69 6e 74 20 73 69 7a 65 2c 0a 09 09 76 6f 69 64 2a 20 72 65 70 6c 79 2c 20 69 6e 74 20 6d 61 78 | int.size,...void*.reply,.int.max |
24dc0 | 5f 72 65 70 6c 79 5f 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 69 66 | _reply_size).{..int.result;...if |
24de0 | 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 | .(server->lock.==.0).{...pr_err( |
24e00 | 22 53 65 72 76 65 72 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 29 3b 0a 09 09 72 65 74 75 72 | "Server.not.locked!\n");...retur |
24e20 | 6e 20 2d 45 49 4f 3b 0a 09 7d 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 | n.-EIO;..}..if.(!ncp_conn_valid( |
24e40 | 73 65 72 76 65 72 29 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 7d 0a 09 7b 0a | server)).{...return.-EIO;..}..{. |
24e60 | 09 09 73 69 67 73 65 74 5f 74 20 6f 6c 64 5f 73 65 74 3b 0a 09 09 75 6e 73 69 67 6e 65 64 20 6c | ..sigset_t.old_set;...unsigned.l |
24e80 | 6f 6e 67 20 6d 61 73 6b 2c 20 66 6c 61 67 73 3b 0a 0a 09 09 73 70 69 6e 5f 6c 6f 63 6b 5f 69 72 | ong.mask,.flags;....spin_lock_ir |
24ea0 | 71 73 61 76 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b | qsave(¤t->sighand->siglock |
24ec0 | 2c 20 66 6c 61 67 73 29 3b 0a 09 09 6f 6c 64 5f 73 65 74 20 3d 20 63 75 72 72 65 6e 74 2d 3e 62 | ,.flags);...old_set.=.current->b |
24ee0 | 6c 6f 63 6b 65 64 3b 0a 09 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 66 6c 61 67 73 20 26 20 50 | locked;...if.(current->flags.&.P |
24f00 | 46 5f 45 58 49 54 49 4e 47 29 0a 09 09 09 6d 61 73 6b 20 3d 20 30 3b 0a 09 09 65 6c 73 65 0a 09 | F_EXITING)....mask.=.0;...else.. |
24f20 | 09 09 6d 61 73 6b 20 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 4b 49 4c 4c 29 3b 0a 09 09 69 66 20 | ..mask.=.sigmask(SIGKILL);...if. |
24f40 | 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 49 4e 54 | (server->m.flags.&.NCP_MOUNT_INT |
24f60 | 52 29 20 7b 0a 09 09 09 2f 2a 20 46 49 58 4d 45 3a 20 54 68 69 73 20 64 6f 65 73 6e 27 74 20 73 | R).{..../*.FIXME:.This.doesn't.s |
24f80 | 65 65 6d 20 72 69 67 68 74 20 61 74 20 61 6c 6c 2e 20 20 53 6f 2c 20 6c 69 6b 65 2c 0a 09 09 09 | eem.right.at.all...So,.like,.... |
24fa0 | 20 20 20 77 65 20 63 61 6e 27 74 20 68 61 6e 64 6c 65 20 53 49 47 49 4e 54 20 61 6e 64 20 67 65 | ...we.can't.handle.SIGINT.and.ge |
24fc0 | 74 20 77 68 61 74 65 76 65 72 20 74 6f 20 73 74 6f 70 3f 0a 09 09 09 20 20 20 57 68 61 74 20 69 | t.whatever.to.stop?.......What.i |
24fe0 | 66 20 77 65 27 76 65 20 62 6c 6f 63 6b 65 64 20 69 74 20 6f 75 72 73 65 6c 76 65 73 3f 20 20 57 | f.we've.blocked.it.ourselves?..W |
25000 | 68 61 74 20 61 62 6f 75 74 0a 09 09 09 20 20 20 61 6c 61 72 6d 73 3f 20 20 57 68 79 2c 20 69 6e | hat.about.......alarms?..Why,.in |
25020 | 20 66 61 63 74 2c 20 61 72 65 20 77 65 20 6d 75 63 6b 69 6e 67 20 77 69 74 68 20 74 68 65 0a 09 | .fact,.are.we.mucking.with.the.. |
25040 | 09 09 20 20 20 73 69 67 6d 61 73 6b 20 61 74 20 61 6c 6c 3f 20 2d 2d 20 72 7e 20 2a 2f 0a 09 09 | .....sigmask.at.all?.--.r~.*/... |
25060 | 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 61 63 74 69 6f 6e 5b 53 49 | .if.(current->sighand->action[SI |
25080 | 47 49 4e 54 20 2d 20 31 5d 2e 73 61 2e 73 61 5f 68 61 6e 64 6c 65 72 20 3d 3d 20 53 49 47 5f 44 | GINT.-.1].sa.sa_handler.==.SIG_D |
250a0 | 46 4c 29 0a 09 09 09 09 6d 61 73 6b 20 7c 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 49 4e 54 29 3b | FL).....mask.|=.sigmask(SIGINT); |
250c0 | 0a 09 09 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 61 63 74 69 6f 6e | ....if.(current->sighand->action |
250e0 | 5b 53 49 47 51 55 49 54 20 2d 20 31 5d 2e 73 61 2e 73 61 5f 68 61 6e 64 6c 65 72 20 3d 3d 20 53 | [SIGQUIT.-.1].sa.sa_handler.==.S |
25100 | 49 47 5f 44 46 4c 29 0a 09 09 09 09 6d 61 73 6b 20 7c 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 51 | IG_DFL).....mask.|=.sigmask(SIGQ |
25120 | 55 49 54 29 3b 0a 09 09 7d 0a 09 09 73 69 67 69 6e 69 74 73 65 74 69 6e 76 28 26 63 75 72 72 65 | UIT);...}...siginitsetinv(&curre |
25140 | 6e 74 2d 3e 62 6c 6f 63 6b 65 64 2c 20 6d 61 73 6b 29 3b 0a 09 09 72 65 63 61 6c 63 5f 73 69 67 | nt->blocked,.mask);...recalc_sig |
25160 | 70 65 6e 64 69 6e 67 28 29 3b 0a 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 5f 69 72 71 72 65 73 74 | pending();...spin_unlock_irqrest |
25180 | 6f 72 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 | ore(¤t->sighand->siglock,. |
251a0 | 66 6c 61 67 73 29 3b 0a 09 09 0a 09 09 72 65 73 75 6c 74 20 3d 20 64 6f 5f 6e 63 70 5f 72 70 63 | flags);......result.=.do_ncp_rpc |
251c0 | 5f 63 61 6c 6c 28 73 65 72 76 65 72 2c 20 73 69 7a 65 2c 20 72 65 70 6c 79 2c 20 6d 61 78 5f 72 | _call(server,.size,.reply,.max_r |
251e0 | 65 70 6c 79 5f 73 69 7a 65 29 3b 0a 0a 09 09 73 70 69 6e 5f 6c 6f 63 6b 5f 69 72 71 73 61 76 65 | eply_size);....spin_lock_irqsave |
25200 | 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 66 6c 61 | (¤t->sighand->siglock,.fla |
25220 | 67 73 29 3b 0a 09 09 63 75 72 72 65 6e 74 2d 3e 62 6c 6f 63 6b 65 64 20 3d 20 6f 6c 64 5f 73 65 | gs);...current->blocked.=.old_se |
25240 | 74 3b 0a 09 09 72 65 63 61 6c 63 5f 73 69 67 70 65 6e 64 69 6e 67 28 29 3b 0a 09 09 73 70 69 6e | t;...recalc_sigpending();...spin |
25260 | 5f 75 6e 6c 6f 63 6b 5f 69 72 71 72 65 73 74 6f 72 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 | _unlock_irqrestore(¤t->sig |
25280 | 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 66 6c 61 67 73 29 3b 0a 09 7d 0a 0a 09 6e 63 70 5f | hand->siglock,.flags);..}...ncp_ |
252a0 | 64 62 67 28 32 2c 20 22 64 6f 5f 6e 63 70 5f 72 70 63 5f 63 61 6c 6c 20 72 65 74 75 72 6e 65 64 | dbg(2,."do_ncp_rpc_call.returned |
252c0 | 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 | .%d\n",.result);...return.result |
252e0 | 3b 0a 7d 0a 0a 2f 2a 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 20 61 73 73 75 72 65 73 20 74 | ;.}../*.ncp_do_request.assures.t |
25300 | 68 61 74 20 61 74 20 6c 65 61 73 74 20 61 20 63 6f 6d 70 6c 65 74 65 20 72 65 70 6c 79 20 68 65 | hat.at.least.a.complete.reply.he |
25320 | 61 64 65 72 20 69 73 0a 20 2a 20 72 65 63 65 69 76 65 64 2e 20 49 74 20 61 73 73 75 6d 65 73 20 | ader.is..*.received..It.assumes. |
25340 | 74 68 61 74 20 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 63 6f 6e 74 61 69 | that.server->current_size.contai |
25360 | 6e 73 20 74 68 65 20 6e 63 70 0a 20 2a 20 72 65 71 75 65 73 74 20 73 69 7a 65 0a 20 2a 2f 0a 69 | ns.the.ncp..*.request.size..*/.i |
25380 | 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | nt.ncp_request2(struct.ncp_serve |
253a0 | 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 6f 6e 2c 20 0a 09 09 76 6f 69 64 | r.*server,.int.function,....void |
253c0 | 2a 20 72 70 6c 2c 20 69 6e 74 20 73 69 7a 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 | *.rpl,.int.size).{..struct.ncp_r |
253e0 | 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 68 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 | equest_header.*h;..struct.ncp_re |
25400 | 70 6c 79 5f 68 65 61 64 65 72 2a 20 72 65 70 6c 79 20 3d 20 72 70 6c 3b 0a 09 69 6e 74 20 72 65 | ply_header*.reply.=.rpl;..int.re |
25420 | 73 75 6c 74 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f | sult;...h.=.(struct.ncp_request_ |
25440 | 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 69 66 20 | header.*).(server->packet);..if. |
25460 | 28 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 21 3d 20 30 29 20 7b | (server->has_subfunction.!=.0).{ |
25480 | 0a 09 09 2a 28 5f 5f 75 31 36 20 2a 29 20 26 20 28 68 2d 3e 64 61 74 61 5b 30 5d 29 20 3d 20 68 | ...*(__u16.*).&.(h->data[0]).=.h |
254a0 | 74 6f 6e 73 28 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2d 20 73 69 7a 65 | tons(server->current_size.-.size |
254c0 | 6f 66 28 2a 68 29 20 2d 20 32 29 3b 0a 09 7d 0a 09 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 52 | of(*h).-.2);..}..h->type.=.NCP_R |
254e0 | 45 51 55 45 53 54 3b 0a 09 2f 2a 0a 09 20 2a 20 54 68 65 20 73 65 72 76 65 72 20 73 68 6f 75 6c | EQUEST;../*...*.The.server.shoul |
25500 | 64 6e 27 74 20 6b 6e 6f 77 20 6f 72 20 63 61 72 65 20 77 68 61 74 20 74 61 73 6b 20 69 73 20 6d | dn't.know.or.care.what.task.is.m |
25520 | 61 6b 69 6e 67 20 61 0a 09 20 2a 20 72 65 71 75 65 73 74 2c 20 73 6f 20 77 65 20 61 6c 77 61 79 | aking.a...*.request,.so.we.alway |
25540 | 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 74 61 73 6b 20 6e 75 6d 62 65 72 2e 0a 09 20 2a 2f | s.use.the.same.task.number....*/ |
25560 | 0a 09 68 2d 3e 74 61 73 6b 20 3d 20 32 3b 20 2f 2a 20 28 63 75 72 72 65 6e 74 2d 3e 70 69 64 29 | ..h->task.=.2;./*.(current->pid) |
25580 | 20 26 20 30 78 66 66 3b 20 2a 2f 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 20 3d 20 66 75 6e 63 74 | .&.0xff;.*/..h->function.=.funct |
255a0 | 69 6f 6e 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 | ion;...result.=.ncp_do_request(s |
255c0 | 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 2c 20 72 65 70 | erver,.server->current_size,.rep |
255e0 | 6c 79 2c 20 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 | ly,.size);..if.(result.<.0).{... |
25600 | 6e 63 70 5f 64 62 67 28 31 2c 20 22 6e 63 70 5f 72 65 71 75 65 73 74 5f 65 72 72 6f 72 3a 20 25 | ncp_dbg(1,."ncp_request_error:.% |
25620 | 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 73 | d\n",.result);...goto.out;..}..s |
25640 | 65 72 76 65 72 2d 3e 63 6f 6d 70 6c 65 74 69 6f 6e 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6d 70 6c | erver->completion.=.reply->compl |
25660 | 65 74 69 6f 6e 5f 63 6f 64 65 3b 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f 73 74 61 74 75 73 | etion_code;..server->conn_status |
25680 | 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 5f 73 74 61 74 65 3b 0a 09 73 65 72 | .=.reply->connection_state;..ser |
256a0 | 76 65 72 2d 3e 72 65 70 6c 79 5f 73 69 7a 65 20 3d 20 72 65 73 75 6c 74 3b 0a 09 73 65 72 76 65 | ver->reply_size.=.result;..serve |
256c0 | 72 2d 3e 6e 63 70 5f 72 65 70 6c 79 5f 73 69 7a 65 20 3d 20 72 65 73 75 6c 74 20 2d 20 73 69 7a | r->ncp_reply_size.=.result.-.siz |
256e0 | 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 3b 0a 0a 09 | eof(struct.ncp_reply_header);... |
25700 | 72 65 73 75 6c 74 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6d 70 6c 65 74 69 6f 6e 5f 63 6f 64 65 3b | result.=.reply->completion_code; |
25720 | 0a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 0a 09 09 6e 63 70 5f 76 64 62 67 28 22 | ...if.(result.!=.0)...ncp_vdbg(" |
25740 | 63 6f 6d 70 6c 65 74 69 6f 6e 20 63 6f 64 65 3d 25 78 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a | completion.code=%x\n",.result);. |
25760 | 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f | out:..return.result;.}..int.ncp_ |
25780 | 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 | connect(struct.ncp_server.*serve |
257a0 | 72 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 | r).{..struct.ncp_request_header. |
257c0 | 2a 68 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 | *h;..int.result;...server->conne |
257e0 | 63 74 69 6f 6e 20 3d 20 30 78 46 46 46 46 3b 0a 09 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 | ction.=.0xFFFF;..server->sequenc |
25800 | 65 20 3d 20 32 35 35 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 | e.=.255;...h.=.(struct.ncp_reque |
25820 | 73 74 5f 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 | st_header.*).(server->packet);.. |
25840 | 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 | h->type.=.NCP_ALLOC_SLOT_REQUEST |
25860 | 3b 0a 09 68 2d 3e 74 61 73 6b 09 09 3d 20 32 3b 20 2f 2a 20 73 65 65 20 61 62 6f 76 65 20 2a 2f | ;..h->task..=.2;./*.see.above.*/ |
25880 | 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 09 3d 20 30 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 | ..h->function.=.0;...result.=.nc |
258a0 | 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 69 7a 65 6f 66 28 2a 68 29 2c | p_do_request(server,.sizeof(*h), |
258c0 | 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5f | .server->packet,.server->packet_ |
258e0 | 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f | size);..if.(result.<.0)...goto.o |
25900 | 75 74 3b 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 68 2d 3e 63 6f 6e | ut;..server->connection.=.h->con |
25920 | 6e 5f 6c 6f 77 20 2b 20 28 68 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 2a 20 32 35 36 29 3b 0a 09 72 | n_low.+.(h->conn_high.*.256);..r |
25940 | 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a | esult.=.0;.out:..return.result;. |
25960 | 7d 0a 0a 69 6e 74 20 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 | }..int.ncp_disconnect(struct.ncp |
25980 | 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 | _server.*server).{..struct.ncp_r |
259a0 | 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 68 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 | equest_header.*h;...h.=.(struct. |
259c0 | 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 | ncp_request_header.*).(server->p |
259e0 | 61 63 6b 65 74 29 3b 0a 09 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 44 45 41 4c 4c 4f 43 5f 53 | acket);..h->type.=.NCP_DEALLOC_S |
25a00 | 4c 4f 54 5f 52 45 51 55 45 53 54 3b 0a 09 68 2d 3e 74 61 73 6b 09 09 3d 20 32 3b 20 2f 2a 20 73 | LOT_REQUEST;..h->task..=.2;./*.s |
25a20 | 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 09 3d 20 30 3b 0a 0a 09 | ee.above.*/..h->function.=.0;... |
25a40 | 72 65 74 75 72 6e 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 69 | return.ncp_do_request(server,.si |
25a60 | 7a 65 6f 66 28 2a 68 29 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 76 65 72 | zeof(*h),.server->packet,.server |
25a80 | 2d 3e 70 61 63 6b 65 74 5f 73 69 7a 65 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 6c 6f 63 6b | ->packet_size);.}..void.ncp_lock |
25aa0 | 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 | _server(struct.ncp_server.*serve |
25ac0 | 72 29 0a 7b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 | r).{..mutex_lock(&server->mutex) |
25ae0 | 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 29 0a 09 09 70 72 5f 77 61 72 6e 28 22 | ;..if.(server->lock)...pr_warn(" |
25b00 | 25 73 3a 20 77 61 73 20 6c 6f 63 6b 65 64 21 5c 6e 22 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 | %s:.was.locked!\n",.__func__);.. |
25b20 | 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 20 31 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 75 6e | server->lock.=.1;.}..void.ncp_un |
25b40 | 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 | lock_server(struct.ncp_server.*s |
25b60 | 65 72 76 65 72 29 0a 7b 0a 09 69 66 20 28 21 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 29 20 7b 0a 09 | erver).{..if.(!server->lock).{.. |
25b80 | 09 70 72 5f 77 61 72 6e 28 22 25 73 3a 20 77 61 73 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 | .pr_warn("%s:.was.not.locked!\n" |
25ba0 | 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 73 65 72 76 65 | ,.__func__);...return;..}..serve |
25bc0 | 72 2d 3e 6c 6f 63 6b 20 3d 20 30 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 | r->lock.=.0;..mutex_unlock(&serv |
25be0 | 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 7d 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | er->mutex);.}................... |
25c00 | 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/symlink.c................. |
25c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25c60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
25c80 | 30 30 31 30 33 37 32 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 30 32 33 00 20 30 00 00 00 | 0010372.13023323142.013023..0... |
25ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25d00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
25d20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
25d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
25e00 | 2f 2a 0a 20 2a 20 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 0a | /*..*..linux/fs/ncpfs/symlink.c. |
25e20 | 20 2a 0a 20 2a 20 20 43 6f 64 65 20 66 6f 72 20 61 6c 6c 6f 77 69 6e 67 20 73 79 6d 62 6f 6c 69 | .*..*..Code.for.allowing.symboli |
25e40 | 63 20 6c 69 6e 6b 73 20 6f 6e 20 4e 43 50 46 53 20 28 69 2e 65 2e 20 4e 65 74 57 61 72 65 29 0a | c.links.on.NCPFS.(i.e..NetWare). |
25e60 | 20 2a 20 20 53 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 73 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f | .*..Symbolic.links.are.not.suppo |
25e80 | 72 74 65 64 20 6f 6e 20 6e 61 74 69 76 65 20 4e 65 74 57 61 72 65 2c 20 73 6f 20 77 65 20 75 73 | rted.on.native.NetWare,.so.we.us |
25ea0 | 65 20 61 6e 0a 20 2a 20 20 69 6e 66 72 65 71 75 65 6e 74 6c 79 2d 75 73 65 64 20 66 6c 61 67 20 | e.an..*..infrequently-used.flag. |
25ec0 | 28 53 68 29 20 61 6e 64 20 73 74 6f 72 65 20 61 20 74 77 6f 2d 77 6f 72 64 20 6d 61 67 69 63 20 | (Sh).and.store.a.two-word.magic. |
25ee0 | 68 65 61 64 65 72 20 69 6e 0a 20 2a 20 20 74 68 65 20 66 69 6c 65 20 74 6f 20 6d 61 6b 65 20 73 | header.in..*..the.file.to.make.s |
25f00 | 75 72 65 20 77 65 20 64 6f 6e 27 74 20 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 75 73 65 20 61 20 | ure.we.don't.accidentally.use.a. |
25f20 | 6e 6f 6e 2d 6c 69 6e 6b 20 66 69 6c 65 0a 20 2a 20 20 61 73 20 61 20 6c 69 6e 6b 2e 0a 20 2a 0a | non-link.file..*..as.a.link...*. |
25f40 | 20 2a 20 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 | .*..When.using.the.NFS.namespace |
25f60 | 2c 20 77 65 20 73 65 74 20 74 68 65 20 6d 6f 64 65 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 20 | ,.we.set.the.mode.to.indicate.a. |
25f80 | 73 79 6d 6c 69 6e 6b 20 61 6e 64 0a 20 2a 20 20 64 6f 6e 27 74 20 62 6f 74 68 65 72 20 77 69 74 | symlink.and..*..don't.bother.wit |
25fa0 | 68 20 74 68 65 20 6d 61 67 69 63 20 6e 75 6d 62 65 72 73 2e 0a 20 2a 0a 20 2a 20 20 66 72 6f 6d | h.the.magic.numbers...*..*..from |
25fc0 | 20 6c 69 6e 75 78 2f 66 73 2f 65 78 74 32 2f 73 79 6d 6c 69 6e 6b 2e 63 0a 20 2a 0a 20 2a 20 20 | .linux/fs/ext2/symlink.c..*..*.. |
25fe0 | 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 38 2d 39 39 2c 20 46 72 61 6e 6b 20 41 2e 20 | Copyright.(C).1998-99,.Frank.A.. |
26000 | 56 6f 72 73 74 65 6e 62 6f 73 63 68 0a 20 2a 0a 20 2a 20 20 6e 63 70 66 73 20 73 79 6d 6c 69 6e | Vorstenbosch..*..*..ncpfs.symlin |
26020 | 6b 20 68 61 6e 64 6c 69 6e 67 20 63 6f 64 65 0a 20 2a 20 20 4e 4c 53 20 73 75 70 70 6f 72 74 20 | k.handling.code..*..NLS.support. |
26040 | 28 63 29 20 31 39 39 39 20 50 65 74 72 20 56 61 6e 64 72 6f 76 65 63 0a 20 2a 20 20 4d 6f 64 69 | (c).1999.Petr.Vandrovec..*..Modi |
26060 | 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 73 69 74 79 | fied.2000.Ben.Harris,.University |
26080 | 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 61 2d 69 6e | .of.Cambridge.for.NFS.NS.meta-in |
260a0 | 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 | fo..*..*/...#include.<asm/uacces |
260c0 | 73 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 | s.h>..#include.<linux/errno.h>.# |
260e0 | 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c | include.<linux/fs.h>.#include.<l |
26100 | 69 6e 75 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 | inux/time.h>.#include.<linux/sla |
26120 | 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c | b.h>.#include.<linux/mm.h>.#incl |
26140 | 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 | ude.<linux/stat.h>.#include."ncp |
26160 | 5f 66 73 2e 68 22 0a 0a 2f 2a 20 74 68 65 73 65 20 6d 61 67 69 63 20 6e 75 6d 62 65 72 73 20 6d | _fs.h"../*.these.magic.numbers.m |
26180 | 75 73 74 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 73 79 6d 6c 69 6e 6b 20 66 69 6c 65 20 2d | ust.appear.in.the.symlink.file.- |
261a0 | 2d 20 74 68 69 73 20 6d 61 6b 65 73 20 69 74 20 61 20 62 69 74 0a 20 20 20 6d 6f 72 65 20 72 65 | -.this.makes.it.a.bit....more.re |
261c0 | 73 69 6c 69 65 6e 74 20 61 67 61 69 6e 73 74 20 74 68 65 20 6d 61 67 69 63 20 61 74 74 72 69 62 | silient.against.the.magic.attrib |
261e0 | 75 74 65 73 20 62 65 69 6e 67 20 73 65 74 20 6f 6e 20 72 61 6e 64 6f 6d 20 66 69 6c 65 73 2e 20 | utes.being.set.on.random.files.. |
26200 | 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 09 63 | */..#define.NCP_SYMLINK_MAGIC0.c |
26220 | 70 75 5f 74 6f 5f 6c 65 33 32 28 30 78 36 63 36 64 37 39 37 33 29 20 20 20 20 20 2f 2a 20 22 73 | pu_to_le32(0x6c6d7973)...../*."s |
26240 | 79 6d 6c 6e 6b 2d 3e 22 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f | ymlnk->".*/.#define.NCP_SYMLINK_ |
26260 | 4d 41 47 49 43 31 09 63 70 75 5f 74 6f 5f 6c 65 33 32 28 30 78 33 65 32 64 36 62 36 65 29 0a 0a | MAGIC1.cpu_to_le32(0x3e2d6b6e).. |
26280 | 2f 2a 20 2d 2d 2d 2d 2d 20 72 65 61 64 20 61 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 20 2d 2d | /*.-----.read.a.symbolic.link.-- |
262a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
262c0 | 2d 2d 2d 2d 2d 2d 2d 2d 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 73 79 6d 6c | --------.*/..static.int.ncp_syml |
262e0 | 69 6e 6b 5f 72 65 61 64 70 61 67 65 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 | ink_readpage(struct.file.*file,. |
26300 | 73 74 72 75 63 74 20 70 61 67 65 20 2a 70 61 67 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f | struct.page.*page).{..struct.ino |
26320 | 64 65 20 2a 69 6e 6f 64 65 20 3d 20 70 61 67 65 2d 3e 6d 61 70 70 69 6e 67 2d 3e 68 6f 73 74 3b | de.*inode.=.page->mapping->host; |
26340 | 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 6c 65 6e 67 74 68 2c 20 6c 65 6e 3b 0a 09 63 68 61 72 20 | ..int.error,.length,.len;..char. |
26360 | 2a 6c 69 6e 6b 2c 20 2a 72 61 77 6c 69 6e 6b 3b 0a 09 63 68 61 72 20 2a 62 75 66 20 3d 20 6b 6d | *link,.*rawlink;..char.*buf.=.km |
26380 | 61 70 28 70 61 67 65 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 72 61 | ap(page);...error.=.-ENOMEM;..ra |
263a0 | 77 6c 69 6e 6b 20 3d 20 6b 6d 61 6c 6c 6f 63 28 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f | wlink.=.kmalloc(NCP_MAX_SYMLINK_ |
263c0 | 53 49 5a 45 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 72 61 77 6c 69 6e 6b | SIZE,.GFP_KERNEL);..if.(!rawlink |
263e0 | 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 6f 70 | )...goto.fail;...if.(ncp_make_op |
26400 | 65 6e 28 69 6e 6f 64 65 2c 4f 5f 52 44 4f 4e 4c 59 29 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 45 | en(inode,O_RDONLY))...goto.failE |
26420 | 49 4f 3b 0a 0a 09 65 72 72 6f 72 3d 6e 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f | IO;...error=ncp_read_kernel(NCP_ |
26440 | 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e | SERVER(inode),NCP_FINFO(inode)-> |
26460 | 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | file_handle,.................... |
26480 | 20 20 20 20 20 20 30 2c 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 2c 72 61 77 | ......0,NCP_MAX_SYMLINK_SIZE,raw |
264a0 | 6c 69 6e 6b 2c 26 6c 65 6e 67 74 68 29 3b 0a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 | link,&length);...ncp_inode_close |
264c0 | 28 69 6e 6f 64 65 29 3b 0a 09 2f 2a 20 43 6c 6f 73 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 69 | (inode);../*.Close.file.handle.i |
264e0 | 66 20 6e 6f 20 6f 74 68 65 72 20 75 73 65 72 73 2e 2e 2e 20 2a 2f 0a 09 6e 63 70 5f 6d 61 6b 65 | f.no.other.users....*/..ncp_make |
26500 | 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f | _closed(inode);..if.(error)...go |
26520 | 74 6f 20 66 61 69 6c 45 49 4f 3b 0a 0a 09 69 66 20 28 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 | to.failEIO;...if.(NCP_FINFO(inod |
26540 | 65 29 2d 3e 66 6c 61 67 73 20 26 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d 4c 49 4e 4b 29 | e)->flags.&.NCPI_KLUDGE_SYMLINK) |
26560 | 20 7b 0a 09 09 69 66 20 28 6c 65 6e 67 74 68 3c 4e 43 50 5f 4d 49 4e 5f 53 59 4d 4c 49 4e 4b 5f | .{...if.(length<NCP_MIN_SYMLINK_ |
26580 | 53 49 5a 45 20 7c 7c 20 0a 09 09 20 20 20 20 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e | SIZE.||........((__le32.*)rawlin |
265a0 | 6b 29 5b 30 5d 21 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 20 7c 7c 0a 09 09 20 | k)[0]!=NCP_SYMLINK_MAGIC0.||.... |
265c0 | 20 20 20 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e 6b 29 5b 31 5d 21 3d 4e 43 50 5f 53 | ...((__le32.*)rawlink)[1]!=NCP_S |
265e0 | 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 31 29 0a 09 09 20 20 20 20 09 67 6f 74 6f 20 66 61 69 6c 45 | YMLINK_MAGIC1)........goto.failE |
26600 | 49 4f 3b 0a 09 09 6c 69 6e 6b 20 3d 20 72 61 77 6c 69 6e 6b 20 2b 20 38 3b 0a 09 09 6c 65 6e 67 | IO;...link.=.rawlink.+.8;...leng |
26620 | 74 68 20 2d 3d 20 38 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6c 69 6e 6b 20 3d 20 72 61 77 6c | th.-=.8;..}.else.{...link.=.rawl |
26640 | 69 6e 6b 3b 0a 09 7d 0a 0a 09 6c 65 6e 20 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f | ink;..}...len.=.NCP_MAX_SYMLINK_ |
26660 | 53 49 5a 45 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 76 6f 6c 32 69 6f 28 4e 43 50 5f 53 45 | SIZE;..error.=.ncp_vol2io(NCP_SE |
26680 | 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 62 75 66 2c 20 26 6c 65 6e 2c 20 6c 69 6e 6b 2c 20 6c 65 | RVER(inode),.buf,.&len,.link,.le |
266a0 | 6e 67 74 68 2c 20 30 29 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 69 66 20 28 | ngth,.0);..kfree(rawlink);..if.( |
266c0 | 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 09 53 65 74 50 61 67 65 55 70 74 6f | error)...goto.fail;..SetPageUpto |
266e0 | 64 61 74 65 28 70 61 67 65 29 3b 0a 09 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 75 6e 6c 6f | date(page);..kunmap(page);..unlo |
26700 | 63 6b 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 66 61 69 6c 45 | ck_page(page);..return.0;..failE |
26720 | 49 4f 3a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e | IO:..error.=.-EIO;..kfree(rawlin |
26740 | 6b 29 3b 0a 66 61 69 6c 3a 0a 09 53 65 74 50 61 67 65 45 72 72 6f 72 28 70 61 67 65 29 3b 0a 09 | k);.fail:..SetPageError(page);.. |
26760 | 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 70 61 67 65 29 | kunmap(page);..unlock_page(page) |
26780 | 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 73 79 6d 6c 69 6e | ;..return.error;.}../*..*.symlin |
267a0 | 6b 73 20 63 61 6e 27 74 20 64 6f 20 6d 75 63 68 2e 2e 2e 0a 20 2a 2f 0a 63 6f 6e 73 74 20 73 74 | ks.can't.do.much.....*/.const.st |
267c0 | 72 75 63 74 20 61 64 64 72 65 73 73 5f 73 70 61 63 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 | ruct.address_space_operations.nc |
267e0 | 70 5f 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 20 3d 20 7b 0a 09 2e 72 65 61 64 70 61 67 65 09 3d 20 | p_symlink_aops.=.{...readpage.=. |
26800 | 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 72 65 61 64 70 61 67 65 2c 0a 7d 3b 0a 09 0a 2f 2a 20 2d 2d | ncp_symlink_readpage,.};.../*.-- |
26820 | 2d 2d 2d 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 20 2d | ---.create.a.new.symbolic.link.- |
26840 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
26860 | 2d 2d 2d 2d 2d 20 2a 2f 0a 20 0a 69 6e 74 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 28 73 74 72 75 63 | -----.*/...int.ncp_symlink(struc |
26880 | 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e | t.inode.*dir,.struct.dentry.*den |
268a0 | 74 72 79 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 79 6d 6e 61 6d 65 29 20 7b 0a 09 73 74 72 | try,.const.char.*symname).{..str |
268c0 | 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 3b 0a 09 63 68 61 72 20 2a 72 61 77 6c 69 6e 6b | uct.inode.*inode;..char.*rawlink |
268e0 | 3b 0a 09 69 6e 74 20 6c 65 6e 67 74 68 2c 20 65 72 72 2c 20 69 2c 20 6f 75 74 6c 65 6e 3b 0a 09 | ;..int.length,.err,.i,.outlen;.. |
26900 | 69 6e 74 20 6b 6c 75 64 67 65 3b 0a 09 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 3b 0a 09 5f 5f 6c 65 | int.kludge;..umode_t.mode;..__le |
26920 | 33 32 20 61 74 74 72 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 68 64 72 3b 0a 0a 09 6e 63 | 32.attr;..unsigned.int.hdr;...nc |
26940 | 70 5f 64 62 67 28 31 2c 20 22 64 69 72 3d 25 70 2c 20 64 65 6e 74 72 79 3d 25 70 2c 20 73 79 6d | p_dbg(1,."dir=%p,.dentry=%p,.sym |
26960 | 6e 61 6d 65 3d 25 73 5c 6e 22 2c 20 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 73 79 6d 6e 61 6d 65 | name=%s\n",.dir,.dentry,.symname |
26980 | 29 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 28 4e 43 50 5f 53 | );...if.(ncp_is_nfs_extras(NCP_S |
269a0 | 45 52 56 45 52 28 64 69 72 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e | ERVER(dir),.NCP_FINFO(dir)->volN |
269c0 | 75 6d 62 65 72 29 29 0a 09 09 6b 6c 75 64 67 65 20 3d 20 30 3b 0a 09 65 6c 73 65 0a 23 69 66 64 | umber))...kludge.=.0;..else.#ifd |
269e0 | 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 69 66 20 28 4e 43 50 5f | ef.CONFIG_NCPFS_EXTRAS..if.(NCP_ |
26a00 | 53 45 52 56 45 52 28 64 69 72 29 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 | SERVER(dir)->m.flags.&.NCP_MOUNT |
26a20 | 5f 53 59 4d 4c 49 4e 4b 53 29 0a 09 09 6b 6c 75 64 67 65 20 3d 20 31 3b 0a 09 65 6c 73 65 0a 23 | _SYMLINKS)...kludge.=.1;..else.# |
26a40 | 65 6e 64 69 66 0a 09 2f 2a 20 45 50 45 52 4d 20 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 56 | endif../*.EPERM.is.returned.by.V |
26a60 | 46 53 20 69 66 20 73 79 6d 6c 69 6e 6b 20 70 72 6f 63 65 64 75 72 65 20 64 6f 65 73 20 6e 6f 74 | FS.if.symlink.procedure.does.not |
26a80 | 20 65 78 69 73 74 20 2a 2f 0a 09 09 72 65 74 75 72 6e 20 2d 45 50 45 52 4d 3b 0a 20 20 0a 09 72 | .exist.*/...return.-EPERM;.....r |
26aa0 | 61 77 6c 69 6e 6b 20 3d 20 6b 6d 61 6c 6c 6f 63 28 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b | awlink.=.kmalloc(NCP_MAX_SYMLINK |
26ac0 | 5f 53 49 5a 45 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 72 61 77 6c 69 6e | _SIZE,.GFP_KERNEL);..if.(!rawlin |
26ae0 | 6b 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 0a 09 69 66 20 28 6b 6c 75 64 67 | k)...return.-ENOMEM;...if.(kludg |
26b00 | 65 29 20 7b 0a 09 09 6d 6f 64 65 20 3d 20 30 3b 0a 09 09 61 74 74 72 20 3d 20 61 53 48 41 52 45 | e).{...mode.=.0;...attr.=.aSHARE |
26b20 | 44 20 7c 20 61 48 49 44 44 45 4e 3b 0a 09 09 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e | D.|.aHIDDEN;...((__le32.*)rawlin |
26b40 | 6b 29 5b 30 5d 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 3b 0a 09 09 28 28 5f 5f | k)[0]=NCP_SYMLINK_MAGIC0;...((__ |
26b60 | 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e 6b 29 5b 31 5d 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d | le32.*)rawlink)[1]=NCP_SYMLINK_M |
26b80 | 41 47 49 43 31 3b 0a 09 09 68 64 72 20 3d 20 38 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 6f | AGIC1;...hdr.=.8;..}.else.{...mo |
26ba0 | 64 65 20 3d 20 53 5f 49 46 4c 4e 4b 20 7c 20 53 5f 49 52 57 58 55 47 4f 3b 0a 09 09 61 74 74 72 | de.=.S_IFLNK.|.S_IRWXUGO;...attr |
26bc0 | 20 3d 20 30 3b 0a 09 09 68 64 72 20 3d 20 30 3b 0a 09 7d 09 09 09 0a 0a 09 6c 65 6e 67 74 68 20 | .=.0;...hdr.=.0;..}......length. |
26be0 | 3d 20 73 74 72 6c 65 6e 28 73 79 6d 6e 61 6d 65 29 3b 0a 09 2f 2a 20 6d 61 70 20 74 6f 2f 66 72 | =.strlen(symname);../*.map.to/fr |
26c00 | 6f 6d 20 73 65 72 76 65 72 20 63 68 61 72 73 65 74 2c 20 64 6f 20 6e 6f 74 20 74 6f 75 63 68 20 | om.server.charset,.do.not.touch. |
26c20 | 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 61 73 0a 09 20 20 20 73 79 6d 6c 69 6e 6b 20 | upper/lower.case.as.....symlink. |
26c40 | 63 61 6e 20 70 6f 69 6e 74 20 6f 75 74 20 6f 66 20 6e 63 70 20 66 69 6c 65 73 79 73 74 65 6d 20 | can.point.out.of.ncp.filesystem. |
26c60 | 2a 2f 0a 09 6f 75 74 6c 65 6e 20 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a | */..outlen.=.NCP_MAX_SYMLINK_SIZ |
26c80 | 45 20 2d 20 68 64 72 3b 0a 09 65 72 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 4e 43 50 5f 53 | E.-.hdr;..err.=.ncp_io2vol(NCP_S |
26ca0 | 45 52 56 45 52 28 64 69 72 29 2c 20 72 61 77 6c 69 6e 6b 20 2b 20 68 64 72 2c 20 26 6f 75 74 6c | ERVER(dir),.rawlink.+.hdr,.&outl |
26cc0 | 65 6e 2c 20 73 79 6d 6e 61 6d 65 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a 09 69 66 20 28 65 72 | en,.symname,.length,.0);..if.(er |
26ce0 | 72 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 66 72 65 65 3b 0a 0a 09 6f 75 74 6c 65 6e 20 2b 3d 20 | r)...goto.failfree;...outlen.+=. |
26d00 | 68 64 72 3b 0a 0a 09 65 72 72 20 3d 20 2d 45 49 4f 3b 0a 09 69 66 20 28 6e 63 70 5f 63 72 65 61 | hdr;...err.=.-EIO;..if.(ncp_crea |
26d20 | 74 65 5f 6e 65 77 28 64 69 72 2c 64 65 6e 74 72 79 2c 6d 6f 64 65 2c 30 2c 61 74 74 72 29 29 20 | te_new(dir,dentry,mode,0,attr)). |
26d40 | 7b 0a 09 09 67 6f 74 6f 20 66 61 69 6c 66 72 65 65 3b 0a 09 7d 0a 0a 09 69 6e 6f 64 65 3d 64 5f | {...goto.failfree;..}...inode=d_ |
26d60 | 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 6f 70 | inode(dentry);...if.(ncp_make_op |
26d80 | 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e 4c 59 29 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c | en(inode,.O_WRONLY))...goto.fail |
26da0 | 66 72 65 65 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 4e 43 50 | free;...if.(ncp_write_kernel(NCP |
26dc0 | 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 | _SERVER(inode),.NCP_FINFO(inode) |
26de0 | 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 20 0a 09 09 09 20 20 20 20 20 30 2c 20 6f 75 74 6c 65 | ->file_handle,..........0,.outle |
26e00 | 6e 2c 20 72 61 77 6c 69 6e 6b 2c 20 26 69 29 20 7c 7c 20 69 21 3d 6f 75 74 6c 65 6e 29 20 7b 0a | n,.rawlink,.&i).||.i!=outlen).{. |
26e20 | 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 | ..goto.fail;..}...ncp_inode_clos |
26e40 | 65 28 69 6e 6f 64 65 29 3b 0a 09 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 | e(inode);..ncp_make_closed(inode |
26e60 | 29 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 66 | );..kfree(rawlink);..return.0;.f |
26e80 | 61 69 6c 3a 3b 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 | ail:;..ncp_inode_close(inode);.. |
26ea0 | 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 66 61 69 6c 66 72 65 65 | ncp_make_closed(inode);.failfree |
26ec0 | 3a 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 3b | :;..kfree(rawlink);..return.err; |
26ee0 | 0a 7d 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 20 45 4f 46 20 2d 2d 2d 2d 2d 20 2a 2f 0a 00 00 00 00 00 00 | .}../*.-----.EOF.-----.*/....... |
26f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
26fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27000 | 6e 63 70 66 73 2f 64 69 72 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/dir.c..................... |
27020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
27080 | 30 30 37 35 36 30 30 00 31 33 30 35 35 30 30 30 36 34 37 00 30 31 32 31 32 37 00 20 30 00 00 00 | 0075600.13055000647.012127..0... |
270a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
270c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
270e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27100 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
27120 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
27140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
271a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
271c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
271e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
27200 | 2f 2a 0a 20 2a 20 20 64 69 72 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 | /*..*..dir.c..*..*..Copyright.(C |
27220 | 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 0a | ).1995,.1996.by.Volker.Lendecke. |
27240 | 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 6e 64 69 61 6e 20 62 79 20 4a | .*..Modified.for.big.endian.by.J |
27260 | 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 53 2e 20 4d 69 6c 6c 65 72 0a | .F..Chadima.and.David.S..Miller. |
27280 | 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 65 | .*..Modified.1997.Peter.Waltenbe |
272a0 | 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 20 | rg,.Bill.Hawes,.David.Woodhouse. |
272c0 | 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 38 | for.2.1.dcache..*..Modified.1998 |
272e0 | 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c 53 0a | ,.1999.Wolfram.Pienkoss.for.NLS. |
27300 | 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f | .*..Modified.1999.Wolfram.Pienko |
27320 | 73 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 63 61 63 68 69 6e 67 0a 20 2a 20 20 4d 6f 64 | ss.for.directory.caching..*..Mod |
27340 | 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 73 69 74 | ified.2000.Ben.Harris,.Universit |
27360 | 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 61 2d 69 | y.of.Cambridge.for.NFS.NS.meta-i |
27380 | 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 | nfo..*..*/..#include.<linux/time |
273a0 | 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e | .h>.#include.<linux/errno.h>.#in |
273c0 | 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c | clude.<linux/stat.h>.#include.<l |
273e0 | 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 | inux/kernel.h>.#include.<linux/v |
27400 | 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a | malloc.h>.#include.<linux/mm.h>. |
27420 | 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 61 6d 65 69 2e 68 3e 0a 23 69 6e 63 6c 75 64 | #include.<linux/namei.h>.#includ |
27440 | 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f | e.<asm/uaccess.h>.#include.<asm/ |
27460 | 62 79 74 65 6f 72 64 65 72 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 | byteorder.h>..#include."ncp_fs.h |
27480 | 22 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c | "..static.void.ncp_read_volume_l |
274a0 | 69 73 74 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f | ist(struct.file.*,.struct.dir_co |
274c0 | 6e 74 65 78 74 20 2a 2c 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f | ntext.*,.....struct.ncp_cache_co |
274e0 | 6e 74 72 6f 6c 20 2a 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 6f 5f 72 65 61 | ntrol.*);.static.void.ncp_do_rea |
27500 | 64 64 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 | ddir(struct.file.*,.struct.dir_c |
27520 | 6f 6e 74 65 78 74 20 2a 2c 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 | ontext.*,.....struct.ncp_cache_c |
27540 | 6f 6e 74 72 6f 6c 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 61 64 64 | ontrol.*);..static.int.ncp_readd |
27560 | 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e | ir(struct.file.*,.struct.dir_con |
27580 | 74 65 78 74 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 28 | text.*);..static.int.ncp_create( |
275a0 | 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c | struct.inode.*,.struct.dentry.*, |
275c0 | 20 75 6d 6f 64 65 5f 74 2c 20 62 6f 6f 6c 29 3b 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 | .umode_t,.bool);.static.struct.d |
275e0 | 65 6e 74 72 79 20 2a 6e 63 70 5f 6c 6f 6f 6b 75 70 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a | entry.*ncp_lookup(struct.inode.* |
27600 | 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 | ,.struct.dentry.*,.unsigned.int) |
27620 | 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 | ;.static.int.ncp_unlink(struct.i |
27640 | 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b 0a 73 74 61 74 69 63 | node.*,.struct.dentry.*);.static |
27660 | 20 69 6e 74 20 6e 63 70 5f 6d 6b 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 | .int.ncp_mkdir(struct.inode.*,.s |
27680 | 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6d 6f 64 65 5f 74 29 3b 0a 73 74 61 74 69 63 | truct.dentry.*,.umode_t);.static |
276a0 | 20 69 6e 74 20 6e 63 70 5f 72 6d 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 | .int.ncp_rmdir(struct.inode.*,.s |
276c0 | 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f | truct.dentry.*);.static.int.ncp_ |
276e0 | 72 65 6e 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 | rename(struct.inode.*,.struct.de |
27700 | 6e 74 72 79 20 2a 2c 0a 09 09 20 20 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 | ntry.*,.........struct.inode.*,. |
27720 | 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a | struct.dentry.*,.unsigned.int);. |
27740 | 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 6e 6f 64 28 73 74 72 75 63 74 20 69 6e 6f 64 | static.int.ncp_mknod(struct.inod |
27760 | 65 20 2a 20 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a | e.*.dir,.struct.dentry.*dentry,. |
27780 | 09 09 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 64 65 76 5f 74 20 72 64 65 76 29 | .......umode_t.mode,.dev_t.rdev) |
277a0 | 3b 0a 23 69 66 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 | ;.#if.defined(CONFIG_NCPFS_EXTRA |
277c0 | 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e | S).||.defined(CONFIG_NCPFS_NFS_N |
277e0 | 53 29 0a 65 78 74 65 72 6e 20 69 6e 74 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 28 73 74 72 75 63 74 | S).extern.int.ncp_symlink(struct |
27800 | 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 63 6f 6e 73 74 | .inode.*,.struct.dentry.*,.const |
27820 | 20 63 68 61 72 20 2a 29 3b 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 73 79 6d 6c | .char.*);.#else.#define.ncp_syml |
27840 | 69 6e 6b 20 4e 55 4c 4c 0a 23 65 6e 64 69 66 0a 09 09 20 20 20 20 20 20 0a 63 6f 6e 73 74 20 73 | ink.NULL.#endif..........const.s |
27860 | 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 6f 70 | truct.file_operations.ncp_dir_op |
27880 | 65 72 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 2e 6c 6c 73 65 65 6b 09 09 3d 20 67 65 6e 65 72 69 63 | erations.=.{...llseek..=.generic |
278a0 | 5f 66 69 6c 65 5f 6c 6c 73 65 65 6b 2c 0a 09 2e 72 65 61 64 09 09 3d 20 67 65 6e 65 72 69 63 5f | _file_llseek,...read..=.generic_ |
278c0 | 72 65 61 64 5f 64 69 72 2c 0a 09 2e 69 74 65 72 61 74 65 09 3d 20 6e 63 70 5f 72 65 61 64 64 69 | read_dir,...iterate.=.ncp_readdi |
278e0 | 72 2c 0a 09 2e 75 6e 6c 6f 63 6b 65 64 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 69 6f 63 74 6c 2c | r,...unlocked_ioctl.=.ncp_ioctl, |
27900 | 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 2e 63 6f 6d 70 61 74 5f 69 | .#ifdef.CONFIG_COMPAT...compat_i |
27920 | 6f 63 74 6c 09 3d 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 2c 0a 23 65 6e 64 69 66 0a | octl.=.ncp_compat_ioctl,.#endif. |
27940 | 7d 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e | };..const.struct.inode_operation |
27960 | 73 20 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 | s.ncp_dir_inode_operations.=.{.. |
27980 | 2e 63 72 65 61 74 65 09 09 3d 20 6e 63 70 5f 63 72 65 61 74 65 2c 0a 09 2e 6c 6f 6f 6b 75 70 09 | .create..=.ncp_create,...lookup. |
279a0 | 09 3d 20 6e 63 70 5f 6c 6f 6f 6b 75 70 2c 0a 09 2e 75 6e 6c 69 6e 6b 09 09 3d 20 6e 63 70 5f 75 | .=.ncp_lookup,...unlink..=.ncp_u |
279c0 | 6e 6c 69 6e 6b 2c 0a 09 2e 73 79 6d 6c 69 6e 6b 09 3d 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 2c 0a | nlink,...symlink.=.ncp_symlink,. |
279e0 | 09 2e 6d 6b 64 69 72 09 09 3d 20 6e 63 70 5f 6d 6b 64 69 72 2c 0a 09 2e 72 6d 64 69 72 09 09 3d | ..mkdir..=.ncp_mkdir,...rmdir..= |
27a00 | 20 6e 63 70 5f 72 6d 64 69 72 2c 0a 09 2e 6d 6b 6e 6f 64 09 09 3d 20 6e 63 70 5f 6d 6b 6e 6f 64 | .ncp_rmdir,...mknod..=.ncp_mknod |
27a20 | 2c 0a 09 2e 72 65 6e 61 6d 65 09 09 3d 20 6e 63 70 5f 72 65 6e 61 6d 65 2c 0a 09 2e 73 65 74 61 | ,...rename..=.ncp_rename,...seta |
27a40 | 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 2c 0a 7d 3b 0a 0a 2f 2a 0a | ttr.=.ncp_notify_change,.};../*. |
27a60 | 20 2a 20 44 65 6e 74 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 72 6f 75 74 69 6e 65 73 0a 20 2a | .*.Dentry.operations.routines..* |
27a80 | 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 | /.static.int.ncp_lookup_validate |
27aa0 | 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b | (struct.dentry.*,.unsigned.int); |
27ac0 | 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 68 61 73 68 5f 64 65 6e 74 72 79 28 63 6f 6e 73 | .static.int.ncp_hash_dentry(cons |
27ae0 | 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a | t.struct.dentry.*,.struct.qstr.* |
27b00 | 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 | );.static.int.ncp_compare_dentry |
27b20 | 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 0a 09 09 75 6e 73 69 67 6e | (const.struct.dentry.*,...unsign |
27b40 | 65 64 20 69 6e 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 73 74 72 75 | ed.int,.const.char.*,.const.stru |
27b60 | 63 74 20 71 73 74 72 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 64 65 6c 65 74 | ct.qstr.*);.static.int.ncp_delet |
27b80 | 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b | e_dentry(const.struct.dentry.*); |
27ba0 | 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 5f 70 72 75 6e 65 28 73 74 72 75 63 74 20 | .static.void.ncp_d_prune(struct. |
27bc0 | 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 | dentry.*dentry);..const.struct.d |
27be0 | 65 6e 74 72 79 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 | entry_operations.ncp_dentry_oper |
27c00 | 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 2e 64 5f 72 65 76 61 6c 69 64 61 74 65 09 3d 20 6e 63 70 5f | ations.=.{...d_revalidate.=.ncp_ |
27c20 | 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 2c 0a 09 2e 64 5f 68 61 73 68 09 09 3d 20 6e 63 70 | lookup_validate,...d_hash..=.ncp |
27c40 | 5f 68 61 73 68 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 63 6f 6d 70 61 72 65 09 3d 20 6e 63 70 5f | _hash_dentry,...d_compare.=.ncp_ |
27c60 | 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 64 65 6c 65 74 65 09 3d 20 6e 63 70 | compare_dentry,...d_delete.=.ncp |
27c80 | 5f 64 65 6c 65 74 65 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 70 72 75 6e 65 09 3d 20 6e 63 70 5f | _delete_dentry,...d_prune.=.ncp_ |
27ca0 | 64 5f 70 72 75 6e 65 2c 0a 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 6e 61 6d 65 73 70 61 | d_prune,.};..#define.ncp_namespa |
27cc0 | 63 65 28 69 29 09 28 4e 43 50 5f 53 45 52 56 45 52 28 69 29 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 | ce(i).(NCP_SERVER(i)->name_space |
27ce0 | 5b 4e 43 50 5f 46 49 4e 46 4f 28 69 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 0a 0a 73 74 61 74 | [NCP_FINFO(i)->volNumber])..stat |
27d00 | 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 72 79 | ic.inline.int.ncp_preserve_entry |
27d20 | 5f 63 61 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 2c 20 5f 5f 75 33 32 20 6e 73 63 | _case(struct.inode.*i,.__u32.nsc |
27d40 | 72 65 61 74 6f 72 29 0a 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d | reator).{.#ifdef.CONFIG_NCPFS_SM |
27d60 | 41 4c 4c 44 4f 53 0a 09 69 6e 74 20 6e 73 20 3d 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 | ALLDOS..int.ns.=.ncp_namespace(i |
27d80 | 29 3b 0a 0a 09 69 66 20 28 28 6e 73 20 3d 3d 20 4e 57 5f 4e 53 5f 44 4f 53 29 0a 23 69 66 64 65 | );...if.((ns.==.NW_NS_DOS).#ifde |
27da0 | 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 0a 09 09 7c 7c 20 28 28 6e 73 20 | f.CONFIG_NCPFS_OS2_NS...||.((ns. |
27dc0 | 3d 3d 20 4e 57 5f 4e 53 5f 4f 53 32 29 20 26 26 20 28 6e 73 63 72 65 61 74 6f 72 20 3d 3d 20 4e | ==.NW_NS_OS2).&&.(nscreator.==.N |
27de0 | 57 5f 4e 53 5f 44 4f 53 29 29 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 | W_NS_DOS)).#endif./*.CONFIG_NCPF |
27e00 | 53 5f 4f 53 32 5f 4e 53 20 2a 2f 0a 09 20 20 20 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 | S_OS2_NS.*/.....)...return.0;.#e |
27e20 | 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f 53 20 2a 2f | ndif./*.CONFIG_NCPFS_SMALLDOS.*/ |
27e40 | 0a 09 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 70 72 65 73 65 | ..return.1;.}..#define.ncp_prese |
27e60 | 72 76 65 5f 63 61 73 65 28 69 29 09 28 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 21 3d | rve_case(i).(ncp_namespace(i).!= |
27e80 | 20 4e 57 5f 4e 53 5f 44 4f 53 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e | .NW_NS_DOS)..static.inline.int.n |
27ea0 | 63 70 5f 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 | cp_case_sensitive(const.struct.i |
27ec0 | 6e 6f 64 65 20 2a 69 29 0a 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e | node.*i).{.#ifdef.CONFIG_NCPFS_N |
27ee0 | 46 53 5f 4e 53 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 3d | FS_NS..return.ncp_namespace(i).= |
27f00 | 3d 20 4e 57 5f 4e 53 5f 4e 46 53 3b 0a 23 65 6c 73 65 0a 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 | =.NW_NS_NFS;.#else..return.0;.#e |
27f20 | 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 20 2a 2f 0a 7d | ndif./*.CONFIG_NCPFS_NFS_NS.*/.} |
27f40 | 0a 0a 2f 2a 0a 20 2a 20 4e 6f 74 65 3a 20 6c 65 61 76 65 20 74 68 65 20 68 61 73 68 20 75 6e 63 | ../*..*.Note:.leave.the.hash.unc |
27f60 | 68 61 6e 67 65 64 20 69 66 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 2a 20 69 73 20 63 61 | hanged.if.the.directory..*.is.ca |
27f80 | 73 65 2d 73 65 6e 73 69 74 69 76 65 2e 0a 20 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 | se-sensitive...*..*.Accessing.th |
27fa0 | 65 20 70 61 72 65 6e 74 20 69 6e 6f 64 65 20 63 61 6e 20 62 65 20 72 61 63 79 20 75 6e 64 65 72 | e.parent.inode.can.be.racy.under |
27fc0 | 20 52 43 55 20 70 61 74 68 77 61 6c 6b 69 6e 67 2e 0a 20 2a 20 55 73 65 20 41 43 43 45 53 53 5f | .RCU.pathwalking...*.Use.ACCESS_ |
27fe0 | 4f 4e 43 45 28 29 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 75 73 65 20 5f 6f 6e 65 5f | ONCE().to.make.sure.we.use._one_ |
28000 | 20 70 61 72 74 69 63 75 6c 61 72 20 69 6e 6f 64 65 2c 0a 20 2a 20 74 68 65 20 63 61 6c 6c 65 72 | .particular.inode,..*.the.caller |
28020 | 73 20 77 69 6c 6c 20 68 61 6e 64 6c 65 20 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 | s.will.handle.races...*/.static. |
28040 | 69 6e 74 20 0a 6e 63 70 5f 68 61 73 68 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 | int..ncp_hash_dentry(const.struc |
28060 | 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 74 | t.dentry.*dentry,.struct.qstr.*t |
28080 | 68 69 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f | his).{..struct.inode.*inode.=.d_ |
280a0 | 69 6e 6f 64 65 5f 72 63 75 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 | inode_rcu(dentry);...if.(!inode) |
280c0 | 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f 63 61 73 65 5f 73 65 6e | ...return.0;...if.(!ncp_case_sen |
280e0 | 73 69 74 69 76 65 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 | sitive(inode)).{...struct.nls_ta |
28100 | 62 6c 65 20 2a 74 3b 0a 09 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 68 61 73 68 3b 0a 09 09 | ble.*t;...unsigned.long.hash;... |
28120 | 69 6e 74 20 69 3b 0a 0a 09 09 74 20 3d 20 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 64 65 6e 74 72 | int.i;....t.=.NCP_IO_TABLE(dentr |
28140 | 79 2d 3e 64 5f 73 62 29 3b 0a 09 09 68 61 73 68 20 3d 20 69 6e 69 74 5f 6e 61 6d 65 5f 68 61 73 | y->d_sb);...hash.=.init_name_has |
28160 | 68 28 64 65 6e 74 72 79 29 3b 0a 09 09 66 6f 72 20 28 69 3d 30 3b 20 69 3c 74 68 69 73 2d 3e 6c | h(dentry);...for.(i=0;.i<this->l |
28180 | 65 6e 20 3b 20 69 2b 2b 29 0a 09 09 09 68 61 73 68 20 3d 20 70 61 72 74 69 61 6c 5f 6e 61 6d 65 | en.;.i++)....hash.=.partial_name |
281a0 | 5f 68 61 73 68 28 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 74 2c 20 74 68 69 73 2d 3e 6e 61 6d 65 5b | _hash(ncp_tolower(t,.this->name[ |
281c0 | 69 5d 29 2c 0a 09 09 09 09 09 09 09 09 09 68 61 73 68 29 3b 0a 09 09 74 68 69 73 2d 3e 68 61 73 | i]),..........hash);...this->has |
281e0 | 68 20 3d 20 65 6e 64 5f 6e 61 6d 65 5f 68 61 73 68 28 68 61 73 68 29 3b 0a 09 7d 0a 09 72 65 74 | h.=.end_name_hash(hash);..}..ret |
28200 | 75 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 65 20 70 61 | urn.0;.}../*..*.Accessing.the.pa |
28220 | 72 65 6e 74 20 69 6e 6f 64 65 20 63 61 6e 20 62 65 20 72 61 63 79 20 75 6e 64 65 72 20 52 43 55 | rent.inode.can.be.racy.under.RCU |
28240 | 20 70 61 74 68 77 61 6c 6b 69 6e 67 2e 0a 20 2a 20 55 73 65 20 41 43 43 45 53 53 5f 4f 4e 43 45 | .pathwalking...*.Use.ACCESS_ONCE |
28260 | 28 29 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 75 73 65 20 5f 6f 6e 65 5f 20 70 61 72 | ().to.make.sure.we.use._one_.par |
28280 | 74 69 63 75 6c 61 72 20 69 6e 6f 64 65 2c 0a 20 2a 20 74 68 65 20 63 61 6c 6c 65 72 73 20 77 69 | ticular.inode,..*.the.callers.wi |
282a0 | 6c 6c 20 68 61 6e 64 6c 65 20 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a | ll.handle.races...*/.static.int. |
282c0 | 6e 63 70 5f 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 | ncp_compare_dentry(const.struct. |
282e0 | 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6c | dentry.*dentry,...unsigned.int.l |
28300 | 65 6e 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 | en,.const.char.*str,.const.struc |
28320 | 74 20 71 73 74 72 20 2a 6e 61 6d 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 70 | t.qstr.*name).{..struct.inode.*p |
28340 | 69 6e 6f 64 65 3b 0a 0a 09 69 66 20 28 6c 65 6e 20 21 3d 20 6e 61 6d 65 2d 3e 6c 65 6e 29 0a 09 | inode;...if.(len.!=.name->len).. |
28360 | 09 72 65 74 75 72 6e 20 31 3b 0a 0a 09 70 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 5f 72 63 | .return.1;...pinode.=.d_inode_rc |
28380 | 75 28 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 29 3b 0a 09 69 66 20 28 21 70 69 6e 6f 64 | u(dentry->d_parent);..if.(!pinod |
283a0 | 65 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 63 61 73 65 5f 73 65 | e)...return.1;...if.(ncp_case_se |
283c0 | 6e 73 69 74 69 76 65 28 70 69 6e 6f 64 65 29 29 0a 09 09 72 65 74 75 72 6e 20 73 74 72 6e 63 6d | nsitive(pinode))...return.strncm |
283e0 | 70 28 73 74 72 2c 20 6e 61 6d 65 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 3b 0a 0a 09 72 65 74 75 72 | p(str,.name->name,.len);...retur |
28400 | 6e 20 6e 63 70 5f 73 74 72 6e 69 63 6d 70 28 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 70 69 6e 6f | n.ncp_strnicmp(NCP_IO_TABLE(pino |
28420 | 64 65 2d 3e 69 5f 73 62 29 2c 20 73 74 72 2c 20 6e 61 6d 65 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 | de->i_sb),.str,.name->name,.len) |
28440 | 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 | ;.}../*..*.This.is.the.callback. |
28460 | 66 72 6f 6d 20 64 70 75 74 28 29 20 77 68 65 6e 20 64 5f 63 6f 75 6e 74 20 69 73 20 67 6f 69 6e | from.dput().when.d_count.is.goin |
28480 | 67 20 74 6f 20 30 2e 0a 20 2a 20 57 65 20 75 73 65 20 74 68 69 73 20 74 6f 20 75 6e 68 61 73 68 | g.to.0...*.We.use.this.to.unhash |
284a0 | 20 64 65 6e 74 72 69 65 73 20 77 69 74 68 20 62 61 64 20 69 6e 6f 64 65 73 2e 0a 20 2a 20 43 6c | .dentries.with.bad.inodes...*.Cl |
284c0 | 6f 73 69 6e 67 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 73 61 66 65 6c 79 20 70 6f 73 74 70 6f | osing.files.can.be.safely.postpo |
284e0 | 6e 65 64 20 75 6e 74 69 6c 20 69 70 75 74 28 29 20 2d 20 69 74 27 73 20 64 6f 6e 65 20 74 68 65 | ned.until.iput().-.it's.done.the |
28500 | 72 65 20 61 6e 79 77 61 79 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 64 65 | re.anyway...*/.static.int.ncp_de |
28520 | 6c 65 74 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 | lete_dentry(const.struct.dentry. |
28540 | 2a 20 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 | *.dentry).{..struct.inode.*inode |
28560 | 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 | .=.d_inode(dentry);...if.(inode) |
28580 | 20 7b 0a 09 09 69 66 20 28 69 73 5f 62 61 64 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 29 0a 09 09 | .{...if.(is_bad_inode(inode))... |
285a0 | 09 72 65 74 75 72 6e 20 31 3b 0a 09 7d 20 65 6c 73 65 0a 09 7b 0a 09 2f 2a 20 4e 2e 42 2e 20 55 | .return.1;..}.else..{../*.N.B..U |
285c0 | 6e 68 61 73 68 20 6e 65 67 61 74 69 76 65 20 64 65 6e 74 72 69 65 73 3f 20 2a 2f 0a 09 7d 0a 09 | nhash.negative.dentries?.*/..}.. |
285e0 | 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 0a 6e | return.0;.}..static.inline.int.n |
28600 | 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 | cp_single_volume(struct.ncp_serv |
28620 | 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 72 65 74 75 72 6e 20 28 73 65 72 76 65 72 2d 3e 6d | er.*server).{..return.(server->m |
28640 | 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 21 3d 20 27 5c 30 27 29 3b 0a 7d 0a 0a 73 74 61 | .mounted_vol[0].!=.'\0');.}..sta |
28660 | 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f | tic.inline.int.ncp_is_server_roo |
28680 | 74 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 72 65 74 75 72 6e | t(struct.inode.*inode).{..return |
286a0 | 20 21 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 | .!ncp_single_volume(NCP_SERVER(i |
286c0 | 6e 6f 64 65 29 29 20 26 26 0a 09 09 69 73 5f 72 6f 6f 74 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 | node)).&&...is_root_inode(inode) |
286e0 | 3b 0a 7d 0a 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b | ;.}.../*..*.This.is.the.callback |
28700 | 20 77 68 65 6e 20 74 68 65 20 64 63 61 63 68 65 20 68 61 73 20 61 20 6c 6f 6f 6b 75 70 20 68 69 | .when.the.dcache.has.a.lookup.hi |
28720 | 74 2e 0a 20 2a 2f 0a 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 | t...*/...#ifdef.CONFIG_NCPFS_STR |
28740 | 4f 4e 47 0a 2f 2a 20 74 72 79 20 74 6f 20 64 65 6c 65 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 | ONG./*.try.to.delete.a.readonly. |
28760 | 66 69 6c 65 20 28 4e 57 20 52 20 62 69 74 20 73 65 74 29 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 | file.(NW.R.bit.set).*/..static.i |
28780 | 6e 74 0a 6e 63 70 5f 66 6f 72 63 65 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 | nt.ncp_force_unlink(struct.inode |
287a0 | 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 29 0a 7b 0a | .*dir,.struct.dentry*.dentry).{. |
287c0 | 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 3d 30 78 39 63 2c 72 65 73 32 3b 0a 09 73 74 72 75 | ........int.res=0x9c,res2;..stru |
287e0 | 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 5f 5f 6c | ct.nw_modify_dos_info.info;..__l |
28800 | 65 33 32 20 6f 6c 64 5f 6e 77 61 74 74 72 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 | e32.old_nwattr;..struct.inode.*i |
28820 | 6e 6f 64 65 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c 20 73 69 7a 65 6f 66 28 | node;...memset(&info,.0,.sizeof( |
28840 | 69 6e 66 6f 29 29 3b 0a 09 0a 20 20 20 20 20 20 20 20 2f 2a 20 72 65 6d 6f 76 65 20 74 68 65 20 | info));.........../*.remove.the. |
28860 | 52 65 61 64 2d 4f 6e 6c 79 20 66 6c 61 67 20 6f 6e 20 74 68 65 20 4e 57 20 73 65 72 76 65 72 20 | Read-Only.flag.on.the.NW.server. |
28880 | 2a 2f 0a 09 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 6f | */..inode.=.d_inode(dentry);...o |
288a0 | 6c 64 5f 6e 77 61 74 74 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 | ld_nwattr.=.NCP_FINFO(inode)->nw |
288c0 | 61 74 74 72 3b 0a 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 | attr;..info.attributes.=.old_nwa |
288e0 | 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 7c 61 52 | ttr.&.~(aRONLY|aDELETEINHIBIT|aR |
28900 | 45 4e 41 4d 45 49 4e 48 49 42 49 54 29 3b 0a 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 | ENAMEINHIBIT);..res2.=.ncp_modif |
28920 | 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e | y_file_or_subdir_dos_info_path(N |
28940 | 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 | CP_SERVER(inode),.inode,.NULL,.D |
28960 | 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 69 66 20 28 72 65 73 32 29 | M_ATTRIBUTES,.&info);..if.(res2) |
28980 | 0a 09 09 67 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 6e 6f | ...goto.leave_me;........../*.no |
289a0 | 77 20 74 72 79 20 61 67 61 69 6e 20 74 68 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e | w.try.again.the.delete.operation |
289c0 | 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 73 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f | .*/.........res.=.ncp_del_file_o |
289e0 | 72 5f 73 75 62 64 69 72 32 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 64 65 6e 74 72 | r_subdir2(NCP_SERVER(dir),.dentr |
28a00 | 79 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 29 20 20 2f 2a 20 64 65 6c 65 74 65 | y);..........if.(res)../*.delete |
28a20 | 20 66 61 69 6c 65 64 2c 20 73 65 74 20 52 20 62 69 74 20 61 67 61 69 6e 20 2a 2f 0a 20 20 20 20 | .failed,.set.R.bit.again.*/..... |
28a40 | 20 20 20 20 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 | ....{...info.attributes.=.old_nw |
28a60 | 61 74 74 72 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f | attr;...res2.=.ncp_modify_file_o |
28a80 | 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 | r_subdir_dos_info_path(NCP_SERVE |
28aa0 | 52 28 69 6e 6f 64 65 29 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 54 52 49 42 | R(inode),.inode,.NULL,.DM_ATTRIB |
28ac0 | 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 65 73 32 29 0a 20 20 20 20 20 20 | UTES,.&info);...if.(res2)....... |
28ae0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b | ..................goto.leave_me; |
28b00 | 0a 20 20 20 20 20 20 20 20 7d 0a 6c 65 61 76 65 5f 6d 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 | .........}.leave_me:.........ret |
28b20 | 75 72 6e 28 72 65 73 29 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 | urn(res);.}.#endif./*.CONFIG_NCP |
28b40 | 46 53 5f 53 54 52 4f 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 | FS_STRONG.*/..#ifdef.CONFIG_NCPF |
28b60 | 53 5f 53 54 52 4f 4e 47 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 6f 72 63 65 5f 72 65 | S_STRONG.static.int.ncp_force_re |
28b80 | 6e 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 | name(struct.inode.*old_dir,.stru |
28ba0 | 63 74 20 64 65 6e 74 72 79 2a 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 63 68 61 72 20 2a 5f 6f 6c | ct.dentry*.old_dentry,.char.*_ol |
28bc0 | 64 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 | d_name,..................struct. |
28be0 | 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 6e | inode.*new_dir,.struct.dentry*.n |
28c00 | 65 77 5f 64 65 6e 74 72 79 2c 20 63 68 61 72 20 2a 5f 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 09 73 | ew_dentry,.char.*_new_name).{..s |
28c20 | 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 20 | truct.nw_modify_dos_info.info;.. |
28c40 | 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 3d 30 78 39 30 2c 72 65 73 32 3b 0a 09 73 74 72 75 63 | .......int.res=0x90,res2;..struc |
28c60 | 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 6f 6c 64 | t.inode.*old_inode.=.d_inode(old |
28c80 | 5f 64 65 6e 74 72 79 29 3b 0a 09 5f 5f 6c 65 33 32 20 6f 6c 64 5f 6e 77 61 74 74 72 20 3d 20 4e | _dentry);..__le32.old_nwattr.=.N |
28ca0 | 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 5f 5f | CP_FINFO(old_inode)->nwattr;..__ |
28cc0 | 6c 65 33 32 20 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 30 3b 20 2f 2a 20 73 68 75 74 20 63 6f 6d | le32.new_nwattr.=.0;./*.shut.com |
28ce0 | 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 20 2a 2f 0a 09 69 6e 74 20 6f 6c 64 5f 6e 77 61 74 74 72 | piler.warning.*/..int.old_nwattr |
28d00 | 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 09 69 6e 74 20 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 | _changed.=.0;..int.new_nwattr_ch |
28d20 | 61 6e 67 65 64 20 3d 20 30 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c 20 73 69 | anged.=.0;...memset(&info,.0,.si |
28d40 | 7a 65 6f 66 28 69 6e 66 6f 29 29 3b 0a 09 0a 20 20 20 20 20 20 20 20 2f 2a 20 72 65 6d 6f 76 65 | zeof(info));.........../*.remove |
28d60 | 20 74 68 65 20 52 65 61 64 2d 4f 6e 6c 79 20 66 6c 61 67 20 6f 6e 20 74 68 65 20 4e 57 20 73 65 | .the.Read-Only.flag.on.the.NW.se |
28d80 | 72 76 65 72 20 2a 2f 0a 0a 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f | rver.*/...info.attributes.=.old_ |
28da0 | 6e 77 61 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 | nwattr.&.~(aRONLY|aRENAMEINHIBIT |
28dc0 | 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f | |aDELETEINHIBIT);..res2.=.ncp_mo |
28de0 | 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 | dify_file_or_subdir_dos_info_pat |
28e00 | 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 69 6e 6f 64 65 29 2c 20 6f 6c 64 5f 69 6e 6f | h(NCP_SERVER(old_inode),.old_ino |
28e20 | 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b | de,.NULL,.DM_ATTRIBUTES,.&info); |
28e40 | 0a 09 69 66 20 28 21 72 65 73 32 29 0a 09 09 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 | ..if.(!res2)...old_nwattr_change |
28e60 | 64 20 3d 20 31 3b 0a 09 69 66 20 28 6e 65 77 5f 64 65 6e 74 72 79 20 26 26 20 64 5f 72 65 61 6c | d.=.1;..if.(new_dentry.&&.d_real |
28e80 | 6c 79 5f 69 73 5f 70 6f 73 69 74 69 76 65 28 6e 65 77 5f 64 65 6e 74 72 79 29 29 20 7b 0a 09 09 | ly_is_positive(new_dentry)).{... |
28ea0 | 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 6e | new_nwattr.=.NCP_FINFO(d_inode(n |
28ec0 | 65 77 5f 64 65 6e 74 72 79 29 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 | ew_dentry))->nwattr;...info.attr |
28ee0 | 69 62 75 74 65 73 20 3d 20 6e 65 77 5f 6e 77 61 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 | ibutes.=.new_nwattr.&.~(aRONLY|a |
28f00 | 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 09 | RENAMEINHIBIT|aDELETEINHIBIT);.. |
28f20 | 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 | .res2.=.ncp_modify_file_or_subdi |
28f40 | 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6e 65 77 5f 64 | r_dos_info_path(NCP_SERVER(new_d |
28f60 | 69 72 29 2c 20 6e 65 77 5f 64 69 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 2c 20 44 4d 5f 41 54 54 52 | ir),.new_dir,._new_name,.DM_ATTR |
28f80 | 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 21 72 65 73 32 29 0a 09 09 09 | IBUTES,.&info);...if.(!res2).... |
28fa0 | 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 31 3b 0a 09 7d 0a 20 20 20 20 20 | new_nwattr_changed.=.1;..}...... |
28fc0 | 20 20 20 2f 2a 20 6e 6f 77 20 74 72 79 20 61 67 61 69 6e 20 74 68 65 20 72 65 6e 61 6d 65 20 6f | .../*.now.try.again.the.rename.o |
28fe0 | 70 65 72 61 74 69 6f 6e 20 2a 2f 0a 09 2f 2a 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 73 6f 6d 65 | peration.*/../*.but.only.if.some |
29000 | 74 68 69 6e 67 20 72 65 61 6c 6c 79 20 68 61 70 70 65 6e 65 64 20 2a 2f 0a 09 69 66 20 28 6e 65 | thing.really.happened.*/..if.(ne |
29020 | 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 7c 7c 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 | w_nwattr_changed.||.old_nwattr_c |
29040 | 68 61 6e 67 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 73 20 3d 20 6e 63 70 5f 72 65 6e | hanged).{..........res.=.ncp_ren |
29060 | 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 | _or_mov_file_or_subdir(NCP_SERVE |
29080 | 52 28 6f 6c 64 5f 64 69 72 29 2c 0a 20 20 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 | R(old_dir),..................... |
290a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 5f 64 69 72 | .........................old_dir |
290c0 | 2c 20 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 20 20 | ,._old_name,.................... |
290e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 64 69 | ..........................new_di |
29100 | 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 20 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 | r,._new_name);..}...if.(res)...g |
29120 | 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b 0a 09 2f 2a 20 66 69 6c 65 20 77 61 73 20 73 75 63 63 65 | oto.leave_me;../*.file.was.succe |
29140 | 73 73 66 75 6c 6c 79 20 72 65 6e 61 6d 65 64 2c 20 73 6f 3a 0a 09 20 20 20 64 6f 20 6e 6f 74 20 | ssfully.renamed,.so:.....do.not. |
29160 | 73 65 74 20 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 6f 6c 64 20 66 69 6c 65 20 2d 20 69 74 20 | set.attributes.on.old.file.-.it. |
29180 | 6e 6f 20 6c 6f 6e 67 65 72 20 65 78 69 73 74 73 0a 09 20 20 20 63 6f 70 79 20 61 74 74 72 69 62 | no.longer.exists.....copy.attrib |
291a0 | 75 74 65 73 20 66 72 6f 6d 20 6f 6c 64 20 66 69 6c 65 20 74 6f 20 6e 65 77 20 2a 2f 0a 09 6e 65 | utes.from.old.file.to.new.*/..ne |
291c0 | 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 | w_nwattr_changed.=.old_nwattr_ch |
291e0 | 61 6e 67 65 64 3b 0a 09 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 3b | anged;..new_nwattr.=.old_nwattr; |
29200 | 0a 09 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 09 0a 6c 65 61 76 | ..old_nwattr_changed.=.0;...leav |
29220 | 65 5f 6d 65 3a 3b 0a 09 69 66 20 28 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 29 20 | e_me:;..if.(old_nwattr_changed). |
29240 | 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 | {...info.attributes.=.old_nwattr |
29260 | 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 | ;...res2.=.ncp_modify_file_or_su |
29280 | 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c | bdir_dos_info_path(NCP_SERVER(ol |
292a0 | 64 5f 69 6e 6f 64 65 29 2c 20 6f 6c 64 5f 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 | d_inode),.old_inode,.NULL,.DM_AT |
292c0 | 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 2f 2a 20 69 67 6e 6f 72 65 20 65 72 | TRIBUTES,.&info);.../*.ignore.er |
292e0 | 72 6f 72 73 20 2a 2f 0a 09 7d 0a 09 69 66 20 28 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 | rors.*/..}..if.(new_nwattr_chang |
29300 | 65 64 29 09 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6e 65 77 5f 6e 77 | ed).{...info.attributes.=.new_nw |
29320 | 61 74 74 72 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f | attr;...res2.=.ncp_modify_file_o |
29340 | 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 | r_subdir_dos_info_path(NCP_SERVE |
29360 | 52 28 6e 65 77 5f 64 69 72 29 2c 20 6e 65 77 5f 64 69 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 2c 20 | R(new_dir),.new_dir,._new_name,. |
29380 | 44 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 2f 2a 20 69 67 6e 6f | DM_ATTRIBUTES,.&info);.../*.igno |
293a0 | 72 65 20 65 72 72 6f 72 73 20 2a 2f 0a 09 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 28 72 | re.errors.*/..}.........return(r |
293c0 | 65 73 29 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 | es);.}.#endif./*.CONFIG_NCPFS_ST |
293e0 | 52 4f 4e 47 20 2a 2f 0a 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 6c 6f 6f 6b 75 70 5f | RONG.*/...static.int.ncp_lookup_ |
29400 | 76 61 6c 69 64 61 74 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 | validate(struct.dentry.*dentry,. |
29420 | 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 | unsigned.int.flags).{..struct.nc |
29440 | 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 | p_server.*server;..struct.dentry |
29460 | 20 2a 70 61 72 65 6e 74 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 3b 0a 09 73 | .*parent;..struct.inode.*dir;..s |
29480 | 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 09 69 6e 74 | truct.ncp_entry_info.finfo;..int |
294a0 | 20 72 65 73 2c 20 76 61 6c 20 3d 20 30 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 | .res,.val.=.0,.len;..__u8.__name |
294c0 | 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 69 66 20 28 64 65 6e 74 | [NCP_MAXPATHLEN.+.1];...if.(dent |
294e0 | 72 79 20 3d 3d 20 64 65 6e 74 72 79 2d 3e 64 5f 73 62 2d 3e 73 5f 72 6f 6f 74 29 0a 09 09 72 65 | ry.==.dentry->d_sb->s_root)...re |
29500 | 74 75 72 6e 20 31 3b 0a 0a 09 69 66 20 28 66 6c 61 67 73 20 26 20 4c 4f 4f 4b 55 50 5f 52 43 55 | turn.1;...if.(flags.&.LOOKUP_RCU |
29520 | 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 43 48 49 4c 44 3b 0a 0a 09 70 61 72 65 6e 74 20 3d 20 64 | )...return.-ECHILD;...parent.=.d |
29540 | 67 65 74 5f 70 61 72 65 6e 74 28 64 65 6e 74 72 79 29 3b 0a 09 64 69 72 20 3d 20 64 5f 69 6e 6f | get_parent(dentry);..dir.=.d_ino |
29560 | 64 65 28 70 61 72 65 6e 74 29 3b 0a 0a 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 | de(parent);...if.(d_really_is_ne |
29580 | 67 61 74 69 76 65 28 64 65 6e 74 72 79 29 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b | gative(dentry))...goto.finished; |
295a0 | 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 0a 09 2f | ...server.=.NCP_SERVER(dir);.../ |
295c0 | 2a 0a 09 20 2a 20 49 6e 73 70 69 72 65 64 20 62 79 20 73 6d 62 66 73 3a 0a 09 20 2a 20 54 68 65 | *...*.Inspired.by.smbfs:...*.The |
295e0 | 20 64 65 66 61 75 6c 74 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 | .default.validation.is.based.on. |
29600 | 64 65 6e 74 72 79 20 61 67 65 3a 0a 09 20 2a 20 57 65 20 73 65 74 20 74 68 65 20 6d 61 78 20 61 | dentry.age:...*.We.set.the.max.a |
29620 | 67 65 20 61 74 20 6d 6f 75 6e 74 20 74 69 6d 65 2e 20 20 28 42 75 74 20 65 61 63 68 0a 09 20 2a | ge.at.mount.time...(But.each...* |
29640 | 20 73 75 63 63 65 73 73 66 75 6c 20 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 72 65 6e 65 77 73 | .successful.server.lookup.renews |
29660 | 20 74 68 65 20 74 69 6d 65 73 74 61 6d 70 2e 29 0a 09 20 2a 2f 0a 09 76 61 6c 20 3d 20 4e 43 50 | .the.timestamp.)...*/..val.=.NCP |
29680 | 5f 54 45 53 54 5f 41 47 45 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 69 66 20 28 | _TEST_AGE(server,.dentry);..if.( |
296a0 | 76 61 6c 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 | val)...goto.finished;...ncp_dbg( |
296c0 | 32 2c 20 22 25 70 64 32 20 6e 6f 74 20 76 61 6c 69 64 2c 20 61 67 65 3d 25 6c 64 2c 20 73 65 72 | 2,."%pd2.not.valid,.age=%ld,.ser |
296e0 | 76 65 72 20 6c 6f 6f 6b 75 70 5c 6e 22 2c 0a 09 09 64 65 6e 74 72 79 2c 20 4e 43 50 5f 47 45 54 | ver.lookup\n",...dentry,.NCP_GET |
29700 | 5f 41 47 45 28 64 65 6e 74 72 79 29 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f | _AGE(dentry));...len.=.sizeof(__ |
29720 | 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 64 | name);..if.(ncp_is_server_root(d |
29740 | 69 72 29 29 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 | ir)).{...res.=.ncp_io2vol(server |
29760 | 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e | ,.__name,.&len,.dentry->d_name.n |
29780 | 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 31 29 | ame,......dentry->d_name.len,.1) |
297a0 | 3b 0a 09 09 69 66 20 28 21 72 65 73 29 20 7b 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6c 6f 6f | ;...if.(!res).{....res.=.ncp_loo |
297c0 | 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e | kup_volume(server,.__name,.&(fin |
297e0 | 66 6f 2e 69 29 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 09 6e 63 70 5f 75 70 64 | fo.i));....if.(!res).....ncp_upd |
29800 | 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 6e 66 | ate_known_namespace(server,.finf |
29820 | 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 | o.i.volNumber,.NULL);...}..}.els |
29840 | 65 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f | e.{...res.=.ncp_io2vol(server,._ |
29860 | 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 | _name,.&len,.dentry->d_name.name |
29880 | 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f | ,......dentry->d_name.len,.!ncp_ |
298a0 | 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 | preserve_case(dir));...if.(!res) |
298c0 | 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 | ....res.=.ncp_obtain_info(server |
298e0 | 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 | ,.dir,.__name,.&(finfo.i));..}.. |
29900 | 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 20 3d 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 | finfo.volume.=.finfo.i.volNumber |
29920 | 3b 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 6c 6f 6f 6b 65 64 20 66 6f 72 20 25 70 64 2f 25 73 | ;..ncp_dbg(2,."looked.for.%pd/%s |
29940 | 2c 20 72 65 73 3d 25 64 5c 6e 22 2c 0a 09 09 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 2c | ,.res=%d\n",...dentry->d_parent, |
29960 | 20 5f 5f 6e 61 6d 65 2c 20 72 65 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 64 69 64 | .__name,.res);../*...*.If.we.did |
29980 | 6e 27 74 20 66 69 6e 64 20 69 74 2c 20 6f 72 20 69 66 20 69 74 20 68 61 73 20 61 20 64 69 66 66 | n't.find.it,.or.if.it.has.a.diff |
299a0 | 65 72 65 6e 74 20 64 69 72 45 6e 74 4e 75 6d 20 74 6f 0a 09 20 2a 20 77 68 61 74 20 77 65 20 72 | erent.dirEntNum.to...*.what.we.r |
299c0 | 65 6d 65 6d 62 65 72 2c 20 69 74 27 73 20 6e 6f 74 20 76 61 6c 69 64 20 61 6e 79 20 6d 6f 72 65 | emember,.it's.not.valid.any.more |
299e0 | 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 21 72 65 73 29 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f | ....*/..if.(!res).{...struct.ino |
29a00 | 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 09 | de.*inode.=.d_inode(dentry);.... |
29a20 | 69 6e 6f 64 65 5f 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 09 69 66 20 28 66 69 6e 66 6f 2e 69 | inode_lock(inode);...if.(finfo.i |
29a40 | 2e 64 69 72 45 6e 74 4e 75 6d 20 3d 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e | .dirEntNum.==.NCP_FINFO(inode)-> |
29a60 | 64 69 72 45 6e 74 4e 75 6d 29 20 7b 0a 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 64 | dirEntNum).{....ncp_new_dentry(d |
29a80 | 65 6e 74 72 79 29 3b 0a 09 09 09 76 61 6c 3d 31 3b 0a 09 09 7d 20 65 6c 73 65 0a 09 09 09 6e 63 | entry);....val=1;...}.else....nc |
29aa0 | 70 5f 64 62 67 28 32 2c 20 22 66 6f 75 6e 64 2c 20 62 75 74 20 64 69 72 45 6e 74 4e 75 6d 20 63 | p_dbg(2,."found,.but.dirEntNum.c |
29ac0 | 68 61 6e 67 65 64 5c 6e 22 29 3b 0a 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 | hanged\n");....ncp_update_inode2 |
29ae0 | 28 69 6e 6f 64 65 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 | (inode,.&finfo);...inode_unlock( |
29b00 | 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 64 62 67 28 32 | inode);..}..finished:..ncp_dbg(2 |
29b20 | 2c 20 22 72 65 73 75 6c 74 3d 25 64 5c 6e 22 2c 20 76 61 6c 29 3b 0a 09 64 70 75 74 28 70 61 72 | ,."result=%d\n",.val);..dput(par |
29b40 | 65 6e 74 29 3b 0a 09 72 65 74 75 72 6e 20 76 61 6c 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 74 69 6d | ent);..return.val;.}..static.tim |
29b60 | 65 5f 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6d 74 69 6d 65 28 73 74 72 75 63 74 20 64 65 6e 74 | e_t.ncp_obtain_mtime(struct.dent |
29b80 | 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f | ry.*dentry).{..struct.inode.*ino |
29ba0 | 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 | de.=.d_inode(dentry);..struct.nc |
29bc0 | 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e | p_server.*server.=.NCP_SERVER(in |
29be0 | 6f 64 65 29 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 69 3b 0a | ode);..struct.nw_info_struct.i;. |
29c00 | 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 20 7c 7c | ..if.(!ncp_conn_valid(server).|| |
29c20 | 20 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 69 6e 6f 64 65 29 29 0a 09 09 72 65 | .ncp_is_server_root(inode))...re |
29c40 | 74 75 72 6e 20 30 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 | turn.0;...if.(ncp_obtain_info(se |
29c60 | 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 26 69 29 29 0a 09 09 72 65 74 75 72 6e | rver,.inode,.NULL,.&i))...return |
29c80 | 20 30 3b 0a 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 69 | .0;...return.ncp_date_dos2unix(i |
29ca0 | 2e 6d 6f 64 69 66 79 54 69 6d 65 2c 20 69 2e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 7d 0a 0a 73 | .modifyTime,.i.modifyDate);.}..s |
29cc0 | 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 | tatic.inline.void.ncp_invalidate |
29ce0 | 5f 64 69 72 63 61 63 68 65 5f 65 6e 74 72 69 65 73 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 | _dircache_entries(struct.dentry. |
29d00 | 2a 70 61 72 65 6e 74 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 | *parent).{..struct.ncp_server.*s |
29d20 | 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 5f 69 6e 6f 64 65 28 70 61 72 65 6e | erver.=.NCP_SERVER(d_inode(paren |
29d40 | 74 29 29 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 3b 0a 0a 09 73 | t));..struct.dentry.*dentry;...s |
29d60 | 70 69 6e 5f 6c 6f 63 6b 28 26 70 61 72 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 6c 69 73 74 | pin_lock(&parent->d_lock);..list |
29d80 | 5f 66 6f 72 5f 65 61 63 68 5f 65 6e 74 72 79 28 64 65 6e 74 72 79 2c 20 26 70 61 72 65 6e 74 2d | _for_each_entry(dentry,.&parent- |
29da0 | 3e 64 5f 73 75 62 64 69 72 73 2c 20 64 5f 63 68 69 6c 64 29 20 7b 0a 09 09 64 65 6e 74 72 79 2d | >d_subdirs,.d_child).{...dentry- |
29dc0 | 3e 64 5f 66 73 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 0a 09 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 | >d_fsdata.=.NULL;...ncp_age_dent |
29de0 | 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 09 73 70 69 6e 5f 75 6e 6c | ry(server,.dentry);..}..spin_unl |
29e00 | 6f 63 6b 28 26 70 61 72 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 | ock(&parent->d_lock);.}..static. |
29e20 | 69 6e 74 20 6e 63 70 5f 72 65 61 64 64 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c | int.ncp_readdir(struct.file.*fil |
29e40 | 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 29 0a 7b 0a 09 73 | e,.struct.dir_context.*ctx).{..s |
29e60 | 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 20 3d 20 66 69 6c 65 2d 3e 66 5f 70 | truct.dentry.*dentry.=.file->f_p |
29e80 | 61 74 68 2e 64 65 6e 74 72 79 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 | ath.dentry;..struct.inode.*inode |
29ea0 | 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 70 61 67 65 | .=.d_inode(dentry);..struct.page |
29ec0 | 20 2a 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 | .*page.=.NULL;..struct.ncp_serve |
29ee0 | 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 | r.*server.=.NCP_SERVER(inode);.. |
29f00 | 75 6e 69 6f 6e 20 20 6e 63 70 5f 64 69 72 5f 63 61 63 68 65 20 2a 63 61 63 68 65 20 3d 20 4e 55 | union..ncp_dir_cache.*cache.=.NU |
29f20 | 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 | LL;..struct.ncp_cache_control.ct |
29f40 | 6c 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 2c 20 6d 74 69 6d 65 5f 76 61 6c 69 64 20 3d 20 30 3b | l;..int.result,.mtime_valid.=.0; |
29f60 | 0a 09 74 69 6d 65 5f 74 20 6d 74 69 6d 65 20 3d 20 30 3b 0a 0a 09 63 74 6c 2e 70 61 67 65 20 20 | ..time_t.mtime.=.0;...ctl.page.. |
29f80 | 3d 20 4e 55 4c 4c 3b 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 0a 09 6e 63 70 | =.NULL;..ctl.cache.=.NULL;...ncp |
29fa0 | 5f 64 62 67 28 32 2c 20 22 72 65 61 64 69 6e 67 20 25 70 44 32 2c 20 70 6f 73 3d 25 64 5c 6e 22 | _dbg(2,."reading.%pD2,.pos=%d\n" |
29fc0 | 2c 20 66 69 6c 65 2c 20 28 69 6e 74 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 0a 09 72 65 73 75 6c 74 | ,.file,.(int)ctx->pos);...result |
29fe0 | 20 3d 20 2d 45 49 4f 3b 0a 09 2f 2a 20 44 6f 20 6e 6f 74 20 67 65 6e 65 72 61 74 65 20 27 2e 27 | .=.-EIO;../*.Do.not.generate.'.' |
2a000 | 20 61 6e 64 20 27 2e 2e 27 20 77 68 65 6e 20 73 65 72 76 65 72 20 69 73 20 64 65 61 64 2e 20 2a | .and.'..'.when.server.is.dead..* |
2a020 | 2f 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 29 0a | /..if.(!ncp_conn_valid(server)). |
2a040 | 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 69 66 20 28 21 | ..goto.out;...result.=.0;..if.(! |
2a060 | 64 69 72 5f 65 6d 69 74 5f 64 6f 74 73 28 66 69 6c 65 2c 20 63 74 78 29 29 0a 09 09 67 6f 74 6f | dir_emit_dots(file,.ctx))...goto |
2a080 | 20 6f 75 74 3b 0a 0a 09 70 61 67 65 20 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 | .out;...page.=.grab_cache_page(& |
2a0a0 | 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2c 20 30 29 3b 0a 09 69 66 20 28 21 70 61 67 65 29 0a 09 | inode->i_data,.0);..if.(!page).. |
2a0c0 | 09 67 6f 74 6f 20 72 65 61 64 5f 72 65 61 6c 6c 79 3b 0a 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d | .goto.read_really;...ctl.cache.= |
2a0e0 | 20 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 70 61 67 65 29 3b 0a 09 63 74 6c 2e 68 65 61 64 20 20 | .cache.=.kmap(page);..ctl.head.. |
2a100 | 3d 20 63 61 63 68 65 2d 3e 68 65 61 64 3b 0a 0a 09 69 66 20 28 21 50 61 67 65 55 70 74 6f 64 61 | =.cache->head;...if.(!PageUptoda |
2a120 | 74 65 28 70 61 67 65 29 20 7c 7c 20 21 63 74 6c 2e 68 65 61 64 2e 65 6f 66 29 0a 09 09 67 6f 74 | te(page).||.!ctl.head.eof)...got |
2a140 | 6f 20 69 6e 69 74 5f 63 61 63 68 65 3b 0a 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3d 3d 20 | o.init_cache;...if.(ctx->pos.==. |
2a160 | 32 29 20 7b 0a 09 09 69 66 20 28 6a 69 66 66 69 65 73 20 2d 20 63 74 6c 2e 68 65 61 64 2e 74 69 | 2).{...if.(jiffies.-.ctl.head.ti |
2a180 | 6d 65 20 3e 3d 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 73 65 72 76 65 72 29 29 0a 09 09 09 67 6f | me.>=.NCP_MAX_AGE(server))....go |
2a1a0 | 74 6f 20 69 6e 69 74 5f 63 61 63 68 65 3b 0a 0a 09 09 6d 74 69 6d 65 20 3d 20 6e 63 70 5f 6f 62 | to.init_cache;....mtime.=.ncp_ob |
2a1c0 | 74 61 69 6e 5f 6d 74 69 6d 65 28 64 65 6e 74 72 79 29 3b 0a 09 09 6d 74 69 6d 65 5f 76 61 6c 69 | tain_mtime(dentry);...mtime_vali |
2a1e0 | 64 20 3d 20 31 3b 0a 09 09 69 66 20 28 28 21 6d 74 69 6d 65 29 20 7c 7c 20 28 6d 74 69 6d 65 20 | d.=.1;...if.((!mtime).||.(mtime. |
2a200 | 21 3d 20 63 74 6c 2e 68 65 61 64 2e 6d 74 69 6d 65 29 29 0a 09 09 09 67 6f 74 6f 20 69 6e 69 74 | !=.ctl.head.mtime))....goto.init |
2a220 | 5f 63 61 63 68 65 3b 0a 09 7d 0a 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3e 20 63 74 6c 2e | _cache;..}...if.(ctx->pos.>.ctl. |
2a240 | 68 65 61 64 2e 65 6e 64 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 63 74 6c | head.end)...goto.finished;...ctl |
2a260 | 2e 66 70 6f 73 20 3d 20 63 74 78 2d 3e 70 6f 73 20 2b 20 28 4e 43 50 5f 44 49 52 43 41 43 48 45 | .fpos.=.ctx->pos.+.(NCP_DIRCACHE |
2a280 | 5f 53 54 41 52 54 20 2d 20 32 29 3b 0a 09 63 74 6c 2e 6f 66 73 20 20 3d 20 63 74 6c 2e 66 70 6f | _START.-.2);..ctl.ofs..=.ctl.fpo |
2a2a0 | 73 20 2f 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 3b 0a 09 63 74 6c 2e 69 64 78 20 | s./.NCP_DIRCACHE_SIZE;..ctl.idx. |
2a2c0 | 20 3d 20 63 74 6c 2e 66 70 6f 73 20 25 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 3b | .=.ctl.fpos.%.NCP_DIRCACHE_SIZE; |
2a2e0 | 0a 0a 09 66 6f 72 20 28 3b 3b 29 20 7b 0a 09 09 69 66 20 28 63 74 6c 2e 6f 66 73 20 21 3d 20 30 | ...for.(;;).{...if.(ctl.ofs.!=.0 |
2a300 | 29 20 7b 0a 09 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 66 69 6e 64 5f 6c 6f 63 6b 5f 70 61 67 65 | ).{....ctl.page.=.find_lock_page |
2a320 | 28 26 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2c 20 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 09 69 66 | (&inode->i_data,.ctl.ofs);....if |
2a340 | 20 28 21 63 74 6c 2e 70 61 67 65 29 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 | .(!ctl.page).....goto.invalid_ca |
2a360 | 63 68 65 3b 0a 09 09 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 | che;....ctl.cache.=.kmap(ctl.pag |
2a380 | 65 29 3b 0a 09 09 09 69 66 20 28 21 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 | e);....if.(!PageUptodate(ctl.pag |
2a3a0 | 65 29 29 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 09 7d 0a | e)).....goto.invalid_cache;...}. |
2a3c0 | 09 09 77 68 69 6c 65 20 28 63 74 6c 2e 69 64 78 20 3c 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f | ..while.(ctl.idx.<.NCP_DIRCACHE_ |
2a3e0 | 53 49 5a 45 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 3b 0a | SIZE).{....struct.dentry.*dent;. |
2a400 | 09 09 09 62 6f 6f 6c 20 6f 76 65 72 3b 0a 0a 09 09 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e | ...bool.over;.....spin_lock(&den |
2a420 | 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 21 28 4e 43 50 5f 46 49 4e 46 4f | try->d_lock);....if.(!(NCP_FINFO |
2a440 | 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 26 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 29 | (inode)->flags.&.NCPI_DIR_CACHE) |
2a460 | 29 20 7b 20 0a 09 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f | ).{......spin_unlock(&dentry->d_ |
2a480 | 6c 6f 63 6b 29 3b 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 | lock);.....goto.invalid_cache;.. |
2a4a0 | 09 09 7d 0a 09 09 09 64 65 6e 74 20 3d 20 63 74 6c 2e 63 61 63 68 65 2d 3e 64 65 6e 74 72 79 5b | ..}....dent.=.ctl.cache->dentry[ |
2a4c0 | 63 74 6c 2e 69 64 78 5d 3b 0a 09 09 09 69 66 20 28 75 6e 6c 69 6b 65 6c 79 28 21 6c 6f 63 6b 72 | ctl.idx];....if.(unlikely(!lockr |
2a4e0 | 65 66 5f 67 65 74 5f 6e 6f 74 5f 64 65 61 64 28 26 64 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 72 65 66 | ef_get_not_dead(&dent->d_lockref |
2a500 | 29 29 29 20 7b 0a 09 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 | ))).{.....spin_unlock(&dentry->d |
2a520 | 5f 6c 6f 63 6b 29 3b 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a | _lock);.....goto.invalid_cache;. |
2a540 | 09 09 09 7d 0a 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c | ...}....spin_unlock(&dentry->d_l |
2a560 | 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 76 | ock);....if.(d_really_is_negativ |
2a580 | 65 28 64 65 6e 74 29 29 20 7b 0a 09 09 09 09 64 70 75 74 28 64 65 6e 74 29 3b 0a 09 09 09 09 67 | e(dent)).{.....dput(dent);.....g |
2a5a0 | 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 09 09 7d 0a 09 09 09 6f 76 65 72 20 | oto.invalid_cache;....}....over. |
2a5c0 | 3d 20 21 64 69 72 5f 65 6d 69 74 28 63 74 78 2c 20 64 65 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 | =.!dir_emit(ctx,.dent->d_name.na |
2a5e0 | 6d 65 2c 0a 09 09 09 09 09 64 65 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 09 09 | me,......dent->d_name.len,...... |
2a600 | 64 5f 69 6e 6f 64 65 28 64 65 6e 74 29 2d 3e 69 5f 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e | d_inode(dent)->i_ino,.DT_UNKNOWN |
2a620 | 29 3b 0a 09 09 09 64 70 75 74 28 64 65 6e 74 29 3b 0a 09 09 09 69 66 20 28 6f 76 65 72 29 0a 09 | );....dput(dent);....if.(over).. |
2a640 | 09 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 2b 3d | ...goto.finished;....ctx->pos.+= |
2a660 | 20 31 3b 0a 09 09 09 63 74 6c 2e 69 64 78 20 2b 3d 20 31 3b 0a 09 09 09 69 66 20 28 63 74 78 2d | .1;....ctl.idx.+=.1;....if.(ctx- |
2a680 | 3e 70 6f 73 20 3e 20 63 74 6c 2e 68 65 61 64 2e 65 6e 64 29 0a 09 09 09 09 67 6f 74 6f 20 66 69 | >pos.>.ctl.head.end).....goto.fi |
2a6a0 | 6e 69 73 68 65 64 3b 0a 09 09 7d 0a 09 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 | nished;...}...if.(ctl.page).{... |
2a6c0 | 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 53 65 74 50 61 67 65 55 70 74 | .kunmap(ctl.page);....SetPageUpt |
2a6e0 | 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 | odate(ctl.page);....unlock_page( |
2a700 | 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 | ctl.page);....put_page(ctl.page) |
2a720 | 3b 0a 09 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e | ;....ctl.page.=.NULL;...}...ctl. |
2a740 | 69 64 78 20 20 3d 20 30 3b 0a 09 09 63 74 6c 2e 6f 66 73 20 2b 3d 20 31 3b 0a 09 7d 0a 69 6e 76 | idx..=.0;...ctl.ofs.+=.1;..}.inv |
2a760 | 61 6c 69 64 5f 63 61 63 68 65 3a 0a 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 6b | alid_cache:..if.(ctl.page).{...k |
2a780 | 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 | unmap(ctl.page);...unlock_page(c |
2a7a0 | 74 6c 2e 70 61 67 65 29 3b 0a 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a | tl.page);...put_page(ctl.page);. |
2a7c0 | 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 7d 0a 09 63 74 6c 2e 63 61 63 68 65 | ..ctl.page.=.NULL;..}..ctl.cache |
2a7e0 | 20 3d 20 63 61 63 68 65 3b 0a 69 6e 69 74 5f 63 61 63 68 65 3a 0a 09 6e 63 70 5f 69 6e 76 61 6c | .=.cache;.init_cache:..ncp_inval |
2a800 | 69 64 61 74 65 5f 64 69 72 63 61 63 68 65 5f 65 6e 74 72 69 65 73 28 64 65 6e 74 72 79 29 3b 0a | idate_dircache_entries(dentry);. |
2a820 | 09 69 66 20 28 21 6d 74 69 6d 65 5f 76 61 6c 69 64 29 20 7b 0a 09 09 6d 74 69 6d 65 20 3d 20 6e | .if.(!mtime_valid).{...mtime.=.n |
2a840 | 63 70 5f 6f 62 74 61 69 6e 5f 6d 74 69 6d 65 28 64 65 6e 74 72 79 29 3b 0a 09 09 6d 74 69 6d 65 | cp_obtain_mtime(dentry);...mtime |
2a860 | 5f 76 61 6c 69 64 20 3d 20 31 3b 0a 09 7d 0a 09 63 74 6c 2e 68 65 61 64 2e 6d 74 69 6d 65 20 3d | _valid.=.1;..}..ctl.head.mtime.= |
2a880 | 20 6d 74 69 6d 65 3b 0a 09 63 74 6c 2e 68 65 61 64 2e 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 | .mtime;..ctl.head.time.=.jiffies |
2a8a0 | 3b 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6f 66 20 3d 20 30 3b 0a 09 63 74 6c 2e 66 70 6f 73 20 3d | ;..ctl.head.eof.=.0;..ctl.fpos.= |
2a8c0 | 20 32 3b 0a 09 63 74 6c 2e 6f 66 73 20 3d 20 30 3b 0a 09 63 74 6c 2e 69 64 78 20 3d 20 4e 43 50 | .2;..ctl.ofs.=.0;..ctl.idx.=.NCP |
2a8e0 | 5f 44 49 52 43 41 43 48 45 5f 53 54 41 52 54 3b 0a 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 30 | _DIRCACHE_START;..ctl.filled.=.0 |
2a900 | 3b 0a 09 63 74 6c 2e 76 61 6c 69 64 20 20 3d 20 31 3b 0a 72 65 61 64 5f 72 65 61 6c 6c 79 3a 0a | ;..ctl.valid..=.1;.read_really:. |
2a920 | 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 4e 43 | .spin_lock(&dentry->d_lock);..NC |
2a940 | 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 4e 43 50 49 5f 44 49 | P_FINFO(inode)->flags.|=.NCPI_DI |
2a960 | 52 5f 43 41 43 48 45 3b 0a 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 | R_CACHE;..spin_unlock(&dentry->d |
2a980 | 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 | _lock);..if.(ncp_is_server_root( |
2a9a0 | 69 6e 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 | inode)).{...ncp_read_volume_list |
2a9c0 | 28 66 69 6c 65 2c 20 63 74 78 2c 20 26 63 74 6c 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e | (file,.ctx,.&ctl);..}.else.{...n |
2a9e0 | 63 70 5f 64 6f 5f 72 65 61 64 64 69 72 28 66 69 6c 65 2c 20 63 74 78 2c 20 26 63 74 6c 29 3b 0a | cp_do_readdir(file,.ctx,.&ctl);. |
2aa00 | 09 7d 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6e 64 20 3d 20 63 74 6c 2e 66 70 6f 73 20 2d 20 31 3b | .}..ctl.head.end.=.ctl.fpos.-.1; |
2aa20 | 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6f 66 20 3d 20 63 74 6c 2e 76 61 6c 69 64 3b 0a 66 69 6e 69 | ..ctl.head.eof.=.ctl.valid;.fini |
2aa40 | 73 68 65 64 3a 0a 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 6b 75 6e 6d 61 70 28 | shed:..if.(ctl.page).{...kunmap( |
2aa60 | 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c | ctl.page);...SetPageUptodate(ctl |
2aa80 | 2e 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b | .page);...unlock_page(ctl.page); |
2aaa0 | 0a 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 7d 0a 09 69 66 20 28 70 | ...put_page(ctl.page);..}..if.(p |
2aac0 | 61 67 65 29 20 7b 0a 09 09 63 61 63 68 65 2d 3e 68 65 61 64 20 3d 20 63 74 6c 2e 68 65 61 64 3b | age).{...cache->head.=.ctl.head; |
2aae0 | 0a 09 09 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 | ...kunmap(page);...SetPageUptoda |
2ab00 | 74 65 28 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 | te(page);...unlock_page(page);.. |
2ab20 | 09 70 75 74 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e | .put_page(page);..}.out:..return |
2ab40 | 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 5f 70 72 | .result;.}..static.void.ncp_d_pr |
2ab60 | 75 6e 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 69 66 | une(struct.dentry.*dentry).{..if |
2ab80 | 20 28 21 64 65 6e 74 72 79 2d 3e 64 5f 66 73 64 61 74 61 29 09 2f 2a 20 6e 6f 74 20 72 65 66 65 | .(!dentry->d_fsdata)./*.not.refe |
2aba0 | 72 65 6e 63 65 64 20 66 72 6f 6d 20 70 61 67 65 20 63 61 63 68 65 20 2a 2f 0a 09 09 72 65 74 75 | renced.from.page.cache.*/...retu |
2abc0 | 72 6e 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 2d 3e 64 | rn;..NCP_FINFO(d_inode(dentry->d |
2abe0 | 5f 70 61 72 65 6e 74 29 29 2d 3e 66 6c 61 67 73 20 26 3d 20 7e 4e 43 50 49 5f 44 49 52 5f 43 41 | _parent))->flags.&=.~NCPI_DIR_CA |
2ac00 | 43 48 45 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 | CHE;.}..static.int.ncp_fill_cach |
2ac20 | 65 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f | e(struct.file.*file,.struct.dir_ |
2ac40 | 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 | context.*ctx,...struct.ncp_cache |
2ac60 | 5f 63 6f 6e 74 72 6f 6c 20 2a 63 74 72 6c 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 | _control.*ctrl,.struct.ncp_entry |
2ac80 | 5f 69 6e 66 6f 20 2a 65 6e 74 72 79 2c 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 63 68 69 6c 64 73 | _info.*entry,...int.inval_childs |
2aca0 | 29 0a 7b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 65 77 64 65 6e 74 2c 20 2a 64 65 | ).{..struct.dentry.*newdent,.*de |
2acc0 | 6e 74 72 79 20 3d 20 66 69 6c 65 2d 3e 66 5f 70 61 74 68 2e 64 65 6e 74 72 79 3b 0a 09 73 74 72 | ntry.=.file->f_path.dentry;..str |
2ace0 | 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 | uct.inode.*dir.=.d_inode(dentry) |
2ad00 | 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 6c 20 | ;..struct.ncp_cache_control.ctl. |
2ad20 | 3d 20 2a 63 74 72 6c 3b 0a 09 73 74 72 75 63 74 20 71 73 74 72 20 71 6e 61 6d 65 3b 0a 09 69 6e | =.*ctrl;..struct.qstr.qname;..in |
2ad40 | 74 20 76 61 6c 69 64 20 3d 20 30 3b 0a 09 69 6e 74 20 68 61 73 68 65 64 20 3d 20 30 3b 0a 09 69 | t.valid.=.0;..int.hashed.=.0;..i |
2ad60 | 6e 6f 5f 74 20 69 6e 6f 20 3d 20 30 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d | no_t.ino.=.0;..__u8.__name[NCP_M |
2ad80 | 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 71 6e 61 6d 65 2e 6c 65 6e 20 3d 20 73 69 | AXPATHLEN.+.1];...qname.len.=.si |
2ada0 | 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 76 6f 6c 32 69 6f 28 4e 43 | zeof(__name);..if.(ncp_vol2io(NC |
2adc0 | 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 5f 5f 6e 61 6d 65 2c 20 26 71 6e 61 6d 65 2e 6c 65 | P_SERVER(dir),.__name,.&qname.le |
2ade0 | 6e 2c 0a 09 09 09 65 6e 74 72 79 2d 3e 69 2e 65 6e 74 72 79 4e 61 6d 65 2c 20 65 6e 74 72 79 2d | n,....entry->i.entryName,.entry- |
2ae00 | 3e 69 2e 6e 61 6d 65 4c 65 6e 2c 0a 09 09 09 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 | >i.nameLen,....!ncp_preserve_ent |
2ae20 | 72 79 5f 63 61 73 65 28 64 69 72 2c 20 65 6e 74 72 79 2d 3e 69 2e 4e 53 43 72 65 61 74 6f 72 29 | ry_case(dir,.entry->i.NSCreator) |
2ae40 | 29 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 20 2f 2a 20 49 27 6d 20 6e 6f 74 20 73 75 72 65 20 2a | ))...return.1;./*.I'm.not.sure.* |
2ae60 | 2f 0a 0a 09 71 6e 61 6d 65 2e 6e 61 6d 65 20 3d 20 5f 5f 6e 61 6d 65 3b 0a 0a 09 6e 65 77 64 65 | /...qname.name.=.__name;...newde |
2ae80 | 6e 74 20 3d 20 64 5f 68 61 73 68 5f 61 6e 64 5f 6c 6f 6f 6b 75 70 28 64 65 6e 74 72 79 2c 20 26 | nt.=.d_hash_and_lookup(dentry,.& |
2aea0 | 71 6e 61 6d 65 29 3b 0a 09 69 66 20 28 49 53 5f 45 52 52 28 6e 65 77 64 65 6e 74 29 29 0a 09 09 | qname);..if.(IS_ERR(newdent))... |
2aec0 | 67 6f 74 6f 20 65 6e 64 5f 61 64 76 61 6e 63 65 3b 0a 09 69 66 20 28 21 6e 65 77 64 65 6e 74 29 | goto.end_advance;..if.(!newdent) |
2aee0 | 20 7b 0a 09 09 6e 65 77 64 65 6e 74 20 3d 20 64 5f 61 6c 6c 6f 63 28 64 65 6e 74 72 79 2c 20 26 | .{...newdent.=.d_alloc(dentry,.& |
2af00 | 71 6e 61 6d 65 29 3b 0a 09 09 69 66 20 28 21 6e 65 77 64 65 6e 74 29 0a 09 09 09 67 6f 74 6f 20 | qname);...if.(!newdent)....goto. |
2af20 | 65 6e 64 5f 61 64 76 61 6e 63 65 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 68 61 73 68 65 64 20 | end_advance;..}.else.{...hashed. |
2af40 | 3d 20 31 3b 0a 0a 09 09 2f 2a 20 49 66 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 69 74 79 20 63 | =.1;..../*.If.case.sensitivity.c |
2af60 | 68 61 6e 67 65 64 20 66 6f 72 20 74 68 69 73 20 76 6f 6c 75 6d 65 2c 20 61 6c 6c 20 65 6e 74 72 | hanged.for.this.volume,.all.entr |
2af80 | 69 65 73 20 62 65 6c 6f 77 20 74 68 69 73 20 6f 6e 65 0a 09 09 20 20 20 73 68 6f 75 6c 64 20 62 | ies.below.this.one......should.b |
2afa0 | 65 20 74 68 72 6f 77 6e 20 61 77 61 79 2e 20 20 54 68 69 73 20 65 6e 74 72 79 20 69 74 73 65 6c | e.thrown.away...This.entry.itsel |
2afc0 | 66 20 69 73 20 6e 6f 74 20 61 66 66 65 63 74 65 64 2c 20 61 73 20 69 74 73 20 63 61 73 65 0a 09 | f.is.not.affected,.as.its.case.. |
2afe0 | 09 20 20 20 73 65 6e 73 69 74 69 76 69 74 79 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 | ....sensitivity.is.controlled.by |
2b000 | 20 69 74 73 20 6f 77 6e 20 70 61 72 65 6e 74 2e 20 2a 2f 0a 09 09 69 66 20 28 69 6e 76 61 6c 5f | .its.own.parent..*/...if.(inval_ |
2b020 | 63 68 69 6c 64 73 29 0a 09 09 09 73 68 72 69 6e 6b 5f 64 63 61 63 68 65 5f 70 61 72 65 6e 74 28 | childs)....shrink_dcache_parent( |
2b040 | 6e 65 77 64 65 6e 74 29 3b 0a 0a 09 09 2f 2a 0a 09 09 20 2a 20 4e 65 74 57 61 72 65 27 73 20 4f | newdent);..../*....*.NetWare's.O |
2b060 | 53 32 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 63 61 73 65 20 70 72 65 73 65 72 76 69 6e 67 20 | S2.namespace.is.case.preserving. |
2b080 | 79 65 74 20 63 61 73 65 0a 09 09 20 2a 20 69 6e 73 65 6e 73 69 74 69 76 65 2e 20 20 53 6f 20 77 | yet.case....*.insensitive...So.w |
2b0a0 | 65 20 75 70 64 61 74 65 20 64 65 6e 74 72 79 27 73 20 6e 61 6d 65 20 61 73 20 72 65 63 65 69 76 | e.update.dentry's.name.as.receiv |
2b0c0 | 65 64 20 66 72 6f 6d 0a 09 09 20 2a 20 73 65 72 76 65 72 2e 20 50 61 72 65 6e 74 20 64 69 72 27 | ed.from....*.server..Parent.dir' |
2b0e0 | 73 20 69 5f 6d 75 74 65 78 20 69 73 20 6c 6f 63 6b 65 64 20 62 65 63 61 75 73 65 20 77 65 27 72 | s.i_mutex.is.locked.because.we'r |
2b100 | 65 20 69 6e 0a 09 09 20 2a 20 72 65 61 64 64 69 72 2e 0a 09 09 20 2a 2f 0a 09 09 64 65 6e 74 72 | e.in....*.readdir.....*/...dentr |
2b120 | 79 5f 75 70 64 61 74 65 5f 6e 61 6d 65 5f 63 61 73 65 28 6e 65 77 64 65 6e 74 2c 20 26 71 6e 61 | y_update_name_case(newdent,.&qna |
2b140 | 6d 65 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 | me);..}...if.(d_really_is_negati |
2b160 | 76 65 28 6e 65 77 64 65 6e 74 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 | ve(newdent)).{...struct.inode.*i |
2b180 | 6e 6f 64 65 3b 0a 0a 09 09 65 6e 74 72 79 2d 3e 6f 70 65 6e 65 64 20 3d 20 30 3b 0a 09 09 65 6e | node;....entry->opened.=.0;...en |
2b1a0 | 74 72 79 2d 3e 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 | try->ino.=.iunique(dir->i_sb,.2) |
2b1c0 | 3b 0a 09 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 62 2c 20 | ;...inode.=.ncp_iget(dir->i_sb,. |
2b1e0 | 65 6e 74 72 79 29 3b 0a 09 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 09 64 5f 69 6e 73 74 | entry);...if.(inode).{....d_inst |
2b200 | 61 6e 74 69 61 74 65 28 6e 65 77 64 65 6e 74 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 09 69 66 20 28 | antiate(newdent,.inode);....if.( |
2b220 | 21 68 61 73 68 65 64 29 0a 09 09 09 09 64 5f 72 65 68 61 73 68 28 6e 65 77 64 65 6e 74 29 3b 0a | !hashed).....d_rehash(newdent);. |
2b240 | 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d | ..}.else.{....spin_lock(&dentry- |
2b260 | 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 66 6c 61 | >d_lock);....NCP_FINFO(dir)->fla |
2b280 | 67 73 20 26 3d 20 7e 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 3b 0a 09 09 09 73 70 69 6e 5f 75 | gs.&=.~NCPI_DIR_CACHE;....spin_u |
2b2a0 | 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 7d 0a 09 7d 20 65 | nlock(&dentry->d_lock);...}..}.e |
2b2c0 | 6c 73 65 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f | lse.{...struct.inode.*inode.=.d_ |
2b2e0 | 69 6e 6f 64 65 28 6e 65 77 64 65 6e 74 29 3b 0a 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 5f 6e 65 | inode(newdent);....inode_lock_ne |
2b300 | 73 74 65 64 28 69 6e 6f 64 65 2c 20 49 5f 4d 55 54 45 58 5f 43 48 49 4c 44 29 3b 0a 09 09 6e 63 | sted(inode,.I_MUTEX_CHILD);...nc |
2b320 | 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 28 69 6e 6f 64 65 2c 20 65 6e 74 72 79 29 3b 0a 09 | p_update_inode2(inode,.entry);.. |
2b340 | 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 63 | .inode_unlock(inode);..}...if.(c |
2b360 | 74 6c 2e 69 64 78 20 3e 3d 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 29 20 7b 0a 09 | tl.idx.>=.NCP_DIRCACHE_SIZE).{.. |
2b380 | 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 | .if.(ctl.page).{....kunmap(ctl.p |
2b3a0 | 61 67 65 29 3b 0a 09 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 | age);....SetPageUptodate(ctl.pag |
2b3c0 | 65 29 3b 0a 09 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 | e);....unlock_page(ctl.page);... |
2b3e0 | 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e 63 | .put_page(ctl.page);...}...ctl.c |
2b400 | 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 63 74 6c 2e 69 64 78 20 20 2d 3d 20 4e 43 50 5f 44 | ache.=.NULL;...ctl.idx..-=.NCP_D |
2b420 | 49 52 43 41 43 48 45 5f 53 49 5a 45 3b 0a 09 09 63 74 6c 2e 6f 66 73 20 20 2b 3d 20 31 3b 0a 09 | IRCACHE_SIZE;...ctl.ofs..+=.1;.. |
2b440 | 09 63 74 6c 2e 70 61 67 65 20 20 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 64 69 | .ctl.page..=.grab_cache_page(&di |
2b460 | 72 2d 3e 69 5f 64 61 74 61 2c 20 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 69 66 20 28 63 74 6c 2e 70 | r->i_data,.ctl.ofs);...if.(ctl.p |
2b480 | 61 67 65 29 0a 09 09 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 | age)....ctl.cache.=.kmap(ctl.pag |
2b4a0 | 65 29 3b 0a 09 7d 0a 09 69 66 20 28 63 74 6c 2e 63 61 63 68 65 29 20 7b 0a 09 09 69 66 20 28 64 | e);..}..if.(ctl.cache).{...if.(d |
2b4c0 | 5f 72 65 61 6c 6c 79 5f 69 73 5f 70 6f 73 69 74 69 76 65 28 6e 65 77 64 65 6e 74 29 29 20 7b 0a | _really_is_positive(newdent)).{. |
2b4e0 | 09 09 09 6e 65 77 64 65 6e 74 2d 3e 64 5f 66 73 64 61 74 61 20 3d 20 6e 65 77 64 65 6e 74 3b 0a | ...newdent->d_fsdata.=.newdent;. |
2b500 | 09 09 09 63 74 6c 2e 63 61 63 68 65 2d 3e 64 65 6e 74 72 79 5b 63 74 6c 2e 69 64 78 5d 20 3d 20 | ...ctl.cache->dentry[ctl.idx].=. |
2b520 | 6e 65 77 64 65 6e 74 3b 0a 09 09 09 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 6e 65 77 64 65 6e | newdent;....ino.=.d_inode(newden |
2b540 | 74 29 2d 3e 69 5f 69 6e 6f 3b 0a 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 6e 65 77 | t)->i_ino;....ncp_new_dentry(new |
2b560 | 64 65 6e 74 29 3b 0a 09 09 7d 0a 20 09 09 76 61 6c 69 64 20 3d 20 31 3b 0a 09 7d 0a 09 64 70 75 | dent);...}....valid.=.1;..}..dpu |
2b580 | 74 28 6e 65 77 64 65 6e 74 29 3b 0a 65 6e 64 5f 61 64 76 61 6e 63 65 3a 0a 09 69 66 20 28 21 76 | t(newdent);.end_advance:..if.(!v |
2b5a0 | 61 6c 69 64 29 0a 09 09 63 74 6c 2e 76 61 6c 69 64 20 3d 20 30 3b 0a 09 69 66 20 28 21 63 74 6c | alid)...ctl.valid.=.0;..if.(!ctl |
2b5c0 | 2e 66 69 6c 6c 65 64 20 26 26 20 28 63 74 6c 2e 66 70 6f 73 20 3d 3d 20 63 74 78 2d 3e 70 6f 73 | .filled.&&.(ctl.fpos.==.ctx->pos |
2b5e0 | 29 29 20 7b 0a 09 09 69 66 20 28 21 69 6e 6f 29 0a 09 09 09 69 6e 6f 20 3d 20 69 75 6e 69 71 75 | )).{...if.(!ino)....ino.=.iuniqu |
2b600 | 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 3b 0a 09 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 | e(dir->i_sb,.2);...ctl.filled.=. |
2b620 | 21 64 69 72 5f 65 6d 69 74 28 63 74 78 2c 20 71 6e 61 6d 65 2e 6e 61 6d 65 2c 20 71 6e 61 6d 65 | !dir_emit(ctx,.qname.name,.qname |
2b640 | 2e 6c 65 6e 2c 0a 09 09 09 09 20 20 20 20 20 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e 29 3b | .len,..........ino,.DT_UNKNOWN); |
2b660 | 0a 09 09 69 66 20 28 21 63 74 6c 2e 66 69 6c 6c 65 64 29 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 | ...if.(!ctl.filled)....ctx->pos. |
2b680 | 2b 3d 20 31 3b 0a 09 7d 0a 09 63 74 6c 2e 66 70 6f 73 20 2b 3d 20 31 3b 0a 09 63 74 6c 2e 69 64 | +=.1;..}..ctl.fpos.+=.1;..ctl.id |
2b6a0 | 78 20 20 2b 3d 20 31 3b 0a 09 2a 63 74 72 6c 20 3d 20 63 74 6c 3b 0a 09 72 65 74 75 72 6e 20 28 | x..+=.1;..*ctrl.=.ctl;..return.( |
2b6c0 | 63 74 6c 2e 76 61 6c 69 64 20 7c 7c 20 21 63 74 6c 2e 66 69 6c 6c 65 64 29 3b 0a 7d 0a 0a 73 74 | ctl.valid.||.!ctl.filled);.}..st |
2b6e0 | 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 28 73 | atic.void.ncp_read_volume_list(s |
2b700 | 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e | truct.file.*file,.struct.dir_con |
2b720 | 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 | text.*ctx,....struct.ncp_cache_c |
2b740 | 6f 6e 74 72 6f 6c 20 2a 63 74 6c 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e | ontrol.*ctl).{..struct.inode.*in |
2b760 | 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 74 72 75 63 74 20 | ode.=.file_inode(file);..struct. |
2b780 | 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 | ncp_server.*server.=.NCP_SERVER( |
2b7a0 | 69 6e 6f 64 65 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 20 | inode);..struct.ncp_volume_info. |
2b7c0 | 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 65 6e 74 | info;..struct.ncp_entry_info.ent |
2b7e0 | 72 79 3b 0a 09 69 6e 74 20 69 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 70 6f 73 3d 25 6c | ry;..int.i;...ncp_dbg(1,."pos=%l |
2b800 | 64 5c 6e 22 2c 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a | d\n",.(unsigned.long)ctx->pos);. |
2b820 | 0a 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f | ..for.(i.=.0;.i.<.NCP_NUMBER_OF_ |
2b840 | 56 4f 4c 55 4d 45 53 3b 20 69 2b 2b 29 20 7b 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 64 65 6e 74 | VOLUMES;.i++).{...int.inval_dent |
2b860 | 72 79 3b 0a 0a 09 09 69 66 20 28 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 5f 77 | ry;....if.(ncp_get_volume_info_w |
2b880 | 69 74 68 5f 6e 75 6d 62 65 72 28 73 65 72 76 65 72 2c 20 69 2c 20 26 69 6e 66 6f 29 20 21 3d 20 | ith_number(server,.i,.&info).!=. |
2b8a0 | 30 29 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 69 66 20 28 21 73 74 72 6c 65 6e 28 69 6e 66 6f | 0)....return;...if.(!strlen(info |
2b8c0 | 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 6e | .volume_name))....continue;....n |
2b8e0 | 63 70 5f 64 62 67 28 31 2c 20 22 66 6f 75 6e 64 20 76 6f 6c 3a 20 25 73 5c 6e 22 2c 20 69 6e 66 | cp_dbg(1,."found.vol:.%s\n",.inf |
2b900 | 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 3b 0a 0a 09 09 69 66 20 28 6e 63 70 5f 6c 6f 6f 6b 75 | o.volume_name);....if.(ncp_looku |
2b920 | 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d | p_volume(server,.info.volume_nam |
2b940 | 65 2c 0a 09 09 09 09 09 26 65 6e 74 72 79 2e 69 29 29 20 7b 0a 09 09 09 6e 63 70 5f 64 62 67 28 | e,......&entry.i)).{....ncp_dbg( |
2b960 | 31 2c 20 22 63 6f 75 6c 64 20 6e 6f 74 20 6c 6f 6f 6b 75 70 20 76 6f 6c 20 25 73 5c 6e 22 2c 0a | 1,."could.not.lookup.vol.%s\n",. |
2b980 | 09 09 09 09 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 3b 0a 09 09 09 63 6f 6e 74 69 6e | ....info.volume_name);....contin |
2b9a0 | 75 65 3b 0a 09 09 7d 0a 09 09 69 6e 76 61 6c 5f 64 65 6e 74 72 79 20 3d 20 6e 63 70 5f 75 70 64 | ue;...}...inval_dentry.=.ncp_upd |
2b9c0 | 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 65 6e 74 72 | ate_known_namespace(server,.entr |
2b9e0 | 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 65 6e 74 72 79 2e 76 6f | y.i.volNumber,.NULL);...entry.vo |
2ba00 | 6c 75 6d 65 20 3d 20 65 6e 74 72 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 69 66 20 28 | lume.=.entry.i.volNumber;...if.( |
2ba20 | 21 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 65 28 66 69 6c 65 2c 20 63 74 78 2c 20 63 74 6c 2c 20 | !ncp_fill_cache(file,.ctx,.ctl,. |
2ba40 | 26 65 6e 74 72 79 2c 20 69 6e 76 61 6c 5f 64 65 6e 74 72 79 29 29 0a 09 09 09 72 65 74 75 72 6e | &entry,.inval_dentry))....return |
2ba60 | 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 64 6f 5f 72 65 61 64 64 | ;..}.}..static.void.ncp_do_readd |
2ba80 | 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 | ir(struct.file.*file,.struct.dir |
2baa0 | 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f | _context.*ctx,.......struct.ncp_ |
2bac0 | 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 2a 63 74 6c 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e | cache_control.*ctl).{..struct.in |
2bae0 | 6f 64 65 20 2a 64 69 72 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 74 | ode.*dir.=.file_inode(file);..st |
2bb00 | 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 | ruct.ncp_server.*server.=.NCP_SE |
2bb20 | 52 56 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 73 65 61 72 63 68 5f 73 65 71 | RVER(dir);..struct.nw_search_seq |
2bb40 | 75 65 6e 63 65 20 73 65 71 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 | uence.seq;..struct.ncp_entry_inf |
2bb60 | 6f 20 65 6e 74 72 79 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 76 6f 69 64 2a 20 62 75 66 3b 0a 09 | o.entry;..int.err;..void*.buf;.. |
2bb80 | 69 6e 74 20 6d 6f 72 65 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 0a 09 6e 63 70 | int.more;..size_t.bufsize;...ncp |
2bba0 | 5f 64 62 67 28 31 2c 20 22 25 70 44 32 2c 20 66 70 6f 73 3d 25 6c 64 5c 6e 22 2c 20 66 69 6c 65 | _dbg(1,."%pD2,.fpos=%ld\n",.file |
2bbc0 | 2c 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 09 6e 63 70 | ,.(unsigned.long)ctx->pos);..ncp |
2bbe0 | 5f 76 64 62 67 28 22 69 6e 69 74 20 25 70 44 2c 20 76 6f 6c 6e 75 6d 3d 25 64 2c 20 64 69 72 65 | _vdbg("init.%pD,.volnum=%d,.dire |
2bc00 | 6e 74 3d 25 75 5c 6e 22 2c 0a 09 09 20 66 69 6c 65 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 | nt=%u\n",....file,.NCP_FINFO(dir |
2bc20 | 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 | )->volNumber,.NCP_FINFO(dir)->di |
2bc40 | 72 45 6e 74 4e 75 6d 29 3b 0a 0a 09 65 72 72 20 3d 20 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 | rEntNum);...err.=.ncp_initialize |
2bc60 | 5f 73 65 61 72 63 68 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 26 73 65 71 29 3b 0a 09 69 66 20 | _search(server,.dir,.&seq);..if. |
2bc80 | 28 65 72 72 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 69 6e 69 74 20 66 61 69 6c 65 | (err).{...ncp_dbg(1,."init.faile |
2bca0 | 64 2c 20 65 72 72 3d 25 64 5c 6e 22 2c 20 65 72 72 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d | d,.err=%d\n",.err);...return;..} |
2bcc0 | 0a 09 2f 2a 20 57 65 20 4d 55 53 54 20 4e 4f 54 20 75 73 65 20 73 65 72 76 65 72 2d 3e 62 75 66 | ../*.We.MUST.NOT.use.server->buf |
2bce0 | 66 65 72 5f 73 69 7a 65 20 68 61 6e 64 73 68 61 6b 65 64 20 77 69 74 68 20 73 65 72 76 65 72 20 | fer_size.handshaked.with.server. |
2bd00 | 69 66 20 77 65 20 61 72 65 0a 09 20 20 20 75 73 69 6e 67 20 55 44 50 2c 20 61 73 20 66 6f 72 20 | if.we.are.....using.UDP,.as.for. |
2bd20 | 55 44 50 20 73 65 72 76 65 72 20 75 73 65 73 20 6d 61 78 2e 20 62 75 66 66 65 72 20 73 69 7a 65 | UDP.server.uses.max..buffer.size |
2bd40 | 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 0a 09 20 20 20 4d 54 55 2c 20 61 6e 64 20 66 6f 72 20 | .determined.by.....MTU,.and.for. |
2bd60 | 54 43 50 20 73 65 72 76 65 72 20 75 73 65 73 20 68 61 72 64 77 69 72 65 64 20 76 61 6c 75 65 20 | TCP.server.uses.hardwired.value. |
2bd80 | 36 35 4b 42 20 28 3d 3d 20 36 36 35 36 30 20 62 79 74 65 73 29 2e 20 0a 09 20 20 20 53 6f 20 77 | 65KB.(==.66560.bytes).......So.w |
2bda0 | 65 20 75 73 65 20 31 32 38 4b 42 2c 20 6a 75 73 74 20 74 6f 20 62 65 20 73 75 72 65 2c 20 61 73 | e.use.128KB,.just.to.be.sure,.as |
2bdc0 | 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20 68 6f 77 20 74 6f 20 6b 6e 6f 77 0a 09 20 20 | .there.is.no.way.how.to.know.... |
2bde0 | 20 74 68 69 73 20 76 61 6c 75 65 20 69 6e 20 61 64 76 61 6e 63 65 2e 20 2a 2f 0a 09 62 75 66 73 | .this.value.in.advance..*/..bufs |
2be00 | 69 7a 65 20 3d 20 31 33 31 30 37 32 3b 0a 09 62 75 66 20 3d 20 76 6d 61 6c 6c 6f 63 28 62 75 66 | ize.=.131072;..buf.=.vmalloc(buf |
2be20 | 73 69 7a 65 29 3b 0a 09 69 66 20 28 21 62 75 66 29 0a 09 09 72 65 74 75 72 6e 3b 0a 09 64 6f 20 | size);..if.(!buf)...return;..do. |
2be40 | 7b 0a 09 09 69 6e 74 20 63 6e 74 3b 0a 09 09 63 68 61 72 2a 20 72 70 6c 3b 0a 09 09 73 69 7a 65 | {...int.cnt;...char*.rpl;...size |
2be60 | 5f 74 20 72 70 6c 73 3b 0a 0a 09 09 65 72 72 20 3d 20 6e 63 70 5f 73 65 61 72 63 68 5f 66 6f 72 | _t.rpls;....err.=.ncp_search_for |
2be80 | 5f 66 69 6c 65 73 65 74 28 73 65 72 76 65 72 2c 20 26 73 65 71 2c 20 26 6d 6f 72 65 2c 20 26 63 | _fileset(server,.&seq,.&more,.&c |
2bea0 | 6e 74 2c 20 62 75 66 2c 20 62 75 66 73 69 7a 65 2c 20 26 72 70 6c 2c 20 26 72 70 6c 73 29 3b 0a | nt,.buf,.bufsize,.&rpl,.&rpls);. |
2bec0 | 09 09 69 66 20 28 65 72 72 29 09 09 2f 2a 20 45 72 72 6f 72 20 2a 2f 0a 09 09 09 62 72 65 61 6b | ..if.(err)../*.Error.*/....break |
2bee0 | 3b 0a 09 09 69 66 20 28 21 63 6e 74 29 09 09 2f 2a 20 70 72 65 76 65 6e 74 20 65 6e 64 6c 65 73 | ;...if.(!cnt)../*.prevent.endles |
2bf00 | 73 20 6c 6f 6f 70 20 2a 2f 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 77 68 69 6c 65 20 28 63 6e 74 | s.loop.*/....break;...while.(cnt |
2bf20 | 2d 2d 29 20 7b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 0a 09 09 09 69 | --).{....size_t.onerpl;........i |
2bf40 | 66 20 28 72 70 6c 73 20 3c 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 | f.(rpls.<.offsetof(struct.nw_inf |
2bf60 | 6f 5f 73 74 72 75 63 74 2c 20 65 6e 74 72 79 4e 61 6d 65 29 29 0a 09 09 09 09 62 72 65 61 6b 3b | o_struct,.entryName)).....break; |
2bf80 | 09 2f 2a 20 73 68 6f 72 74 20 70 61 63 6b 65 74 20 2a 2f 0a 09 09 09 6e 63 70 5f 65 78 74 72 61 | ./*.short.packet.*/....ncp_extra |
2bfa0 | 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 72 70 6c 2c 20 26 65 6e 74 72 79 2e 69 29 3b 0a 09 09 09 | ct_file_info(rpl,.&entry.i);.... |
2bfc0 | 6f 6e 65 72 70 6c 20 3d 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f | onerpl.=.offsetof(struct.nw_info |
2bfe0 | 5f 73 74 72 75 63 74 2c 20 65 6e 74 72 79 4e 61 6d 65 29 20 2b 20 65 6e 74 72 79 2e 69 2e 6e 61 | _struct,.entryName).+.entry.i.na |
2c000 | 6d 65 4c 65 6e 3b 0a 09 09 09 69 66 20 28 72 70 6c 73 20 3c 20 6f 6e 65 72 70 6c 29 0a 09 09 09 | meLen;....if.(rpls.<.onerpl).... |
2c020 | 09 62 72 65 61 6b 3b 09 2f 2a 20 73 68 6f 72 74 20 70 61 63 6b 65 74 20 2a 2f 0a 09 09 09 28 76 | .break;./*.short.packet.*/....(v |
2c040 | 6f 69 64 29 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 | oid)ncp_obtain_nfs_info(server,. |
2c060 | 26 65 6e 74 72 79 2e 69 29 3b 0a 09 09 09 72 70 6c 20 2b 3d 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 | &entry.i);....rpl.+=.onerpl;.... |
2c080 | 72 70 6c 73 20 2d 3d 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 65 6e 74 72 79 2e 76 6f 6c 75 6d 65 20 | rpls.-=.onerpl;....entry.volume. |
2c0a0 | 3d 20 65 6e 74 72 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 69 66 20 28 21 6e 63 70 | =.entry.i.volNumber;....if.(!ncp |
2c0c0 | 5f 66 69 6c 6c 5f 63 61 63 68 65 28 66 69 6c 65 2c 20 63 74 78 2c 20 63 74 6c 2c 20 26 65 6e 74 | _fill_cache(file,.ctx,.ctl,.&ent |
2c0e0 | 72 79 2c 20 30 29 29 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 7d 20 77 68 69 6c 65 20 | ry,.0)).....break;...}..}.while. |
2c100 | 28 6d 6f 72 65 29 3b 0a 09 76 66 72 65 65 28 62 75 66 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a | (more);..vfree(buf);..return;.}. |
2c120 | 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 73 74 72 75 63 74 20 73 | .int.ncp_conn_logged_in(struct.s |
2c140 | 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 | uper_block.*sb).{..struct.ncp_se |
2c160 | 72 76 65 72 2a 20 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 69 6e 74 | rver*.server.=.NCP_SBP(sb);..int |
2c180 | 20 72 65 73 75 6c 74 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 | .result;...if.(ncp_single_volume |
2c1a0 | 28 73 65 72 76 65 72 29 29 20 7b 0a 09 09 69 6e 74 20 6c 65 6e 3b 0a 09 09 73 74 72 75 63 74 20 | (server)).{...int.len;...struct. |
2c1c0 | 64 65 6e 74 72 79 2a 20 64 65 6e 74 3b 0a 09 09 5f 5f 75 33 32 20 76 6f 6c 4e 75 6d 62 65 72 3b | dentry*.dent;...__u32.volNumber; |
2c1e0 | 0a 09 09 5f 5f 6c 65 33 32 20 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 5f 5f 6c 65 33 32 20 44 6f | ...__le32.dirEntNum;...__le32.Do |
2c200 | 73 44 69 72 4e 75 6d 3b 0a 09 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 | sDirNum;...__u8.__name[NCP_MAXPA |
2c220 | 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 | THLEN.+.1];....len.=.sizeof(__na |
2c240 | 6d 65 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 | me);...result.=.ncp_io2vol(serve |
2c260 | 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 | r,.__name,.&len,.server->m.mount |
2c280 | 65 64 5f 76 6f 6c 2c 0a 09 09 09 09 20 20 20 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6d | ed_vol,.........strlen(server->m |
2c2a0 | 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 29 2c 20 31 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 | .mounted_vol),.1);...if.(result) |
2c2c0 | 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 4e 4f 45 4e 54 | ....goto.out;...result.=.-ENOENT |
2c2e0 | 3b 0a 09 09 69 66 20 28 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 65 72 76 | ;...if.(ncp_get_volume_root(serv |
2c300 | 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 64 69 72 45 6e 74 4e | er,.__name,.&volNumber,.&dirEntN |
2c320 | 75 6d 2c 20 26 44 6f 73 44 69 72 4e 75 6d 29 29 20 7b 0a 09 09 09 6e 63 70 5f 76 64 62 67 28 22 | um,.&DosDirNum)).{....ncp_vdbg(" |
2c340 | 25 73 20 6e 6f 74 20 66 6f 75 6e 64 5c 6e 22 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 | %s.not.found\n",.server->m.mount |
2c360 | 65 64 5f 76 6f 6c 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 64 65 6e 74 | ed_vol);....goto.out;...}...dent |
2c380 | 20 3d 20 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 09 69 66 20 28 64 65 6e 74 29 20 7b 0a 09 09 09 | .=.sb->s_root;...if.(dent).{.... |
2c3a0 | 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 | struct.inode*.ino.=.d_inode(dent |
2c3c0 | 29 3b 0a 09 09 09 69 66 20 28 69 6e 6f 29 20 7b 0a 09 09 09 09 6e 63 70 5f 75 70 64 61 74 65 5f | );....if.(ino).{.....ncp_update_ |
2c3e0 | 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 76 6f 6c 4e 75 6d 62 65 | known_namespace(server,.volNumbe |
2c400 | 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 76 6f | r,.NULL);.....NCP_FINFO(ino)->vo |
2c420 | 6c 4e 75 6d 62 65 72 20 3d 20 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e | lNumber.=.volNumber;.....NCP_FIN |
2c440 | 46 4f 28 69 6e 6f 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 20 3d 20 64 69 72 45 6e 74 4e 75 6d 3b 0a | FO(ino)->dirEntNum.=.dirEntNum;. |
2c460 | 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 | ....NCP_FINFO(ino)->DosDirNum.=. |
2c480 | 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 20 | DosDirNum;.....result.=.0;....}. |
2c4a0 | 65 6c 73 65 20 7b 0a 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f 69 6e 6f 64 65 28 73 | else.{.....ncp_dbg(1,."d_inode(s |
2c4c0 | 62 2d 3e 73 5f 72 6f 6f 74 29 20 3d 3d 20 4e 55 4c 4c 21 5c 6e 22 29 3b 0a 09 09 09 7d 0a 09 09 | b->s_root).==.NULL!\n");....}... |
2c4e0 | 7d 20 65 6c 73 65 20 7b 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 62 2d 3e 73 5f 72 6f | }.else.{....ncp_dbg(1,."sb->s_ro |
2c500 | 6f 74 20 3d 3d 20 4e 55 4c 4c 21 5c 6e 22 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 0a 09 09 72 | ot.==.NULL!\n");...}..}.else...r |
2c520 | 65 73 75 6c 74 20 3d 20 30 3b 0a 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b | esult.=.0;..out:..return.result; |
2c540 | 0a 7d 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 63 70 5f 6c 6f | .}..static.struct.dentry.*ncp_lo |
2c560 | 6f 6b 75 70 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 | okup(struct.inode.*dir,.struct.d |
2c580 | 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 66 6c 61 67 | entry.*dentry,.unsigned.int.flag |
2c5a0 | 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 | s).{..struct.ncp_server.*server. |
2c5c0 | 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 | =.NCP_SERVER(dir);..struct.inode |
2c5e0 | 20 2a 69 6e 6f 64 65 20 3d 20 4e 55 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 | .*inode.=.NULL;..struct.ncp_entr |
2c600 | 79 5f 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 2c 20 6c | y_info.finfo;..int.error,.res,.l |
2c620 | 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 | en;..__u8.__name[NCP_MAXPATHLEN. |
2c640 | 2b 20 31 5d 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 69 66 20 28 21 6e 63 70 5f | +.1];...error.=.-EIO;..if.(!ncp_ |
2c660 | 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 | conn_valid(server))...goto.finis |
2c680 | 68 65 64 3b 0a 0a 09 6e 63 70 5f 76 64 62 67 28 22 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 66 | hed;...ncp_vdbg("server.lookup.f |
2c6a0 | 6f 72 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a | or.%pd2\n",.dentry);...len.=.siz |
2c6c0 | 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f | eof(__name);..if.(ncp_is_server_ |
2c6e0 | 72 6f 6f 74 28 64 69 72 29 29 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 | root(dir)).{...res.=.ncp_io2vol( |
2c700 | 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f | server,.__name,.&len,.dentry->d_ |
2c720 | 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c | name.name,......dentry->d_name.l |
2c740 | 65 6e 2c 20 31 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 | en,.1);...if.(!res)....res.=.ncp |
2c760 | 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 | _lookup_volume(server,.__name,.& |
2c780 | 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 6e 63 70 5f 75 | (finfo.i));...if.(!res)....ncp_u |
2c7a0 | 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 | pdate_known_namespace(server,.fi |
2c7c0 | 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 7d 20 65 6c 73 65 20 | nfo.i.volNumber,.NULL);..}.else. |
2c7e0 | 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e | {...res.=.ncp_io2vol(server,.__n |
2c800 | 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a | ame,.&len,.dentry->d_name.name,. |
2c820 | 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 | .....dentry->d_name.len,.!ncp_pr |
2c840 | 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 | eserve_case(dir));...if.(!res).. |
2c860 | 09 09 72 65 73 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 | ..res.=.ncp_obtain_info(server,. |
2c880 | 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 6e 63 | dir,.__name,.&(finfo.i));..}..nc |
2c8a0 | 70 5f 76 64 62 67 28 22 6c 6f 6f 6b 65 64 20 66 6f 72 20 25 70 64 32 2c 20 72 65 73 3d 25 64 5c | p_vdbg("looked.for.%pd2,.res=%d\ |
2c8c0 | 6e 22 2c 20 64 65 6e 74 72 79 2c 20 72 65 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 | n",.dentry,.res);../*...*.If.we. |
2c8e0 | 64 69 64 6e 27 74 20 66 69 6e 64 20 61 6e 20 65 6e 74 72 79 2c 20 6d 61 6b 65 20 61 20 6e 65 67 | didn't.find.an.entry,.make.a.neg |
2c900 | 61 74 69 76 65 20 64 65 6e 74 72 79 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 | ative.dentry....*/..if.(res)...g |
2c920 | 6f 74 6f 20 61 64 64 5f 65 6e 74 72 79 3b 0a 0a 09 2f 2a 0a 09 20 2a 20 43 72 65 61 74 65 20 61 | oto.add_entry;.../*...*.Create.a |
2c940 | 6e 20 69 6e 6f 64 65 20 66 6f 72 20 74 68 65 20 65 6e 74 72 79 2e 0a 09 20 2a 2f 0a 09 66 69 6e | n.inode.for.the.entry....*/..fin |
2c960 | 66 6f 2e 6f 70 65 6e 65 64 20 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 6e 6f 20 3d 20 69 75 6e 69 | fo.opened.=.0;..finfo.ino.=.iuni |
2c980 | 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 3b 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 | que(dir->i_sb,.2);..finfo.volume |
2c9a0 | 20 3d 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 65 72 72 6f 72 20 3d 20 2d | .=.finfo.i.volNumber;..error.=.- |
2c9c0 | 45 41 43 43 45 53 3b 0a 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 | EACCES;..inode.=.ncp_iget(dir->i |
2c9e0 | 5f 73 62 2c 20 26 66 69 6e 66 6f 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e | _sb,.&finfo);...if.(inode).{...n |
2ca00 | 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 64 65 6e 74 72 79 29 3b 0a 61 64 64 5f 65 6e 74 72 79 | cp_new_dentry(dentry);.add_entry |
2ca20 | 3a 0a 09 09 64 5f 61 64 64 28 64 65 6e 74 72 79 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 65 72 72 6f | :...d_add(dentry,.inode);...erro |
2ca40 | 72 20 3d 20 30 3b 0a 09 7d 0a 0a 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 | r.=.0;..}..finished:..ncp_vdbg(" |
2ca60 | 72 65 73 75 6c 74 3d 25 64 5c 6e 22 2c 20 65 72 72 6f 72 29 3b 0a 09 72 65 74 75 72 6e 20 45 52 | result=%d\n",.error);..return.ER |
2ca80 | 52 5f 50 54 52 28 65 72 72 6f 72 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 63 6f 64 65 | R_PTR(error);.}../*..*.This.code |
2caa0 | 20 69 73 20 63 6f 6d 6d 6f 6e 20 74 6f 20 63 72 65 61 74 65 2c 20 6d 6b 64 69 72 2c 20 61 6e 64 | .is.common.to.create,.mkdir,.and |
2cac0 | 20 6d 6b 6e 6f 64 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 69 6e 73 74 61 | .mknod...*/.static.int.ncp_insta |
2cae0 | 6e 74 69 61 74 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 | ntiate(struct.inode.*dir,.struct |
2cb00 | 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 65 | .dentry.*dentry,....struct.ncp_e |
2cb20 | 6e 74 72 79 5f 69 6e 66 6f 20 2a 66 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 | ntry_info.*finfo).{..struct.inod |
2cb40 | 65 20 2a 69 6e 6f 64 65 3b 0a 09 69 6e 74 20 65 72 72 6f 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a | e.*inode;..int.error.=.-EINVAL;. |
2cb60 | 0a 09 66 69 6e 66 6f 2d 3e 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 | ..finfo->ino.=.iunique(dir->i_sb |
2cb80 | 2c 20 32 29 3b 0a 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 | ,.2);..inode.=.ncp_iget(dir->i_s |
2cba0 | 62 2c 20 66 69 6e 66 6f 29 3b 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 0a 09 09 67 6f 74 6f 20 6f | b,.finfo);..if.(!inode)...goto.o |
2cbc0 | 75 74 5f 63 6c 6f 73 65 3b 0a 09 64 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 65 6e 74 72 79 2c | ut_close;..d_instantiate(dentry, |
2cbe0 | 69 6e 6f 64 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e | inode);..error.=.0;.out:..return |
2cc00 | 20 65 72 72 6f 72 3b 0a 0a 6f 75 74 5f 63 6c 6f 73 65 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 25 | .error;..out_close:..ncp_vdbg("% |
2cc20 | 70 64 32 20 66 61 69 6c 65 64 2c 20 63 6c 6f 73 69 6e 67 20 66 69 6c 65 5c 6e 22 2c 20 64 65 6e | pd2.failed,.closing.file\n",.den |
2cc40 | 74 72 79 29 3b 0a 09 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 4e 43 50 5f 53 45 52 56 45 52 | try);..ncp_close_file(NCP_SERVER |
2cc60 | 28 64 69 72 29 2c 20 66 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 09 67 6f 74 | (dir),.finfo->file_handle);..got |
2cc80 | 6f 20 6f 75 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 73 74 72 | o.out;.}..int.ncp_create_new(str |
2cca0 | 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 | uct.inode.*dir,.struct.dentry.*d |
2ccc0 | 65 6e 74 72 79 2c 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 20 20 20 64 65 76 5f 74 20 | entry,.umode_t.mode,......dev_t. |
2cce0 | 72 64 65 76 2c 20 5f 5f 6c 65 33 32 20 61 74 74 72 69 62 75 74 65 73 29 0a 7b 0a 09 73 74 72 75 | rdev,.__le32.attributes).{..stru |
2cd00 | 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 | ct.ncp_server.*server.=.NCP_SERV |
2cd20 | 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 | ER(dir);..struct.ncp_entry_info. |
2cd40 | 66 69 6e 66 6f 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 3b 0a | finfo;..int.error,.result,.len;. |
2cd60 | 09 69 6e 74 20 6f 70 6d 6f 64 65 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 | .int.opmode;..__u8.__name[NCP_MA |
2cd80 | 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 09 0a 09 6e 63 70 5f 76 64 62 67 28 22 63 72 65 61 | XPATHLEN.+.1];....ncp_vdbg("crea |
2cda0 | 74 69 6e 67 20 25 70 64 32 2c 20 6d 6f 64 65 3d 25 68 78 5c 6e 22 2c 20 64 65 6e 74 72 79 2c 20 | ting.%pd2,.mode=%hx\n",.dentry,. |
2cdc0 | 6d 6f 64 65 29 3b 0a 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 | mode);...ncp_age_dentry(server,. |
2cde0 | 64 65 6e 74 72 79 29 3b 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a | dentry);..len.=.sizeof(__name);. |
2ce00 | 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 | .error.=.ncp_io2vol(server,.__na |
2ce20 | 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 | me,.&len,.dentry->d_name.name,.. |
2ce40 | 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 | .....dentry->d_name.len,.!ncp_pr |
2ce60 | 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 | eserve_case(dir));..if.(error).. |
2ce80 | 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 0a | .goto.out;...error.=.-EACCES;... |
2cea0 | 09 69 66 20 28 53 5f 49 53 52 45 47 28 6d 6f 64 65 29 20 26 26 20 0a 09 20 20 20 20 28 73 65 72 | .if.(S_ISREG(mode).&&.......(ser |
2cec0 | 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 29 | ver->m.flags.&.NCP_MOUNT_EXTRAS) |
2cee0 | 20 26 26 20 0a 09 20 20 20 20 28 6d 6f 64 65 20 26 20 53 5f 49 58 55 47 4f 29 29 0a 09 09 61 74 | .&&.......(mode.&.S_IXUGO))...at |
2cf00 | 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 59 53 54 45 4d 20 7c 20 61 53 48 41 52 45 44 3b 0a 09 | tributes.|=.aSYSTEM.|.aSHARED;.. |
2cf20 | 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f | ..result.=.ncp_open_create_file_ |
2cf40 | 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 | or_subdir(server,.dir,.__name,.. |
2cf60 | 09 09 09 4f 43 5f 4d 4f 44 45 5f 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e | ...OC_MODE_CREATE.|.OC_MODE_OPEN |
2cf80 | 20 7c 20 4f 43 5f 4d 4f 44 45 5f 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 75 74 | .|.OC_MODE_REPLACE,.....attribut |
2cfa0 | 65 73 2c 20 41 52 5f 52 45 41 44 20 7c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b | es,.AR_READ.|.AR_WRITE,.&finfo); |
2cfc0 | 0a 09 6f 70 6d 6f 64 65 20 3d 20 4f 5f 52 44 57 52 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 29 20 | ..opmode.=.O_RDWR;..if.(result). |
2cfe0 | 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c | {...result.=.ncp_open_create_fil |
2d000 | 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c | e_or_subdir(server,.dir,.__name, |
2d020 | 0a 09 09 09 09 4f 43 5f 4d 4f 44 45 5f 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 | .....OC_MODE_CREATE.|.OC_MODE_OP |
2d040 | 45 4e 20 7c 20 4f 43 5f 4d 4f 44 45 5f 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 | EN.|.OC_MODE_REPLACE,.....attrib |
2d060 | 75 74 65 73 2c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 | utes,.AR_WRITE,.&finfo);...if.(r |
2d080 | 65 73 75 6c 74 29 20 7b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 78 38 37 29 0a | esult).{....if.(result.==.0x87). |
2d0a0 | 09 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 65 6c | ....error.=.-ENAMETOOLONG;....el |
2d0c0 | 73 65 20 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 09 09 65 72 72 6f 72 20 3d 20 72 | se.if.(result.<.0).....error.=.r |
2d0e0 | 65 73 75 6c 74 3b 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 66 61 69 6c 65 | esult;....ncp_dbg(1,."%pd2.faile |
2d100 | 64 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a | d\n",.dentry);....goto.out;...}. |
2d120 | 09 09 6f 70 6d 6f 64 65 20 3d 20 4f 5f 57 52 4f 4e 4c 59 3b 0a 09 7d 0a 09 66 69 6e 66 6f 2e 61 | ..opmode.=.O_WRONLY;..}..finfo.a |
2d140 | 63 63 65 73 73 20 3d 20 6f 70 6d 6f 64 65 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f | ccess.=.opmode;..if.(ncp_is_nfs_ |
2d160 | 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 29 29 20 7b 0a | extras(server,.finfo.volume)).{. |
2d180 | 09 09 66 69 6e 66 6f 2e 69 2e 6e 66 73 2e 6d 6f 64 65 20 3d 20 6d 6f 64 65 3b 0a 09 09 66 69 6e | ..finfo.i.nfs.mode.=.mode;...fin |
2d1a0 | 66 6f 2e 69 2e 6e 66 73 2e 72 64 65 76 20 3d 20 6e 65 77 5f 65 6e 63 6f 64 65 5f 64 65 76 28 72 | fo.i.nfs.rdev.=.new_encode_dev(r |
2d1c0 | 64 65 76 29 3b 0a 09 09 69 66 20 28 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 | dev);...if.(ncp_modify_nfs_info( |
2d1e0 | 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 2c 0a 09 09 09 09 09 66 69 6e 66 6f | server,.finfo.volume,......finfo |
2d200 | 2e 69 2e 64 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 6d 6f 64 65 2c 20 6e 65 77 5f 65 6e 63 | .i.dirEntNum,......mode,.new_enc |
2d220 | 6f 64 65 5f 64 65 76 28 72 64 65 76 29 29 20 21 3d 20 30 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 | ode_dev(rdev)).!=.0)....goto.out |
2d240 | 3b 0a 09 7d 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 | ;..}...error.=.ncp_instantiate(d |
2d260 | 69 72 2c 20 64 65 6e 74 72 79 2c 20 26 66 69 6e 66 6f 29 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 | ir,.dentry,.&finfo);.out:..retur |
2d280 | 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 | n.error;.}..static.int.ncp_creat |
2d2a0 | 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 | e(struct.inode.*dir,.struct.dent |
2d2c0 | 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 62 6f 6f 6c | ry.*dentry,.umode_t.mode,...bool |
2d2e0 | 20 65 78 63 6c 29 0a 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 | .excl).{..return.ncp_create_new( |
2d300 | 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 6d 6f 64 65 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a 73 74 61 | dir,.dentry,.mode,.0,.0);.}..sta |
2d320 | 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a | tic.int.ncp_mkdir(struct.inode.* |
2d340 | 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6d 6f 64 | dir,.struct.dentry.*dentry,.umod |
2d360 | 65 5f 74 20 6d 6f 64 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e | e_t.mode).{..struct.ncp_entry_in |
2d380 | 66 6f 20 66 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 | fo.finfo;..struct.ncp_server.*se |
2d3a0 | 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 69 6e 74 20 65 72 72 | rver.=.NCP_SERVER(dir);..int.err |
2d3c0 | 6f 72 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 | or,.len;..__u8.__name[NCP_MAXPAT |
2d3e0 | 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6d 61 6b 69 6e 67 20 | HLEN.+.1];...ncp_dbg(1,."making. |
2d400 | 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 | %pd2\n",.dentry);...ncp_age_dent |
2d420 | 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f | ry(server,.dentry);..len.=.sizeo |
2d440 | 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 | f(__name);..error.=.ncp_io2vol(s |
2d460 | 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e | erver,.__name,.&len,.dentry->d_n |
2d480 | 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c | ame.name,.......dentry->d_name.l |
2d4a0 | 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 69 | en,.!ncp_preserve_case(dir));..i |
2d4c0 | 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 | f.(error)...goto.out;...error.=. |
2d4e0 | 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 | ncp_open_create_file_or_subdir(s |
2d500 | 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 20 20 20 4f 43 5f 4d | erver,.dir,.__name,.........OC_M |
2d520 | 4f 44 45 5f 43 52 45 41 54 45 2c 20 61 44 49 52 2c 0a 09 09 09 09 09 20 20 20 63 70 75 5f 74 6f | ODE_CREATE,.aDIR,.........cpu_to |
2d540 | 5f 6c 65 31 36 28 30 78 66 66 66 66 29 2c 0a 09 09 09 09 09 20 20 20 26 66 69 6e 66 6f 29 3b 0a | _le16(0xffff),.........&finfo);. |
2d560 | 09 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 30 29 20 7b 0a 09 09 69 66 20 28 6e 63 70 5f 69 73 5f | .if.(error.==.0).{...if.(ncp_is_ |
2d580 | 6e 66 73 5f 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 29 | nfs_extras(server,.finfo.volume) |
2d5a0 | 29 20 7b 0a 09 09 09 6d 6f 64 65 20 7c 3d 20 53 5f 49 46 44 49 52 3b 0a 09 09 09 66 69 6e 66 6f | ).{....mode.|=.S_IFDIR;....finfo |
2d5c0 | 2e 69 2e 6e 66 73 2e 6d 6f 64 65 20 3d 20 6d 6f 64 65 3b 0a 09 09 09 69 66 20 28 6e 63 70 5f 6d | .i.nfs.mode.=.mode;....if.(ncp_m |
2d5e0 | 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 0a 09 09 09 09 09 09 66 69 6e | odify_nfs_info(server,.......fin |
2d600 | 66 6f 2e 76 6f 6c 75 6d 65 2c 0a 09 09 09 09 09 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e | fo.volume,.......finfo.i.dirEntN |
2d620 | 75 6d 2c 0a 09 09 09 09 09 09 6d 6f 64 65 2c 20 30 29 20 21 3d 20 30 29 0a 09 09 09 09 67 6f 74 | um,.......mode,.0).!=.0).....got |
2d640 | 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6e 73 74 61 6e 74 | o.out;...}...error.=.ncp_instant |
2d660 | 69 61 74 65 28 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 7d 20 65 6c | iate(dir,.dentry,.&finfo);..}.el |
2d680 | 73 65 20 69 66 20 28 65 72 72 6f 72 20 3e 20 30 29 20 7b 0a 09 09 65 72 72 6f 72 20 3d 20 2d 45 | se.if.(error.>.0).{...error.=.-E |
2d6a0 | 41 43 43 45 53 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a | ACCES;..}.out:..return.error;.}. |
2d6c0 | 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 6d 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f | .static.int.ncp_rmdir(struct.ino |
2d6e0 | 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a | de.*dir,.struct.dentry.*dentry). |
2d700 | 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e | {..struct.ncp_server.*server.=.N |
2d720 | 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 75 | CP_SERVER(dir);..int.error,.resu |
2d740 | 6c 74 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 | lt,.len;..__u8.__name[NCP_MAXPAT |
2d760 | 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6d 6f 76 69 6e | HLEN.+.1];...ncp_dbg(1,."removin |
2d780 | 67 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 | g.%pd2\n",.dentry);...len.=.size |
2d7a0 | 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 | of(__name);..error.=.ncp_io2vol( |
2d7c0 | 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f | server,.__name,.&len,.dentry->d_ |
2d7e0 | 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e | name.name,.......dentry->d_name. |
2d800 | 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 | len,.!ncp_preserve_case(dir));.. |
2d820 | 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 | if.(error)...goto.out;...result. |
2d840 | 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c | =.ncp_del_file_or_subdir(server, |
2d860 | 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 29 3b 0a 09 73 77 69 74 63 68 20 28 72 65 73 75 6c 74 29 20 | .dir,.__name);..switch.(result). |
2d880 | 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 30 3b 0a 09 09 09 | {...case.0x00:....error.=.0;.... |
2d8a0 | 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 35 3a 09 2f 2a 20 75 6e 61 75 74 68 6f 72 69 | break;...case.0x85:./*.unauthori |
2d8c0 | 7a 65 64 20 74 6f 20 64 65 6c 65 74 65 20 66 69 6c 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 | zed.to.delete.file.*/...case.0x8 |
2d8e0 | 41 3a 09 2f 2a 20 75 6e 61 75 74 68 6f 72 69 7a 65 64 20 74 6f 20 64 65 6c 65 74 65 20 66 69 6c | A:./*.unauthorized.to.delete.fil |
2d900 | 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 | e.*/....error.=.-EACCES;....brea |
2d920 | 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 46 3a 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 2f 2a 20 | k;...case.0x8F:...case.0x90:./*. |
2d940 | 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 50 45 52 4d 3b 0a | read.only.*/....error.=.-EPERM;. |
2d960 | 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 39 46 3a 09 2f 2a 20 69 6e 20 75 73 65 | ...break;...case.0x9F:./*.in.use |
2d980 | 20 62 79 20 61 6e 6f 74 68 65 72 20 63 6c 69 65 6e 74 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d | .by.another.client.*/....error.= |
2d9a0 | 20 2d 45 42 55 53 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 41 30 3a 09 | .-EBUSY;....break;...case.0xA0:. |
2d9c0 | 2f 2a 20 64 69 72 65 63 74 6f 72 79 20 6e 6f 74 20 65 6d 70 74 79 20 2a 2f 0a 09 09 09 65 72 72 | /*.directory.not.empty.*/....err |
2d9e0 | 6f 72 20 3d 20 2d 45 4e 4f 54 45 4d 50 54 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 | or.=.-ENOTEMPTY;....break;...cas |
2da00 | 65 20 30 78 46 46 3a 09 2f 2a 20 73 6f 6d 65 6f 6e 65 20 64 65 6c 65 74 65 64 20 66 69 6c 65 20 | e.0xFF:./*.someone.deleted.file. |
2da20 | 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b | */....error.=.-ENOENT;....break; |
2da40 | 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 72 65 73 75 6c 74 20 3c 20 | ...default:....error.=.result.<. |
2da60 | 30 20 3f 20 72 65 73 75 6c 74 20 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a | 0.?.result.:.-EACCES;....break;. |
2da80 | 20 20 20 20 20 20 20 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a | ........}.out:..return.error;.}. |
2daa0 | 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e | .static.int.ncp_unlink(struct.in |
2dac0 | 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 | ode.*dir,.struct.dentry.*dentry) |
2dae0 | 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 | .{..struct.inode.*inode.=.d_inod |
2db00 | 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 | e(dentry);..struct.ncp_server.*s |
2db20 | 65 72 76 65 72 3b 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 | erver;..int.error;...server.=.NC |
2db40 | 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 75 6e 6c 69 | P_SERVER(dir);..ncp_dbg(1,."unli |
2db60 | 6e 6b 69 6e 67 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 0a 09 2f 2a 0a 09 20 | nking.%pd2\n",.dentry);..../*... |
2db80 | 2a 20 43 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 66 69 6c | *.Check.whether.to.close.the.fil |
2dba0 | 65 20 2e 2e 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e 63 70 5f 76 | e.......*/..if.(inode).{...ncp_v |
2dbc0 | 64 62 67 28 22 63 6c 6f 73 69 6e 67 20 66 69 6c 65 5c 6e 22 29 3b 0a 09 09 6e 63 70 5f 6d 61 6b | dbg("closing.file\n");...ncp_mak |
2dbe0 | 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 | e_closed(inode);..}...error.=.nc |
2dc00 | 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 73 65 72 76 65 72 2c 20 64 65 | p_del_file_or_subdir2(server,.de |
2dc20 | 6e 74 72 79 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e | ntry);.#ifdef.CONFIG_NCPFS_STRON |
2dc40 | 47 0a 09 2f 2a 20 39 43 20 69 73 20 49 6e 76 61 6c 69 64 20 70 61 74 68 2e 2e 20 49 74 20 73 68 | G../*.9C.is.Invalid.path...It.sh |
2dc60 | 6f 75 6c 64 20 62 65 20 38 46 2c 20 39 30 20 2d 20 72 65 61 64 20 6f 6e 6c 79 2c 20 62 75 74 0a | ould.be.8F,.90.-.read.only,.but. |
2dc80 | 09 20 20 20 69 74 20 69 73 20 6e 6f 74 20 3a 2d 28 20 2a 2f 0a 09 69 66 20 28 28 65 72 72 6f 72 | ....it.is.not.:-(.*/..if.((error |
2dca0 | 20 3d 3d 20 30 78 39 43 20 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 30 78 39 30 29 20 26 26 20 73 65 | .==.0x9C.||.error.==.0x90).&&.se |
2dcc0 | 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 | rver->m.flags.&.NCP_MOUNT_STRONG |
2dce0 | 29 20 7b 20 2f 2a 20 52 2f 4f 20 2a 2f 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 | ).{./*.R/O.*/...error.=.ncp_forc |
2dd00 | 65 5f 75 6e 6c 69 6e 6b 28 64 69 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 | e_unlink(dir,.dentry);..}.#endif |
2dd20 | 0a 09 73 77 69 74 63 68 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a | ..switch.(error).{...case.0x00:. |
2dd40 | 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6d 6f 76 65 64 20 25 70 64 32 5c 6e 22 2c 20 | ...ncp_dbg(1,."removed.%pd2\n",. |
2dd60 | 64 65 6e 74 72 79 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 35 3a 0a | dentry);....break;...case.0x85:. |
2dd80 | 09 09 63 61 73 65 20 30 78 38 41 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b | ..case.0x8A:....error.=.-EACCES; |
2dda0 | 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 44 3a 09 2f 2a 20 73 6f 6d 65 20 | ....break;...case.0x8D:./*.some. |
2ddc0 | 66 69 6c 65 73 20 69 6e 20 75 73 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 45 3a 09 2f 2a 20 | files.in.use.*/...case.0x8E:./*. |
2dde0 | 61 6c 6c 20 66 69 6c 65 73 20 69 6e 20 75 73 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d | all.files.in.use.*/....error.=.- |
2de00 | 45 42 55 53 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 46 3a 09 2f 2a | EBUSY;....break;...case.0x8F:./* |
2de20 | 20 73 6f 6d 65 20 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 | .some.read.only.*/...case.0x90:. |
2de40 | 2f 2a 20 61 6c 6c 20 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 43 3a | /*.all.read.only.*/...case.0x9C: |
2de60 | 09 2f 2a 20 21 21 21 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20 69 6e 2d 75 73 65 20 6f 72 20 | ./*.!!!.returned.when.in-use.or. |
2de80 | 72 65 61 64 2d 6f 6e 6c 79 20 62 79 20 4e 57 34 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d | read-only.by.NW4.*/....error.=.- |
2dea0 | 45 50 45 52 4d 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 46 46 3a 0a 09 09 | EPERM;....break;...case.0xFF:... |
2dec0 | 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 64 65 | .error.=.-ENOENT;....break;...de |
2dee0 | 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 3c 20 30 20 3f 20 65 72 | fault:....error.=.error.<.0.?.er |
2df00 | 72 6f 72 20 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 72 65 74 | ror.:.-EACCES;....break;..}..ret |
2df20 | 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6e | urn.error;.}..static.int.ncp_ren |
2df40 | 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 63 | ame(struct.inode.*old_dir,.struc |
2df60 | 74 20 64 65 6e 74 72 79 20 2a 6f 6c 64 5f 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 20 73 74 | t.dentry.*old_dentry,.........st |
2df80 | 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 | ruct.inode.*new_dir,.struct.dent |
2dfa0 | 72 79 20 2a 6e 65 77 5f 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 | ry.*new_dentry,.........unsigned |
2dfc0 | 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 | .int.flags).{..struct.ncp_server |
2dfe0 | 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 64 69 72 29 3b 0a | .*server.=.NCP_SERVER(old_dir);. |
2e000 | 09 69 6e 74 20 65 72 72 6f 72 3b 0a 09 69 6e 74 20 6f 6c 64 5f 6c 65 6e 2c 20 6e 65 77 5f 6c 65 | .int.error;..int.old_len,.new_le |
2e020 | 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c | n;..__u8.__old_name[NCP_MAXPATHL |
2e040 | 45 4e 20 2b 20 31 5d 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c | EN.+.1],.__new_name[NCP_MAXPATHL |
2e060 | 45 4e 20 2b 20 31 5d 3b 0a 0a 09 69 66 20 28 66 6c 61 67 73 29 0a 09 09 72 65 74 75 72 6e 20 2d | EN.+.1];...if.(flags)...return.- |
2e080 | 45 49 4e 56 41 4c 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 74 6f 20 25 70 | EINVAL;...ncp_dbg(1,."%pd2.to.%p |
2e0a0 | 64 32 5c 6e 22 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a | d2\n",.old_dentry,.new_dentry);. |
2e0c0 | 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 65 6e | ..ncp_age_dentry(server,.old_den |
2e0e0 | 74 72 79 29 3b 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6e 65 | try);..ncp_age_dentry(server,.ne |
2e100 | 77 5f 64 65 6e 74 72 79 29 3b 0a 0a 09 6f 6c 64 5f 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f | w_dentry);...old_len.=.sizeof(__ |
2e120 | 6f 6c 64 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 | old_name);..error.=.ncp_io2vol(s |
2e140 | 65 72 76 65 72 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 20 26 6f 6c 64 5f 6c 65 6e 2c 0a 09 09 09 | erver,.__old_name,.&old_len,.... |
2e160 | 20 20 20 6f 6c 64 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 20 6f 6c 64 5f | ...old_dentry->d_name.name,.old_ |
2e180 | 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 20 20 20 21 6e 63 70 5f 70 | dentry->d_name.len,.......!ncp_p |
2e1a0 | 72 65 73 65 72 76 65 5f 63 61 73 65 28 6f 6c 64 5f 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 | reserve_case(old_dir));..if.(err |
2e1c0 | 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 6e 65 77 5f 6c 65 6e 20 3d 20 73 69 7a 65 | or)...goto.out;...new_len.=.size |
2e1e0 | 6f 66 28 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 | of(__new_name);..error.=.ncp_io2 |
2e200 | 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 2c 20 26 6e 65 77 5f 6c 65 6e | vol(server,.__new_name,.&new_len |
2e220 | 2c 0a 09 09 09 20 20 20 6e 65 77 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c | ,.......new_dentry->d_name.name, |
2e240 | 20 6e 65 77 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 20 20 20 21 | .new_dentry->d_name.len,.......! |
2e260 | 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 6e 65 77 5f 64 69 72 29 29 3b 0a 09 69 66 | ncp_preserve_case(new_dir));..if |
2e280 | 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 6e | .(error)...goto.out;...error.=.n |
2e2a0 | 63 70 5f 72 65 6e 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 | cp_ren_or_mov_file_or_subdir(ser |
2e2c0 | 76 65 72 2c 20 6f 6c 64 5f 64 69 72 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 | ver,.old_dir,.__old_name,....... |
2e2e0 | 20 20 20 20 20 20 6e 65 77 5f 64 69 72 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 23 69 66 64 | ......new_dir,.__new_name);.#ifd |
2e300 | 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 69 66 20 28 28 65 72 72 | ef.CONFIG_NCPFS_STRONG..if.((err |
2e320 | 6f 72 20 3d 3d 20 30 78 39 30 20 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 30 78 38 42 20 7c 7c 20 65 | or.==.0x90.||.error.==.0x8B.||.e |
2e340 | 72 72 6f 72 20 3d 3d 20 2d 45 41 43 43 45 53 29 20 26 26 0a 09 09 09 73 65 72 76 65 72 2d 3e 6d | rror.==.-EACCES).&&....server->m |
2e360 | 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 29 20 7b 09 2f 2a 20 | .flags.&.NCP_MOUNT_STRONG).{./*. |
2e380 | 52 4f 20 2a 2f 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 65 5f 72 65 6e 61 6d 65 | RO.*/...error.=.ncp_force_rename |
2e3a0 | 28 6f 6c 64 5f 64 69 72 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 | (old_dir,.old_dentry,.__old_name |
2e3c0 | 2c 0a 09 09 09 09 09 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 64 65 6e 74 72 79 2c 20 5f 5f 6e | ,.......new_dir,.new_dentry,.__n |
2e3e0 | 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 0a 09 73 77 69 74 63 68 20 28 65 72 72 | ew_name);..}.#endif..switch.(err |
2e400 | 6f 72 29 20 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c | or).{...case.0x00:....ncp_dbg(1, |
2e420 | 20 22 72 65 6e 61 6d 65 64 20 25 70 64 20 2d 3e 20 25 70 64 5c 6e 22 2c 0a 09 09 09 09 6f 6c 64 | ."renamed.%pd.->.%pd\n",.....old |
2e440 | 5f 64 65 6e 74 72 79 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 | _dentry,.new_dentry);....ncp_d_p |
2e460 | 72 75 6e 65 28 6f 6c 64 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 72 75 6e 65 | rune(old_dentry);....ncp_d_prune |
2e480 | 28 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 | (new_dentry);....break;...case.0 |
2e4a0 | 78 39 45 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 | x9E:....error.=.-ENAMETOOLONG;.. |
2e4c0 | 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 46 46 3a 0a 09 09 09 65 72 72 6f 72 20 3d | ..break;...case.0xFF:....error.= |
2e4e0 | 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 | .-ENOENT;....break;...default:.. |
2e500 | 09 09 65 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 3c 20 30 20 3f 20 65 72 72 6f 72 20 3a 20 2d 45 | ..error.=.error.<.0.?.error.:.-E |
2e520 | 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e | ACCES;....break;..}.out:..return |
2e540 | 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 6e 6f 64 28 | .error;.}..static.int.ncp_mknod( |
2e560 | 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 20 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 | struct.inode.*.dir,.struct.dentr |
2e580 | 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 | y.*dentry,........umode_t.mode,. |
2e5a0 | 64 65 76 5f 74 20 72 64 65 76 29 0a 7b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 | dev_t.rdev).{..if.(ncp_is_nfs_ex |
2e5c0 | 74 72 61 73 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 | tras(NCP_SERVER(dir),.NCP_FINFO( |
2e5e0 | 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c | dir)->volNumber)).{...ncp_dbg(1, |
2e600 | 20 22 6d 6f 64 65 20 3d 20 30 25 68 6f 5c 6e 22 2c 20 6d 6f 64 65 29 3b 0a 09 09 72 65 74 75 72 | ."mode.=.0%ho\n",.mode);...retur |
2e620 | 6e 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 6d 6f | n.ncp_create_new(dir,.dentry,.mo |
2e640 | 64 65 2c 20 72 64 65 76 2c 20 30 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 2d 45 50 45 52 4d 3b | de,.rdev,.0);..}..return.-EPERM; |
2e660 | 20 2f 2a 20 53 74 72 61 6e 67 65 2c 20 62 75 74 20 74 72 75 65 20 2a 2f 0a 7d 0a 0a 2f 2a 20 54 | ./*.Strange,.but.true.*/.}../*.T |
2e680 | 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 74 61 6b 65 6e 20 | he.following.routines.are.taken. |
2e6a0 | 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 6d 73 64 6f 73 2d 66 73 20 2a 2f 0a 0a 2f 2a 20 4c 69 | directly.from.msdos-fs.*/../*.Li |
2e6c0 | 6e 65 61 72 20 64 61 79 20 6e 75 6d 62 65 72 73 20 6f 66 20 74 68 65 20 72 65 73 70 65 63 74 69 | near.day.numbers.of.the.respecti |
2e6e0 | 76 65 20 31 73 74 73 20 69 6e 20 6e 6f 6e 2d 6c 65 61 70 20 79 65 61 72 73 2e 20 2a 2f 0a 0a 73 | ve.1sts.in.non-leap.years..*/..s |
2e700 | 74 61 74 69 63 20 69 6e 74 20 64 61 79 5f 6e 5b 5d 20 3d 0a 7b 30 2c 20 33 31 2c 20 35 39 2c 20 | tatic.int.day_n[].=.{0,.31,.59,. |
2e720 | 39 30 2c 20 31 32 30 2c 20 31 35 31 2c 20 31 38 31 2c 20 32 31 32 2c 20 32 34 33 2c 20 32 37 33 | 90,.120,.151,.181,.212,.243,.273 |
2e740 | 2c 20 33 30 34 2c 20 33 33 34 2c 20 30 2c 20 30 2c 20 30 2c 20 30 7d 3b 0a 2f 2a 20 4a 61 6e 20 | ,.304,.334,.0,.0,.0,.0};./*.Jan. |
2e760 | 46 65 62 20 4d 61 72 20 41 70 72 20 4d 61 79 20 4a 75 6e 20 4a 75 6c 20 41 75 67 20 53 65 70 20 | Feb.Mar.Apr.May.Jun.Jul.Aug.Sep. |
2e780 | 4f 63 74 20 4e 6f 76 20 44 65 63 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 75 74 63 32 6c | Oct.Nov.Dec.*/..static.int.utc2l |
2e7a0 | 6f 63 61 6c 28 69 6e 74 20 74 69 6d 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 74 69 6d 65 20 2d 20 | ocal(int.time).{..return.time.-. |
2e7c0 | 73 79 73 5f 74 7a 2e 74 7a 5f 6d 69 6e 75 74 65 73 77 65 73 74 20 2a 20 36 30 3b 0a 7d 0a 0a 73 | sys_tz.tz_minuteswest.*.60;.}..s |
2e7e0 | 74 61 74 69 63 20 69 6e 74 20 6c 6f 63 61 6c 32 75 74 63 28 69 6e 74 20 74 69 6d 65 29 0a 7b 0a | tatic.int.local2utc(int.time).{. |
2e800 | 09 72 65 74 75 72 6e 20 74 69 6d 65 20 2b 20 73 79 73 5f 74 7a 2e 74 7a 5f 6d 69 6e 75 74 65 73 | .return.time.+.sys_tz.tz_minutes |
2e820 | 77 65 73 74 20 2a 20 36 30 3b 0a 7d 0a 0a 2f 2a 20 43 6f 6e 76 65 72 74 20 61 20 4d 53 2d 44 4f | west.*.60;.}../*.Convert.a.MS-DO |
2e840 | 53 20 74 69 6d 65 2f 64 61 74 65 20 70 61 69 72 20 74 6f 20 61 20 55 4e 49 58 20 64 61 74 65 20 | S.time/date.pair.to.a.UNIX.date. |
2e860 | 28 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 20 31 20 37 30 29 2e 20 2a 2f 0a 69 6e 74 0a 6e | (seconds.since.1.1.70)..*/.int.n |
2e880 | 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 5f 5f 6c 65 31 36 20 74 2c 20 5f 5f 6c 65 31 | cp_date_dos2unix(__le16.t,.__le1 |
2e8a0 | 36 20 64 29 0a 7b 0a 09 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 20 74 69 6d 65 20 3d 20 6c 65 | 6.d).{..unsigned.short.time.=.le |
2e8c0 | 31 36 5f 74 6f 5f 63 70 75 28 74 29 2c 20 64 61 74 65 20 3d 20 6c 65 31 36 5f 74 6f 5f 63 70 75 | 16_to_cpu(t),.date.=.le16_to_cpu |
2e8e0 | 28 64 29 3b 0a 09 69 6e 74 20 6d 6f 6e 74 68 2c 20 79 65 61 72 2c 20 73 65 63 73 3b 0a 0a 09 2f | (d);..int.month,.year,.secs;.../ |
2e900 | 2a 20 66 69 72 73 74 20 73 75 62 74 72 61 63 74 20 61 6e 64 20 6d 61 73 6b 20 61 66 74 65 72 20 | *.first.subtract.and.mask.after. |
2e920 | 74 68 61 74 2e 2e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 0a 09 20 20 20 64 61 74 65 20 3d | that....Otherwise,.if.....date.= |
2e940 | 3d 20 30 2c 20 62 61 64 20 74 68 69 6e 67 73 20 68 61 70 70 65 6e 20 2a 2f 0a 09 6d 6f 6e 74 68 | =.0,.bad.things.happen.*/..month |
2e960 | 20 3d 20 28 28 64 61 74 65 20 3e 3e 20 35 29 20 2d 20 31 29 20 26 20 31 35 3b 0a 09 79 65 61 72 | .=.((date.>>.5).-.1).&.15;..year |
2e980 | 20 3d 20 64 61 74 65 20 3e 3e 20 39 3b 0a 09 73 65 63 73 20 3d 20 28 74 69 6d 65 20 26 20 33 31 | .=.date.>>.9;..secs.=.(time.&.31 |
2e9a0 | 29 20 2a 20 32 20 2b 20 36 30 20 2a 20 28 28 74 69 6d 65 20 3e 3e 20 35 29 20 26 20 36 33 29 20 | ).*.2.+.60.*.((time.>>.5).&.63). |
2e9c0 | 2b 20 28 74 69 6d 65 20 3e 3e 20 31 31 29 20 2a 20 33 36 30 30 20 2b 0a 09 09 38 36 34 30 30 20 | +.(time.>>.11).*.3600.+...86400. |
2e9e0 | 2a 20 28 28 64 61 74 65 20 26 20 33 31 29 20 2d 20 31 20 2b 20 64 61 79 5f 6e 5b 6d 6f 6e 74 68 | *.((date.&.31).-.1.+.day_n[month |
2ea00 | 5d 20 2b 20 28 79 65 61 72 20 2f 20 34 29 20 2b 20 0a 09 09 79 65 61 72 20 2a 20 33 36 35 20 2d | ].+.(year./.4).+....year.*.365.- |
2ea20 | 20 28 28 79 65 61 72 20 26 20 33 29 20 3d 3d 20 30 20 26 26 20 6d 6f 6e 74 68 20 3c 20 32 20 3f | .((year.&.3).==.0.&&.month.<.2.? |
2ea40 | 20 31 20 3a 20 30 29 20 2b 20 33 36 35 33 29 3b 0a 09 2f 2a 20 64 61 79 73 20 73 69 6e 63 65 20 | .1.:.0).+.3653);../*.days.since. |
2ea60 | 31 2e 31 2e 37 30 20 70 6c 75 73 20 38 30 27 73 20 6c 65 61 70 20 64 61 79 20 2a 2f 0a 09 72 65 | 1.1.70.plus.80's.leap.day.*/..re |
2ea80 | 74 75 72 6e 20 6c 6f 63 61 6c 32 75 74 63 28 73 65 63 73 29 3b 0a 7d 0a 0a 0a 2f 2a 20 43 6f 6e | turn.local2utc(secs);.}.../*.Con |
2eaa0 | 76 65 72 74 20 6c 69 6e 65 61 72 20 55 4e 49 58 20 64 61 74 65 20 74 6f 20 61 20 4d 53 2d 44 4f | vert.linear.UNIX.date.to.a.MS-DO |
2eac0 | 53 20 74 69 6d 65 2f 64 61 74 65 20 70 61 69 72 2e 20 2a 2f 0a 76 6f 69 64 0a 6e 63 70 5f 64 61 | S.time/date.pair..*/.void.ncp_da |
2eae0 | 74 65 5f 75 6e 69 78 32 64 6f 73 28 69 6e 74 20 75 6e 69 78 5f 64 61 74 65 2c 20 5f 5f 6c 65 31 | te_unix2dos(int.unix_date,.__le1 |
2eb00 | 36 20 2a 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 2a 64 61 74 65 29 0a 7b 0a 09 69 6e 74 20 64 61 | 6.*time,.__le16.*date).{..int.da |
2eb20 | 79 2c 20 79 65 61 72 2c 20 6e 6c 5f 64 61 79 2c 20 6d 6f 6e 74 68 3b 0a 0a 09 75 6e 69 78 5f 64 | y,.year,.nl_day,.month;...unix_d |
2eb40 | 61 74 65 20 3d 20 75 74 63 32 6c 6f 63 61 6c 28 75 6e 69 78 5f 64 61 74 65 29 3b 0a 09 2a 74 69 | ate.=.utc2local(unix_date);..*ti |
2eb60 | 6d 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 0a 09 09 28 75 6e 69 78 5f 64 61 74 65 20 25 | me.=.cpu_to_le16(...(unix_date.% |
2eb80 | 20 36 30 29 20 2f 20 32 20 2b 20 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 36 30 29 20 25 20 | .60)./.2.+.(((unix_date./.60).%. |
2eba0 | 36 30 29 20 3c 3c 20 35 29 20 2b 0a 09 09 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 33 36 30 | 60).<<.5).+...(((unix_date./.360 |
2ebc0 | 30 29 20 25 20 32 34 29 20 3c 3c 20 31 31 29 29 3b 0a 09 64 61 79 20 3d 20 75 6e 69 78 5f 64 61 | 0).%.24).<<.11));..day.=.unix_da |
2ebe0 | 74 65 20 2f 20 38 36 34 30 30 20 2d 20 33 36 35 32 3b 0a 09 79 65 61 72 20 3d 20 64 61 79 20 2f | te./.86400.-.3652;..year.=.day./ |
2ec00 | 20 33 36 35 3b 0a 09 69 66 20 28 28 79 65 61 72 20 2b 20 33 29 20 2f 20 34 20 2b 20 33 36 35 20 | .365;..if.((year.+.3)./.4.+.365. |
2ec20 | 2a 20 79 65 61 72 20 3e 20 64 61 79 29 0a 09 09 79 65 61 72 2d 2d 3b 0a 09 64 61 79 20 2d 3d 20 | *.year.>.day)...year--;..day.-=. |
2ec40 | 28 79 65 61 72 20 2b 20 33 29 20 2f 20 34 20 2b 20 33 36 35 20 2a 20 79 65 61 72 3b 0a 09 69 66 | (year.+.3)./.4.+.365.*.year;..if |
2ec60 | 20 28 64 61 79 20 3d 3d 20 35 39 20 26 26 20 21 28 79 65 61 72 20 26 20 33 29 29 20 7b 0a 09 09 | .(day.==.59.&&.!(year.&.3)).{... |
2ec80 | 6e 6c 5f 64 61 79 20 3d 20 64 61 79 3b 0a 09 09 6d 6f 6e 74 68 20 3d 20 32 3b 0a 09 7d 20 65 6c | nl_day.=.day;...month.=.2;..}.el |
2eca0 | 73 65 20 7b 0a 09 09 6e 6c 5f 64 61 79 20 3d 20 28 79 65 61 72 20 26 20 33 29 20 7c 7c 20 64 61 | se.{...nl_day.=.(year.&.3).||.da |
2ecc0 | 79 20 3c 3d 20 35 39 20 3f 20 64 61 79 20 3a 20 64 61 79 20 2d 20 31 3b 0a 09 09 66 6f 72 20 28 | y.<=.59.?.day.:.day.-.1;...for.( |
2ece0 | 6d 6f 6e 74 68 20 3d 20 31 3b 20 6d 6f 6e 74 68 20 3c 20 31 32 3b 20 6d 6f 6e 74 68 2b 2b 29 0a | month.=.1;.month.<.12;.month++). |
2ed00 | 09 09 09 69 66 20 28 64 61 79 5f 6e 5b 6d 6f 6e 74 68 5d 20 3e 20 6e 6c 5f 64 61 79 29 0a 09 09 | ...if.(day_n[month].>.nl_day)... |
2ed20 | 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 2a 64 61 74 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 | ..break;..}..*date.=.cpu_to_le16 |
2ed40 | 28 6e 6c 5f 64 61 79 20 2d 20 64 61 79 5f 6e 5b 6d 6f 6e 74 68 20 2d 20 31 5d 20 2b 20 31 20 2b | (nl_day.-.day_n[month.-.1].+.1.+ |
2ed60 | 20 28 6d 6f 6e 74 68 20 3c 3c 20 35 29 20 2b 20 28 79 65 61 72 20 3c 3c 20 39 29 29 3b 0a 7d 0a | .(month.<<.5).+.(year.<<.9));.}. |
2ed80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2eda0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2edc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ede0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ee00 | 6e 63 70 66 73 2f 4d 61 6b 65 66 69 6c 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ncpfs/Makefile.................. |
2ee20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ee40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ee60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 | ....0000644.0001750.0001750.0000 |
2ee80 | 30 30 30 30 36 35 32 00 31 33 30 35 35 30 30 30 37 30 30 00 30 31 32 36 32 36 00 20 30 00 00 00 | 0000652.13055000700.012626..0... |
2eea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2eec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2eee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ef00 | 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...kubax.................. |
2ef20 | 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........kubax.................. |
2ef40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ef60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2ef80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2efa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2efc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2efe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f000 | 23 0a 23 20 4d 61 6b 65 66 69 6c 65 20 66 6f 72 20 74 68 65 20 6c 69 6e 75 78 20 6e 63 70 20 66 | #.#.Makefile.for.the.linux.ncp.f |
2f020 | 69 6c 65 73 79 73 74 65 6d 20 72 6f 75 74 69 6e 65 73 2e 0a 23 0a 0a 6f 62 6a 2d 24 28 43 4f 4e | ilesystem.routines..#..obj-$(CON |
2f040 | 46 49 47 5f 4e 43 50 5f 46 53 29 20 2b 3d 20 6e 63 70 66 73 2e 6f 0a 0a 6e 63 70 66 73 2d 79 20 | FIG_NCP_FS).+=.ncpfs.o..ncpfs-y. |
2f060 | 20 20 20 20 20 3a 3d 20 64 69 72 2e 6f 20 66 69 6c 65 2e 6f 20 69 6e 6f 64 65 2e 6f 20 69 6f 63 | .....:=.dir.o.file.o.inode.o.ioc |
2f080 | 74 6c 2e 6f 20 6d 6d 61 70 2e 6f 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 6f 20 73 6f 63 6b | tl.o.mmap.o.ncplib_kernel.o.sock |
2f0a0 | 2e 6f 20 5c 0a 09 09 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 6f 20 67 65 74 6f 70 74 2e 6f | .o.\...ncpsign_kernel.o.getopt.o |
2f0c0 | 0a 0a 6e 63 70 66 73 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 20 | ..ncpfs-$(CONFIG_NCPFS_EXTRAS).. |
2f0e0 | 20 2b 3d 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 6e 63 70 66 73 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 | .+=.symlink.o.ncpfs-$(CONFIG_NCP |
2f100 | 46 53 5f 4e 46 53 5f 4e 53 29 20 20 20 2b 3d 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 0a 23 20 49 66 20 | FS_NFS_NS)...+=.symlink.o..#.If. |
2f120 | 79 6f 75 20 77 61 6e 74 20 64 65 62 75 67 67 69 6e 67 20 6f 75 74 70 75 74 2c 20 70 6c 65 61 73 | you.want.debugging.output,.pleas |
2f140 | 65 20 75 6e 63 6f 6d 6d 65 6e 74 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 65 0a 23 | e.uncomment.the.following.line.# |
2f160 | 20 63 63 66 6c 61 67 73 2d 79 20 3a 3d 20 2d 44 44 45 42 55 47 5f 4e 43 50 3d 31 0a 0a 43 46 4c | .ccflags-y.:=.-DDEBUG_NCP=1..CFL |
2f180 | 41 47 53 5f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 6f 20 3a 3d 20 2d 66 69 6e 6c 69 6e 65 2d | AGS_ncplib_kernel.o.:=.-finline- |
2f1a0 | 66 75 6e 63 74 69 6f 6e 73 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | functions....................... |
2f1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
2f7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |