midrange.com code scratchpad
Name:
touchifs.rpgle
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
10/30/2017 09:37:31 pm
IP:
Logged
Description:
Proof of concept to show open() inherits the authorization list of the parent directory
Code:
  1. **free
  2.  
  3. ctl-opt dftactgrp(*no) actgrp('QILE') bnddir('QC2LE');
  4.  
  5. dcl-pr open int(10) extproc('open');
  6.   filename pointer value options(*string);
  7.   openflags int(10) value;
  8.   mode uns(10) value options(*nopass);
  9.   ccsid uns(10) value options(*nopass);
  10.   txtcreatid uns(10) value options(*nopass);
  11. end-pr;
  12.  
  13. dcl-pr close int(10) ExtProc('close');
  14.   fd int(10) value;
  15. end-pr;
  16.  
  17. dcl-pr errno int(10);
  18. end-pr;
  19.  
  20. dcl-pr p_errno pointer extproc('__errno');
  21. end-pr;
  22.  
  23. dcl-c O_RDONLY const(1);
  24. dcl-c O_WRONLY const(2);
  25. dcl-c O_RDWR const(4);
  26. dcl-c O_CREAT const(8);
  27. dcl-c O_EXCL const(16);
  28. dcl-c O_CCSID const(32);
  29. dcl-c O_TRUNC const(64);
  30. dcl-c O_APPEND const(256);
  31. dcl-c O_SYNC const(1024);
  32. dcl-c O_DSYNC const(2048);
  33. dcl-c O_RSYNC const(4096);
  34. dcl-c O_NOCTTY const(32768);
  35. dcl-c O_SHARE_RDONLY const(65536);
  36. dcl-c O_SHARE_WRONLY const(131072);
  37. dcl-c O_SHARE_RDWR const(262144);
  38. dcl-c O_SHARE_NONE const(524288);
  39. dcl-c O_CODEPAGE const(8388608);
  40. dcl-c O_TEXTDATA const(16777216);
  41. dcl-c O_TEXT_CREAT const(33554432);
  42. dcl-c O_INHERITMODE const(134217728);
  43. dcl-c O_LARGEFILE const(536870912);
  44.  
  45. dcl-c S_IRUSR const(256);
  46. dcl-c S_IWUSR const(128);
  47. dcl-c S_IXUSR const(64);
  48. dcl-c S_IRWXU const(448);
  49. dcl-c S_IRGRP const(32);
  50. dcl-c S_IWGRP const(16);
  51. dcl-c S_IXGRP const(8);
  52. dcl-c S_IRWXG const(56);
  53. dcl-c S_IROTH const(4);
  54. dcl-c S_IWOTH const(2);
  55. dcl-c S_IXOTH const(1);
  56. dcl-c S_IRWXO const(7);
  57.  
  58. dcl-s file varchar(64);
  59. dcl-s fd int(10) inz;
  60. dcl-s err int(10) inz;
  61.  
  62. file = '/home/buck/newfile';
  63. fd = open(file:
  64.           O_CREAT + O_CCSID + O_WRONLY + O_TRUNC + O_INHERITMODE:
  65.           S_IRWXU:
  66.           1200);
  67. err = errno();
  68. dsply fd;
  69. dsply errno;
  70. dump(a);
  71. callp close(fd);
  72.  
  73. *inlr = *on;
  74.  
  75. dcl-proc errno;
  76.   dcl-pi *n int(10);
  77.   end-pi;
  78.  
  79.   dcl-s rtnval int(10) based(errno_p);
  80.   dcl-s errno_p pointer;
  81.  
  82.   errno_p = p_errno;
  83.   return rtnval;
  84.  
  85. end-proc;
© 2004-2019 by midrange.com generated in 0.008s valid xhtml & css