• 大小: 190KB
    文件类型: .bz2
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签:

资源简介

udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及热插拔的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载固件时Linux 2.6.13内核。udev的最新版本依赖于升级后的的uevent接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动,除非使用noudev参数来禁用udev并使用传统的/dev来进行设备读取。

资源截图

代码片段和文件信息

/* ccdv.c
 *
 * Copyright (C) 2002-2003 by Mike Gleason NcFTP Software.
 * All Rights Reserved.
 *
 * Licensed under the GNU Public License.
 */
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define SETCOLOR_SUCCESS (gANSIEscapes ? “\033\1331;32m“ : ““)
#define SETCOLOR_FAILURE (gANSIEscapes ? “\033\1331;31m“ : ““)
#define SETCOLOR_WARNING (gANSIEscapes ? “\033\1331;33m“ : ““)
#define SETCOLOR_NORMAL (gANSIEscapes ? “\033\1330;39m“ : ““)

#define TEXT_BLOCK_SIZE 8192
#define INDENT 2

#define TERMS “vt100:vt102:vt220:vt320:xterm:xterm-color:ansi:linux:scoterm:scoansi:dtterm:cons25:cygwin“

size_t gNBufUsed = 0 gNBufAllocated = 0;
char *gBuf = NULL;
int gCCPID;
char gAction[200] = ““;
char gTarget[200] = ““;
char gAr[32] = ““;
char gArLibraryTarget[64] = ““;
int gDumpCmdArgs = 0;
char gArgsStr[1000];
int gColumns = 80;
int gANSIEscapes = 0;
int gExitStatus = 95;

static void DumpFormattedOutput(void)
{
char *cp;
char spaces[8 + 1] = “        “;
char *saved;
int curcol;
int i;

curcol = 0;
saved = NULL;
for (cp = gBuf + ((gDumpCmdArgs == 0) ? strlen(gArgsStr) : 0); ; cp++) {
if (*cp == ‘\0‘) {
if (saved != NULL) {
cp = saved;
saved = NULL;
} else break;
}
if (*cp == ‘\r‘)
continue;
if (*cp == ‘\t‘) {
saved = cp + 1;
cp = spaces + 8 - (8 - ((curcol - INDENT - 1) % 8));
}
if (curcol == 0) {
for (i = INDENT; --i >= 0; )
putchar(‘ ‘);
curcol = INDENT;
}
putchar(*cp);
if (++curcol == (gColumns - 1)) {
putchar(‘\n‘);
curcol = 0;
} else if (*cp == ‘\n‘)
curcol = 0;
}
free(gBuf);
} /* DumpFormattedOutput */



/* Difftime() only for timeval structures.  */
static void TimeValSubtract(struct timeval *tdiff struct timeval *t1 struct timeval *t0)
{
tdiff->tv_sec = t1->tv_sec - t0->tv_sec;
tdiff->tv_usec = t1->tv_usec - t0->tv_usec;
if (tdiff->tv_usec < 0) {
tdiff->tv_sec--;
tdiff->tv_usec += 1000000;
}
} /* TimeValSubtract */



static void Wait(void)
{
int pid2 status;

do {
status = 0;
pid2 = (int) waitpid(gCCPID &status 0);
} while (((pid2 >= 0) && (! WIFEXITED(status))) || ((pid2 < 0) && (errno == EINTR)));
if (WIFEXITED(status))
gExitStatus = WEXITSTATUS(status);
} /* Wait */



static int SlurpProgress(int fd)
{
char s1[71];
char *newbuf;
int nready;
size_t ntoread;
ssize_t nread;
struct timeval now tnext tleft;
fd_set ss;
fd_set ss2;
const char *trail = “/-\\|“ *trailcp;

trailcp = trail;
snprintf(s1 sizeof(s1) “%s%s%s... “ gAction gTarget[0] ? “ “ : ““ gTarget);
printf(“\r%-70s%-9s“ s1 ““);
fflush(stdout);

gettimeofday(&now NULL);
tnext = now;
tnext.tv_sec++;
tleft.tv_sec = 1;
tleft.tv_usec = 0;
FD_ZERO(&ss2);
FD_SET(fd &ss2);
for(;;) {
if (gNBufUsed == (gNBufAllocated - 1)) {
if ((newbuf = (char *) realloc(gBuf gNBufAllocated + TEXT_BLOCK_SIZE)) == NULL) {
perror(“ccdv: re

评论

共有 条评论

相关资源