summarylogtreecommitdiffstats
path: root/fix_flatpak.rs
blob: 9bd6faa717fe73f81165f8c719df8ffb983a858d (plain)
ofshex dumpascii
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).....}.}.