ofs | hex dump | ascii |
---|
0000 | 75 73 65 20 73 74 64 3a 3a 66 66 69 3a 3a 7b 63 5f 76 6f 69 64 2c 20 43 53 74 72 69 6e 67 7d 3b | use.std::ffi::{c_void,.CString}; |
0020 | 0a 75 73 65 20 73 74 64 3a 3a 6d 65 6d 3a 3a 74 72 61 6e 73 6d 75 74 65 3b 0a 75 73 65 20 73 74 | .use.std::mem::transmute;.use.st |
0040 | 64 3a 3a 6f 73 3a 3a 72 61 77 3a 3a 7b 63 5f 63 68 61 72 2c 20 63 5f 69 6e 74 7d 3b 0a 0a 63 6f | d::os::raw::{c_char,.c_int};..co |
0060 | 6e 73 74 20 52 54 4c 44 5f 4e 45 58 54 3a 20 2a 6d 75 74 20 63 5f 76 6f 69 64 20 3d 20 2d 31 69 | nst.RTLD_NEXT:.*mut.c_void.=.-1i |
0080 | 36 34 20 61 73 20 2a 6d 75 74 20 63 5f 76 6f 69 64 3b 0a 0a 65 78 74 65 72 6e 20 22 43 22 20 7b | 64.as.*mut.c_void;..extern."C".{ |
00a0 | 0a 20 20 20 20 70 75 62 20 66 6e 20 64 6c 73 79 6d 28 68 61 6e 64 6c 65 3a 20 2a 6d 75 74 20 63 | .....pub.fn.dlsym(handle:.*mut.c |
00c0 | 5f 76 6f 69 64 2c 20 73 79 6d 62 6f 6c 3a 20 2a 63 6f 6e 73 74 20 63 5f 63 68 61 72 29 20 2d 3e | _void,.symbol:.*const.c_char).-> |
00e0 | 20 2a 6d 75 74 20 63 5f 76 6f 69 64 3b 0a 7d 0a 0a 23 5b 6e 6f 5f 6d 61 6e 67 6c 65 5d 0a 23 5b | .*mut.c_void;.}..#[no_mangle].#[ |
0100 | 61 6c 6c 6f 77 28 63 6c 69 70 70 79 3a 3a 6d 69 73 73 69 6e 67 5f 73 61 66 65 74 79 5f 64 6f 63 | allow(clippy::missing_safety_doc |
0120 | 29 5d 0a 70 75 62 20 75 6e 73 61 66 65 20 65 78 74 65 72 6e 20 22 43 22 20 66 6e 20 6f 70 65 6e | )].pub.unsafe.extern."C".fn.open |
0140 | 36 34 28 70 61 74 68 3a 20 2a 63 6f 6e 73 74 20 63 5f 63 68 61 72 2c 20 6f 66 6c 61 67 3a 20 63 | 64(path:.*const.c_char,.oflag:.c |
0160 | 5f 69 6e 74 29 20 2d 3e 20 63 5f 69 6e 74 20 7b 0a 20 20 20 20 6c 65 74 20 6f 72 69 67 69 6e 61 | _int).->.c_int.{.....let.origina |
0180 | 6c 5f 6f 70 65 6e 36 34 3a 20 65 78 74 65 72 6e 20 22 43 22 20 66 6e 28 2a 63 6f 6e 73 74 20 63 | l_open64:.extern."C".fn(*const.c |
01a0 | 5f 63 68 61 72 2c 20 63 5f 69 6e 74 29 20 2d 3e 20 63 5f 69 6e 74 20 3d 20 7b 0a 20 20 20 20 20 | _char,.c_int).->.c_int.=.{...... |
01c0 | 20 20 20 6c 65 74 20 66 20 3d 20 64 6c 73 79 6d 28 52 54 4c 44 5f 4e 45 58 54 2c 20 22 6f 70 65 | ...let.f.=.dlsym(RTLD_NEXT,."ope |
01e0 | 6e 36 34 00 22 2e 61 73 5f 70 74 72 28 29 20 61 73 20 5f 29 3b 0a 20 20 20 20 20 20 20 20 74 72 | n64.".as_ptr().as._);.........tr |
0200 | 61 6e 73 6d 75 74 65 28 66 29 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 6c 65 74 20 70 20 3d 20 7b | ansmute(f).....};......let.p.=.{ |
0220 | 0a 20 20 20 20 20 20 20 20 6c 65 74 20 70 20 3d 20 43 53 74 72 69 6e 67 3a 3a 66 72 6f 6d 5f 72 | .........let.p.=.CString::from_r |
0240 | 61 77 28 70 61 74 68 20 61 73 20 5f 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 70 32 20 3d 20 | aw(path.as._);.........let.p2.=. |
0260 | 70 2e 63 6c 6f 6e 65 28 29 3b 0a 20 20 20 20 20 20 20 20 73 74 64 3a 3a 6d 65 6d 3a 3a 66 6f 72 | p.clone();.........std::mem::for |
0280 | 67 65 74 28 70 29 3b 0a 20 20 20 20 20 20 20 20 70 32 0a 20 20 20 20 7d 3b 0a 20 20 20 20 69 66 | get(p);.........p2.....};.....if |
02a0 | 20 70 20 3d 3d 20 43 53 74 72 69 6e 67 3a 3a 6e 65 77 28 22 2f 61 70 70 2f 73 68 61 72 65 2f 73 | .p.==.CString::new("/app/share/s |
02c0 | 68 6f 72 74 77 61 76 65 2f 64 65 2e 68 61 65 63 6b 65 72 66 65 6c 69 78 2e 53 68 6f 72 74 77 61 | hortwave/de.haeckerfelix.Shortwa |
02e0 | 76 65 2e 67 72 65 73 6f 75 72 63 65 22 29 2e 75 6e 77 72 61 70 28 29 0a 20 20 20 20 7b 0a 20 20 | ve.gresource").unwrap().....{... |
0300 | 20 20 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 6f 70 65 6e 36 34 28 0a 20 20 20 20 20 20 20 20 20 | ......original_open64(.......... |
0320 | 20 20 20 43 53 74 72 69 6e 67 3a 3a 6e 65 77 28 22 2f 75 73 72 2f 73 68 61 72 65 2f 73 68 6f 72 | ...CString::new("/usr/share/shor |
0340 | 74 77 61 76 65 2f 64 65 2e 68 61 65 63 6b 65 72 66 65 6c 69 78 2e 53 68 6f 72 74 77 61 76 65 2e | twave/de.haeckerfelix.Shortwave. |
0360 | 67 72 65 73 6f 75 72 63 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 75 6e 77 | gresource")..................unw |
0380 | 72 61 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 69 6e 74 6f 5f 72 61 77 28 | rap()..................into_raw( |
03a0 | 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 6c 61 67 2c 0a 20 20 20 20 20 20 20 20 29 0a | ),.............oflag,.........). |
03c0 | 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 70 2e 74 6f 5f 73 74 72 28 29 2e 75 6e 77 72 61 70 28 | ....}.else.if.p.to_str().unwrap( |
03e0 | 29 2e 63 6f 6e 74 61 69 6e 73 28 22 66 61 76 69 63 6f 6e 22 29 20 7c 7c 20 70 2e 74 6f 5f 73 74 | ).contains("favicon").||.p.to_st |
0400 | 72 28 29 2e 75 6e 77 72 61 70 28 29 2e 63 6f 6e 74 61 69 6e 73 28 22 72 65 63 6f 72 64 69 6e 67 | r().unwrap().contains("recording |
0420 | 22 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 20 | ").{.........//.For.some.reason. |
0440 | 66 61 76 69 63 6f 6e 73 2f 72 65 63 6f 72 64 69 6e 67 20 70 65 72 6d 69 73 73 69 6f 6e 20 63 68 | favicons/recording.permission.ch |
0460 | 61 6e 67 65 73 20 73 6f 6d 65 74 69 6d 65 73 20 74 6f 20 30 30 30 0a 20 20 20 20 20 20 20 20 2f | anges.sometimes.to.000........./ |
0480 | 2f 20 54 68 69 73 20 69 73 20 70 72 6f 62 61 62 6c 79 20 64 75 65 20 74 6f 20 68 6f 77 20 66 6c | /.This.is.probably.due.to.how.fl |
04a0 | 61 74 70 61 6b 20 73 61 6e 64 62 6f 78 20 77 6f 72 6b 73 2e 0a 20 20 20 20 20 20 20 20 2f 2f 20 | atpak.sandbox.works..........//. |
04c0 | 54 68 69 73 20 62 6c 6f 63 6b 73 20 77 6f 72 6b 73 61 72 6f 75 6e 64 20 69 74 2e 0a 20 20 20 20 | This.blocks.worksaround.it...... |
04e0 | 20 20 20 20 6c 65 74 20 72 65 73 75 6c 74 20 3d 20 6f 72 69 67 69 6e 61 6c 5f 6f 70 65 6e 36 34 | ....let.result.=.original_open64 |
0500 | 28 70 2e 63 6c 6f 6e 65 28 29 2e 69 6e 74 6f 5f 72 61 77 28 29 2c 20 6f 66 6c 61 67 29 3b 0a 20 | (p.clone().into_raw(),.oflag);.. |
0520 | 20 20 20 20 20 20 20 69 66 20 72 65 73 75 6c 74 20 3d 3d 20 2d 31 20 7b 0a 20 20 20 20 20 20 20 | .......if.result.==.-1.{........ |
0540 | 20 20 20 20 20 73 74 64 3a 3a 70 72 6f 63 65 73 73 3a 3a 43 6f 6d 6d 61 6e 64 3a 3a 6e 65 77 28 | .....std::process::Command::new( |
0560 | 22 63 68 6d 6f 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 61 72 67 28 22 2b | "chmod")..................arg("+ |
0580 | 72 77 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 61 72 67 28 70 2e 74 6f 5f 73 | rw")..................arg(p.to_s |
05a0 | 74 72 28 29 2e 75 6e 77 72 61 70 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e | tr().unwrap()).................. |
05c0 | 73 74 61 74 75 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 75 6e 77 72 61 70 | status()..................unwrap |
05e0 | 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 6f 70 65 6e 36 34 28 | ();.............original_open64( |
0600 | 70 61 74 68 2c 20 6f 66 6c 61 67 29 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 | path,.oflag).........}.else.{... |
0620 | 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d | ..........result.........}.....} |
0640 | 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6f 72 69 67 69 6e 61 6c 5f 6f 70 65 6e 36 34 28 | .else.{.........original_open64( |
0660 | 70 61 74 68 2c 20 6f 66 6c 61 67 29 0a 20 20 20 20 7d 0a 7d 0a | path,.oflag).....}.}. |