summaryrefslogtreecommitdiff
path: root/tools/display-fpathconf.py
blob: d40cbae206fa1d67ac410f7dc712a0f6b40a5e53 (plain)
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
#!/usr/bin/env python
"""Displays os.fpathconf values related to terminals. """
from __future__ import print_function
import sys
import os


def display_fpathconf():
    DISP_VALUES = (
        ('PC_MAX_CANON', ('Max no. of bytes in a '
                          'terminal canonical input line.')),
        ('PC_MAX_INPUT', ('Max no. of bytes for which '
                          'space is available in a terminal input queue.')),
        ('PC_PIPE_BUF', ('Max no. of bytes which will '
                         'be written atomically to a pipe.')),
        ('PC_VDISABLE', 'Terminal character disabling value.')
    )
    FMT = '{name:<13} {value:<5} {description}'

    # column header
    print(FMT.format(name='name', value='value', description='description'))
    print(FMT.format(name=('-' * 13), value=('-' * 5), description=('-' * 11)))

    fd = sys.stdin.fileno()
    for name, description in DISP_VALUES:
        key = os.pathconf_names.get(name, None)
        if key is None:
            value = 'UNDEF'
        else:
            try:
                value = os.fpathconf(fd, name)
            except OSError as err:
                value = 'OSErrno {0.errno}'.format(err)
        if name == 'PC_VDISABLE':
            value = hex(value)
        print(FMT.format(name=name, value=value, description=description))
    print()


if __name__ == '__main__':
    display_fpathconf()