This file is indexed.

/usr/share/pyshared/replay.py is in reinteract 0.5.0-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Copyright 2007 Owen Taylor
#
# This file is part of Reinteract and distributed under the terms
# of the BSD license. See the file COPYING in the Reinteract
# distribution for full details.
#
########################################################################

import gtk
import os

from numpy import float32, float64

import reinteract.custom_result as custom_result

class PlayResult(custom_result.CustomResult):
    def __init__(self, data):
        self.__data = data

    def create_widget(self):
        widget = gtk.Button("Play")
        widget.connect('clicked', self.play)

        widget.connect('button_press_event', self.on_button_press)
        widget.connect('realize', self.on_realize)

        return widget

    def play(self, *args):
        if self.__data.dtype == float32:
            command = "play -t raw -r 44100 -f -4 -L -q -"
        else:
            command = "play -t raw -r 44100 -f -8 -L -q -"
            
        f = os.popen(command, 'w')
        self.__data.tofile(f)
        f.close()

    def __save(self, filename):
        escaped = filename.replace("'", r"'\''")
        
        if self.__data.dtype == float32:
            command = "sox -t raw -r 44100 -f -4 -L -q - '%s'" % escaped
        else:
            command = "sox -t raw -r 44100 -f -8 -L -q - '%s'" % escaped
            
        f = os.popen(command, 'w')
        self.__data.tofile(f)
        f.close()

    def on_button_press(self, button, event):
        if event.button == 3:
            custom_result.show_menu(button, event, save_callback=self.__save)
            return True
        return False

    def on_realize(self, button):
        # Hack to get the right cursor over the button, since the button
        # doesn't set a cursor itself. button.window is the text view's
        # window, we have to search to find button.event_window, since
        # its not bound
        for c in button.window.get_children():
            if c.get_user_data() == button:
                cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
                c.set_cursor(cursor)
    
def play(data):
    if data.dtype != float32 and data.dtype != float64:
        raise TypeError("Data must be float32 or float64, not %s", data.dtype)
    
    return PlayResult(data)