home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / os / vms / 12868 < prev    next >
Encoding:
Text File  |  1992-07-28  |  3.8 KB  |  94 lines

  1. Newsgroups: comp.os.vms
  2. Path: sparky!uunet!cs.utexas.edu!hermes.chpc.utexas.edu!aswx266
  3. From: aswx266@chpc.utexas.edu (Michael Lemke)
  4. Subject: Re: Q: VMS OWNERSHIP
  5. Message-ID: <1992Jul28.222243.19282@chpc.utexas.edu>
  6. Organization: The University of Texas System - CHPC
  7. References: <01GMEK6MLDG88WVZ3V@MIS.AVPMI.YORKU.CA> <1992Jul28.154701.1@cstp.umkc.edu>
  8. Date: Tue, 28 Jul 92 22:22:43 GMT
  9. Lines: 83
  10.  
  11. In article <1992Jul28.154701.1@cstp.umkc.edu> mckeever@cstp.umkc.edu writes:
  12. >In article <01GMEK6MLDG88WVZ3V@MIS.AVPMI.YORKU.CA>, JMCCARTHY@MIS.AVPMI.YORKU.CA (John McCarthy) writes:
  13. >
  14. >> The basic problem that I want to solve is to allow someone else (e.g. the 
  15. >> departmental secretary) to update a file that I currently own. However, I don't 
  16. >> want anybody else to get to it, and I don't want her to be able to change the 
  17. >> access rights.
  18. >> 
  19. [some ideas about ACL's deleted]
  20.  
  21. [>points out the problem with new versions when using editor]
  22.  
  23. >The fix is not to let her use an editor to update the file.  If she is just
  24. >adding info to the end of the file, have her edit a temporary file and then
  25. >use APPEND to tack her changes onto the end of the file owned by you.   If
  26. >she needs to make random changes all over the file, the workaround is not
  27. >as easy.  You'll have to write some sort of program that changes the
  28. >contents of the file without writing a new version.  You could have her
  29. >edit the file, make her changes, save a temporary file, and then run a C
  30. >program that just empties out the old data and rewrites it with the
  31. >information in the temporary file.  Not pretty and if it's a big file not
  32. >very efficient either.  It seems to me to be the quickest fix though.
  33. >
  34.  
  35. No need to write a program.  COPY/OVER/REPLACE does what is needed.  I
  36. once wrote a procedure which does exactly what you describe.  I include
  37. it here.  It has a silly default for the file name which was approriate
  38. for my application but you might want to change it.  See notes in the
  39. procedure.  If, however, you only need it for a single fixed file (as I
  40. did) just define a logical STARLIST and use the proc as is.
  41.  
  42. Michael
  43.  
  44. ================================================================================
  45.  
  46. $ IF P1 .NES. " ?" THEN GOTO NO_HELP
  47. $ TYP/PAGE SYS$INPUT
  48.                              S T A R E D . C O M 
  49.                              ===================
  50.  
  51. Edits a file without producing a new version, i.e. it *overwrites* the file to
  52. be edited. This allows to edit a file of another user provided the file has
  53. write permission. Uses SYS$SCRATCH for temporary file.
  54.  
  55. This procedure looks for a logical name STARLIST. If not defined, the default
  56. file specification is STARLIST.DAT. The default edit command is EDIT.
  57.  
  58. P1:    Edit command (optional), e.g.: VI OTTO.FOR (default: EDIT STARLIST)
  59.  
  60.                            19-FEB-1991 22:37:24.79
  61. $ EXIT
  62. $NO_HELP:
  63. $ EDIT_COMMAND = P1
  64. $ IF EDIT_COMMAND .EQS. " " THEN EDIT_COMMAND := EDIT
  65. $ EDIT_COMMAND = F$EDIT( EDIT_COMMAND, "TRIM,UPCASE,COMPRESS" )
  66. $ EDITOR = F$ELEMENT( 0, " ", EDIT_COMMAND )
  67. $ FILE = F$ELEMENT( 1, " ", EDIT_COMMAND )
  68. $ IF FILE .EQS. " " THEN FILE := STARLIST
  69. $ FILE = F$PARSE( FILE, "STARLIST.DAT" )
  70. $ FILE_1 = F$SEARCH( FILE )
  71. $ IF FILE_1 .EQS. "" 
  72. $ THEN 
  73. $    FILE = F$PARSE( FILE, "STARLIST.DAT" )
  74. $ ELSE
  75. $    FILE = FILE_1
  76. $ ENDIF
  77. $ OLD_FILE = F$SEARCH( "SYS$SCRATCH:STARED.TMP" )
  78. $ ON WARNING THEN GOTO ERR_ED
  79. $ DEFINE/USER SYS$INPUT SYS$COMMAND
  80. $ 'EDITOR'/OUT=SYS$SCRATCH:STARED.TMP 'FILE'
  81. $ ON WARNING THEN CONTINUE
  82. $ IF OLD_FILE .NES. F$SEARCH( "SYS$SCRATCH:STARED.TMP" )
  83. $ THEN
  84. $    COPY/NOLOG/OVER/REPLACE SYS$SCRATCH:STARED.TMP 'FILE'
  85. $    DELETE/NOLOG SYS$SCRATCH:STARED.TMP;
  86. $ ENDIF
  87. $ EXIT
  88. $ERR_ED:
  89. $ WRITE SYS$OUTPUT "Your editor ''EDITOR' can't be used. Sorry."
  90. -- 
  91. Michael Lemke
  92. Astronomy, UT Austin, Texas
  93. (michael@io.as.utexas.edu or UTSPAN::UTADNX::IO::MICHAEL [SPAN])
  94.