POSIX permission mapping to Windows DACL(2)

上篇是通过修改文件的安全信息来实现。那么首先一个坑就是,如果文件本身没有写权限,麻烦就大了。虽然可以通过修改DCAL权限得到写权限,根据“代码多就是bug多”的原则,很容易夜长梦多,节外生枝。所以要在创建文件时直接指定权限。

总的过程:先喘一口气,然后根据sid和对应的权限创建Explicit Access,根据Explicit Access创建ACL,用ACL创建security descriptor,用security descriptor创建security attributes ,现在可以用security attributes 进行createfile了。有没有感受到Windo[……]

Read more

Posted in tittle tattle | 2 Comments

POSIX permission mapping to Windows DACL

在我接触Windows之前,对Windows的文件权限是不屑一顾。要用的时候才发现,Windows文件权限的组合远多于POSIX的rwx。这个坑花了三四天的时间。一句话总结:Windows虽然有更多的组合,但是不能实现全部的rwx组合。

首先是权限本身的转换,这里有个自认为完美的实现,只用一个掩码变量实现x, w, r等3种权限和OTH, GRP,USR等3个用户组的遍历,根据掩码得到的结果保存Windows下对应的权限。

创建3个sid时要特别注意其SID_IDENTIFIER_AUTHORITY 和RID。SID_IDENTIFIER_AUTHORITY分别是SECURITY_[……]

Read more

Posted in tittle tattle | Leave a comment

-ffunction-sections -fdata-sections -Wl, –gc-sections编译选项

https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gnat_ugn/Compilation-options.html

实际上gcc和clang均可支持。当使用-ffunction-sections -fdata-sections这两个参数编译,并且在链接时使用-Wl,–gc-sections参数,就可以将无用的代码进行删除。

编译时-ffunction-sections 和 -fdata-sections 将每个函数或符号创建为一个sections,每个sections名与function或data名保持一致;链接时-Wl,–gc-sections[……]

Read more

Posted in tittle tattle | Leave a comment

package command

查询文件属于哪个包:

查询包的基本信息:

查询包的全部文件:

 [……]

Read more

Posted in tittle tattle | Leave a comment

ninja: error: manifest ‘build.ninja’ still dirty after 100 tries

网上有很多例子是基于ninja的bug。排除ninja的问题后还有错误:

带上explain参数能显示具体的错误:

查看一下文件时间,Modify time还在未来:

修改文件时间到过去或者把系统时间设在将来,错误消失了。

关于Jenkins上用cpack打包时怎么会把文件时间设在未来,待续。[……]

Read more

Posted in tittle tattle | Leave a comment

warning C4090: ‘function’: different ‘const’ qualifiers

代码如下:

错误如下:

有人已经贴了解决方案了,https://stackoverflow.com/questions/2819535/unable-to-free-const-pointers-in-c

就是free的参数不能是const类型的,可以来个类型转换:

 [……]

Read more

Posted in tittle tattle | Leave a comment

error C2017: illegal escape sequence

用vs2017编译时一直报错:

原来是因为宏定义时转义符后面多了个空格:

这么隐蔽的问题,显然是隐患。

在.vimrc中添加高亮:

显示效果如下:

[……]

Read more

Posted in tittle tattle | Leave a comment

vi相关

列模式下插入:Ctrl + i

列模式下替换:选中列后按c

保存到只读文件::w !sudo tee %

删除行尾空格:用替换实现,%s/\s\+$//g

同样的思路,删除空行或者只含有空格的行:%s/^\s\*$//g

匹配printf但不匹配定制的printf(此处为_printf):

/\(_\)\@<!printf

vim的正则表达与标准regex不一样,如需查看帮助:

:h /[

:h /zero-width

:h /\@

匹配类型转换,添加空格:int a = (int)b; -> int a = (in[……]

Read more

Posted in tittle tattle | Leave a comment

ipdb修改代码显示行数

以为ipdb能够和gdb一样用tui方式运行,结果还是有点遗憾。

补救办法是可以将默认的3行改大。

此时可以找到相应的__main__.py为/usr/local/lib/python3.6/dist-packages/ipdb/__main__.py。

修改__main__.py中的context为合适的数值,如下所示:

 

修改后效果如下:

ps:以上测试[……]

Read more

Posted in tittle tattle | Leave a comment

git相关

工作区:当前路径下ls或cat能够看到的目录及文件。

暂存区:工作区的历史快照的合集,每次add操作是此合集的一部分。对同一个文件多次add并不是冲突,因为这是同一个作者的修改,以时间为序,最终状态为结果。

如果是多个作者对同一个文件的相同位置(直观说是行数)进行修改,那么就产生了无法直接解决的冲突:时间先后顺序并不能反映出大家最终的目标。

添加upstream:

删除upstream的push:

设置用本地时间显示:
[crayon-[……]

Read more

Posted in tittle tattle | Leave a comment