Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Alexander_Naumov:SLE-12:Update
firmwarekit
dmesg_adjust.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File dmesg_adjust.patch of Package firmwarekit
--- dmesg.c | 74 ++++++++++++++++++++++++++++++-------------------------- libstandalone.c | 9 +++++- 2 files changed, 47 insertions(+), 36 deletions(-) Index: firmwarekit/dmesg.c =================================================================== --- firmwarekit.orig/dmesg.c +++ firmwarekit/dmesg.c @@ -44,17 +44,37 @@ void get_dmesg_buffer(void) { char *dmesg; char *c1, *c2; - int linecount = 0; + int linecount = 0, ret; dmesg = malloc(DMESG_SIZE); assert(dmesg!=NULL); + c1 = malloc(4096); + assert(dmesg!=NULL && c1!=NULL); system("/bin/dmesg -s 256000 > "DMESG_FILE); + FILE *f_dmesg; /* don't printk to the console; newt hates that */ klogctl (6, NULL, 0); + if (access(DMESG_FILE, R_OK)){ + system("/bin/dmesg -s 256000 > "DMESG_FILE); + } memset(dmesg, 0, DMESG_SIZE); - klogctl (4, dmesg, DMESG_SIZE); + memset(c1, 0, 4096); + + /* Clear ring buffer, we only want to get up to date messages + in further calls... */ + klogctl (5, NULL, 0); + + f_dmesg = fopen (DMESG_FILE, "r"); + if (f_dmesg == NULL){ + fprintf (stderr, "WARN: Could not open "DMESG_FILE); + free(dmesg); + free(c1); + return; + } + ret = fread(dmesg, 1, DMESG_SIZE-1, f_dmesg); + dmesg[ret]='\0'; /* Add to our resource list that we keep. The user * will have access to this when they look at the @@ -62,32 +82,22 @@ void get_dmesg_buffer(void) * see uri.c for implementation */ announce_resource("dmesg://", dmesg, NULL); - c1 = dmesg; - while (c1) { - /* get next line from dmesg before '\n' - * and put into 'c1' */ - c2 = strchr(c1, '\n'); - - /* break if we're at the end of dmesg */ - if (c2==NULL) - break; - - /* take out extra \n from beginning */ - *c2 = 0; - c2++; - - /* skip the <4> that is in front of each line */ - if (strlen(c1)>3 && c1[0]=='<') - c1+=3; - - /* now append the cleaned-up line to boot_dmesg */ - boot_dmesg = g_list_append(boot_dmesg, strdup(c1)); - linecount ++; - - /* put what's left of dmesg back into c1 */ - c1 = c2; + rewind(f_dmesg); + while (fgets(c1, 4095, f_dmesg)) { + /* skip the <4> that is in front of each line + We only need lines with <4>, rest is later appended stuff in + ordinary booted system + */ + c2=c1; + if (strlen(c1)>3 && c1[0]=='<' && c1[2]=='>'){ + c2+=3; + boot_dmesg = g_list_append(boot_dmesg, strdup(c2)); + linecount ++; + } } + fclose(f_dmesg); + free(c1); free(dmesg); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor