1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "file_image.h"
28 #include <sys/sysmacros.h>
32 static void do_pagein (const char * filename
)
35 file_image image
= FILE_IMAGE_INITIALIZER
;
37 if (file_image_open (&image
, filename
) != 0)
40 if ((result
= file_image_pagein (&image
)) != 0)
42 fprintf (stderr
, "file_image_pagein %s: %s\n", filename
, strerror(result
));
45 file_image_close (&image
);
48 static int isRotational(char const * path
)
57 if (stat(path
, &out
) == -1)
59 major
= major(out
.st_dev
);
60 minor
= 0; /* minor(out.st_dev); only the device itself has a queue */
61 sprintf(fullpath
,"/sys/dev/block/%d:%d/queue/rotational",major
,minor
);
62 if ((fp
= fopen(fullpath
, "r")) == NULL
)
64 if (fgets(&type
, 1, fp
))
71 void pagein_execute(char const * path
, char const * file
)
76 if(!isRotational(path
))
78 memset(fullpath
, 0, sizeof(fullpath
));
79 strncpy (fullpath
, path
, 3000);
80 if (!(p
= strrchr (fullpath
, '/')))
84 strncpy(p
, file
, 1024);
86 if ((fp
= fopen (fullpath
, "r")) == NULL
)
89 fprintf (stderr
, "fopen %s: %s\n", fullpath
, strerror(errno
));
92 while (fgets (p
, 1024, fp
) != NULL
)
94 p
[strlen(p
) - 1] = '\0';
96 /* paths relative to the location of the pagein file */
102 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */