Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
htop
Commits
7dcd2beb
Commit
7dcd2beb
authored
Oct 16, 2009
by
Hisham Muhammad
Browse files
extra checks for lsof failures
parent
a20ba78b
Changes
2
Hide whitespace changes
Inline
Side-by-side
OpenFilesScreen.c
View file @
7dcd2beb
...
...
@@ -26,7 +26,7 @@ in the source distribution for its full text.
typedef struct OpenFiles_ProcessData_ {
char* data[256];
struct OpenFiles_FileData_* files;
bool failed
;
int error
;
} OpenFiles_ProcessData;
typedef struct OpenFiles_FileData_ {
...
...
@@ -80,16 +80,16 @@ static OpenFiles_ProcessData* OpenFilesScreen_getProcessData(int pid) {
OpenFiles_ProcessData
*
process
=
calloc
(
sizeof
(
OpenFiles_ProcessData
),
1
);
OpenFiles_FileData
*
file
=
NULL
;
OpenFiles_ProcessData
*
item
=
process
;
process
->
failed
=
true
;
bool
anyRead
=
false
;
if
(
!
fd
)
{
process
->
error
=
127
;
return
process
;
}
while
(
!
feof
(
fd
))
{
int
cmd
=
fgetc
(
fd
);
if
(
cmd
==
EOF
&&
!
anyRead
)
{
process
->
failed
=
true
;
if
(
cmd
==
EOF
&&
!
anyRead
)
break
;
}
anyRead
=
true
;
process
->
failed
=
false
;
char
*
entry
=
malloc
(
1024
);
if
(
!
fgets
(
entry
,
1024
,
fd
))
break
;
char
*
newline
=
strrchr
(
entry
,
'\n'
);
...
...
@@ -106,7 +106,7 @@ static OpenFiles_ProcessData* OpenFilesScreen_getProcessData(int pid) {
}
item
->
data
[
cmd
]
=
entry
;
}
pclose
(
fd
);
process
->
error
=
pclose
(
fd
);
return
process
;
}
...
...
@@ -115,8 +115,10 @@ static void OpenFilesScreen_scan(OpenFilesScreen* this) {
int
index
=
MAX
(
Panel_getSelectedIndex
(
panel
),
0
);
Panel_prune
(
panel
);
OpenFiles_ProcessData
*
process
=
OpenFilesScreen_getProcessData
(
this
->
process
->
pid
);
if
(
process
->
failed
)
{
if
(
process
->
error
==
127
)
{
Panel_add
(
panel
,
(
Object
*
)
ListItem_new
(
"Could not execute 'lsof'. Please make sure it is available in your $PATH."
,
0
));
}
else
if
(
process
->
error
==
1
)
{
Panel_add
(
panel
,
(
Object
*
)
ListItem_new
(
"Failed listing open files."
,
0
));
}
else
{
OpenFiles_FileData
*
file
=
process
->
files
;
while
(
file
)
{
...
...
OpenFilesScreen.h
View file @
7dcd2beb
...
...
@@ -28,7 +28,7 @@ in the source distribution for its full text.
typedef
struct
OpenFiles_ProcessData_
{
char
*
data
[
256
];
struct
OpenFiles_FileData_
*
files
;
bool
failed
;
int
error
;
}
OpenFiles_ProcessData
;
typedef
struct
OpenFiles_FileData_
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment