漂在北京之走入昌平(一)

依然记得,那一年是2000
七月的北京,热情如火
珠市口,对于初到北京的我,本没有什么印象,却在那一天深深的刻在了我的心底

骑着刚买的自行车,刚转过那条繁华的大街,一位警察便拦住了我,查证件,于是身份证,学历证都给了他,他看后,什么也没说,便把我带到了位于珠市口的派出所,那里聚集了好多人,我一时还闹不清是怎么回事,只是隐隐从嘈杂的话语声中明白了事情的大概。心里忽然有一种不安,想起了常被提起的一个词“收容”,心想不会这种事也落到了自己头上吧。

我试着去跟警察沟通,但每次都被挡了回来,我有些后悔,为什么来北京不马上弄一个暂住证,但随后的一幕场景却又让我释然了,一个年轻人拿着手中的暂住证给那位警察,说:我有暂住证,那位警察拿过来看了看,随手就把他撕了,说:还有吗?那个年轻人嘴张着大大的,却什么也说不出来。我不知道那个年轻人的暂住证是否过期,但警察的态度却让我吃惊。

随着时间的推移,我的心也渐渐的落到了沉处,心里明白,自己确实是走入了一条死胡同,黄昏时分,我和周边的不知名不知姓的几十个人,一起被送上了一辆豪华大巴,我不知道会被送到哪里,但肯定的知道,这个地方肯定不是什么好地方。

车出了城,我分不清东南西北,只知道走了好久,车在一个满是电网的围墙边停了下来,走入那扇围墙,我忽然想起我所看过的一部电影“监狱风云”,情景还是蛮像的,铁栏杆,上下两层,然后就是铁栏杆后的人,乌呀呀的一片,男男女女,老老少少。

天空不知何时下起了雨,漓漓沥沥的,不大,却像是我当前的心绪,扯也扯不断。

站在栏杆后,我的大脑有些空白,脚下漫无目的的在屋子里走来走去。

忽然,一个声音传来,“你是哪的”,我抬头看了看他,屋里有一铺通炕,他坐在炕头,整个屋子只有他那有几床被子,还有水,方便面。看样是个铺头之类的,这是我在电影中看过的,没想到居然在现实中也真是这样。

 

“东北的”,我答到,他点了点头,回头对周边的人大喊了一声,“都给我起来,空个地方”,于是,一幕让我想像不到的事发生了,炕上趟着的二三十人,居然全都坐了起来,转瞬之间,在拥挤的炕铺中便空出了一小片地方,他对着我说:“你晚上就趟在这吧”,然后,又指着他的那些食物说:“饿了这有吃的,水,十元一瓶,干脆面十元一包,烟,二元一根”,我点点头,说“好,谢谢你,但现在我不饿”,径自走到空出的地方躺了下来,虽然从中午开始就没有吃东西,但却实在也没有什么胃口,何况那么贵,“这不是在抢钱吗?”,我在心里暗暗说,事后,才知道,在这里确实是有抢钱的,让你买东西其实是已经很不错了,我猜测,可能跟我是东北人有关,因为那个炕铺“大哥”也是东北的。

栏外的雨依旧没有停,也依旧不断的有人被送了进来,嘈杂的声音时时在耳边响起,但我却已无心去关注这些,一天的疲惫侵绕着我,注定了这一夜,我在雨中独眠。

 

第二天的清晨来的似乎比往常早,当我醒来的时候,天已经亮了,我没有表,也没有手机,不知道是几点,我看了看四周,栏边,过道,站满了人,这一夜,他们应该就是站着过来的,相对而言,我还是幸运的,起码还有个地方躺着,我这样安慰自己,即来之,则安之,不然又怎么样呢

我站起身,四处开始溜达,开始寻找老乡。没多久,就让我找到了两个,其中一个还居然是军人,问起他的经历,他的怨言明显还没有消除,他是哈尔滨人,这次来北京是看望战友的,到战友那把东西扔下,然后穿了个拖鞋出来买东西,结果就被弄进来了,此时,战友还不知道呢。他摇摇头,满是无奈的表情,另一个岁数则看起来小的多,吉林胶河市人,在北京打工,查证件的事他经历很多,不过这次不走运,正好没带,我们一边聊,一边同四周的人打听,究竟什么时候可以出去?但打听到的结果却让我们隐隐有不安的感觉,能不能早点回去是跟所在的户口所在地有关的,河北因为离得近,几乎天天都有当地的公安机关来领人,而远的则没有那么幸运,在边上躺着的一位藏族同胞居然已经在这里呆了半年了。问其原因,才知道来领人的条件是要凑满一个列车组,否则,就只能等了。我们互相望了一眼,没有说话,但意思大家却都明白,乖乖,如果一辈子凑不足人,难道要在这里呆一辈子吗?

 

<think>我们分析`blockAndroidMks`函数中触发`ctx.Fatalf`的条件。该函数的目的是阻止(即报错并终止)某些Android.mk文件的存在。 函数流程如下: 1. 从几个指定的allowlist文件中读取允许的Android.mk文件路径,并合并到全局的`androidmk_allowlist`切片中。 2. 对`androidmk_allowlist`进行排序和去重。 3. 从`vendor/google/build/androidmk/denylist.txt`文件中读取denylist,并追加到全局的`androidmk_denylist`切片中。 4. 遍历传入的`androidMks`(即待检查的Android.mk文件路径列表),对每个文件路径`mkFile`: - 遍历`androidmk_denylist`中的每个字符串`d`(每个`d`是个被禁止的前缀路径) - 如果`mkFile`以`d`开头(即该文件路径在禁止目录下)且该文件不在`androidmk_allowlist`中(即不在允许名单中),则触发`ctx.Fatalf`。 因此,触发`ctx.Fatalf`的条件是: - 存在个被禁止的前缀`d`(在`androidmk_denylist`中),使得`mkFile`以`d`开头。 - 同时,`mkFile`不在`androidmk_allowlist`中。 注意:`androidmk_allowlist`在函数开始时被扩展,包含了多个文件中的允许列表,并且进行了去重排序。因此,只有那些在denylist的路径下,且没有在allowlist中出现的Android.mk文件才会触发错误。 举例说明: - 假设有个Android.mk文件路径为`art/Android.mk`,则: - 检查`art/`是否在denylist中:是的,因为`androidmk_denylist`的第个元素就是`art/`。 - 然后检查`art/Android.mk`是否在`androidmk_allowlist`中:在,因为`androidmk_allowlist`中明确包含了`"art/Android.mk"`(见变量初始化)。因此不会触发错误。 - 假设有个Android.mk文件路径为`art/test/Android.mk`,则: - 它被`art/`前缀匹配(因为`art/`在denylist中),但是`art/test/Android.mk`不在`androidmk_allowlist`中(除非在某个allowlist文件中加入了这个路径),那么就会触发错误。 总结:当Android.mk文件路径匹配了denylist中的任意个前缀,并且该文件路径没有出现在allowlist中时,就会触发`ctx.Fatalf`。 下面我们生成相关问题。 </think>### blockAndroidMks函数触发Fatalf的条件分析 在`blockAndroidMks`函数中,会触发`ctx.Fatalf`错误终止的条件如下: 1. **文件路径匹配denylist前缀** ```go if strings.HasPrefix(mkFile, d) // d来自androidmk_denylist ``` - 当前Android.mk文件路径(`mkFile`)必须以denylist中的某个字符串为前缀 - denylist包含预定义的路径前缀(如`art/`, `bionic/`等)和从文件中加载的路径 2. **文件不在allowlist中** ```go && !slices.Contains(androidmk_allowlist, mkFile) ``` - 文件路径未出现在allowlist中 - allowlist包含预定义路径(如`art/Android.mk`)和从多个文件加载的例外路径 3. **同时满足时触发错误** ```go ctx.Fatalf("Found blocked Android.mk file: %s...", mkFile) ``` 当同时满足路径匹配denylist前缀且不在allowlist中时,抛出致命错误 ### 示例说明 假设有以下文件路径: - `art/test/Android.mk` ➔ 触发错误(匹配`art/`前缀但不在allowlist) - `art/Android.mk` ➔ 不触发(虽然匹配`art/`前缀但明确在allowlist) - `kernel/configs/Android.mk` ➔ 触发错误(匹配denylist且不在allowlist) - `vendor/app/Android.mk` ➔ 不触发(未匹配任何denylist前缀) ### 函数工作流程图 ```mermaid graph TD A[开始遍历AndroidMk文件] --> B{路径匹配denylist前缀?} B -->|Yes| C{文件在allowlist中?} B -->|No| D[跳过检查] C -->|No| E[触发Fatalf错误] C -->|Yes| D D --> F[继续检查下个文件] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值