void android_printf(int level, char *format, ...) { va_list ap; va_start(ap, format); vsprintf(android_printf_buf, format, ap); va_end(ap); if( level == MSG_MSGDUMP) xlog_printf(ANDROID_LOG_VERBOSE, "wpa_supplicant", "%s", android_printf_buf); else if( level == MSG_DEBUG) xlog_printf(ANDROID_LOG_DEBUG, "wpa_supplicant", "%s", android_printf_buf); else if( level == MSG_INFO) xlog_printf(ANDROID_LOG_INFO, "wpa_supplicant", "%s", android_printf_buf); else if( level == MSG_WARNING) xlog_printf(ANDROID_LOG_WARN, "wpa_supplicant", "%s", android_printf_buf); else xlog_printf(ANDROID_LOG_ERROR, "wpa_supplicant", "%s", android_printf_buf); }
void android_printf(int level, char *format, ...) { va_list ap; char *buf; const int buflen=2048; int cnt=0; buf = os_malloc(buflen); if(buf == NULL) { xlog_printf(ANDROID_LOG_ERROR, "wpa_supplicant", "android_printf : Failed to allocate massage buffer"); return; } va_start(ap, format); cnt = vsnprintf(buf, buflen-sizeof(char), format, ap); va_end(ap); if(cnt < 0 ) { xlog_printf(ANDROID_LOG_ERROR, "wpa_supplicant", "android_printf : Log information is too long"); return; } if( level == MSG_MSGDUMP) xlog_printf(ANDROID_LOG_VERBOSE, "wpa_supplicant", "%s", buf); else if( level == MSG_DEBUG) xlog_printf(ANDROID_LOG_DEBUG, "wpa_supplicant", "%s", buf); else if( level == MSG_INFO) xlog_printf(ANDROID_LOG_INFO, "wpa_supplicant", "%s", buf); else if( level == MSG_WARNING) xlog_printf(ANDROID_LOG_WARN, "wpa_supplicant", "%s", buf); else xlog_printf(ANDROID_LOG_ERROR, "wpa_supplicant", "%s", buf); os_free(buf); }
void DirectVolume::handleDiskChanged(const char *devpath, NetlinkEvent *evt) { int major = atoi(evt->findParam("MAJOR")); int minor = atoi(evt->findParam("MINOR")); char nodepath[255]; int fd = 0; if ((major != mDiskMajor) || (minor != mDiskMinor)) { return; } SLOGI("Volume %s disk has changed", getLabel()); const char *tmp = evt->findParam("NPARTS"); if (tmp) { mDiskNumParts = atoi(tmp); } else { SLOGW("Kernel block uevent missing 'NPARTS'"); mDiskNumParts = 1; } /* int partmask = 0; int i; for (i = 1; i <= mDiskNumParts; i++) { partmask |= (1 << i); } mPendingPartMap = partmask; */ mPendingPartNum = mDiskNumParts; for (int i = 0; i < MAX_PARTITIONS; i++) mPartMinors[i] = -1; if (getState() != Volume::State_Formatting) { if(evt->findParam("DISK_MEDIA_CHANGE")) { xlog_printf(ANDROID_LOG_INFO, LOG_TAG, "UsbPatch: disk change with DISK_MEDIA_CHANGE"); snprintf(nodepath, sizeof(nodepath), "/dev/block/vold/%d:%d", major, minor); xlog_printf(ANDROID_LOG_INFO, LOG_TAG, "UsbPatch: Check device node (%s)existence in (%s)!", nodepath, __func__); if (-1 == (fd = open(nodepath, O_RDONLY, 0644)) ) { xlog_printf(ANDROID_LOG_WARN, LOG_TAG, "UsbPatch: Node Path (%s) open fail, do unmount, mDiskNumParts=%d!", nodepath, mDiskNumParts); unmountVol(true, false); } else { xlog_printf(ANDROID_LOG_INFO, LOG_TAG, "UsbPatch: Node Path (%s) open success with mDiskNumParts=(%d)!", nodepath, mDiskNumParts); close(fd); } } else { if (mDiskNumParts == 0) { xlog_printf(ANDROID_LOG_INFO, LOG_TAG, "UsbPatch: possible no partition media inserted, do mount first, mDiskNumParts=%d", mDiskNumParts); if(getState() == Volume::State_Idle) { if(mountVol() != 0) { mRetryMount = true; } } else { mRetryMount = true; setState(Volume::State_Idle); } } else { xlog_printf(ANDROID_LOG_INFO, LOG_TAG, "UsbPatch: possible need next PartitionAdd uevent comes"); setState(Volume::State_Pending); } } } }
int checkfilesys(const char *fname) { int dosfs; struct bootblock boot; struct fatEntry *fat = NULL; int i; int mod = 0; int quiet = 0; int skip_fat_compare = 0; rdonly = alwaysno; if (!quiet) printf("** %s", fname); dosfs = open(fname, rdonly ? O_RDONLY : O_RDWR, 0); if (dosfs < 0 && !rdonly) { xlog_printf(ANDROID_LOG_INFO, FSCK_XLOG_TAG, "dosfs < 0 && !rdonly"); dosfs = open(fname, O_RDONLY, 0); if (dosfs >= 0) pwarn(" (NO WRITE)\n"); else if (!quiet) printf("\n"); rdonly = 1; } else if (!quiet) printf("\n"); if (dosfs < 0) { perror("Can't open"); printf("%s() : Cannot open %s\n", __func__, fname) ; return 8; } if (readboot(dosfs, &boot) == FSFATAL) { close(dosfs); printf("\n"); return 8; } if (skipclean && preen && checkdirty(dosfs, &boot)) { printf("%s: ", fname); printf("FILESYSTEM CLEAN; SKIPPING CHECKS\n"); close(dosfs); return 0; } if (((boot.FATsecs * boot.BytesPerSec) / 1024) > FAT_COMPARE_MAX_KB) { xlog_printf(ANDROID_LOG_INFO, FSCK_XLOG_TAG, " - ((boot.FATsecs * boot.BytesPerSec) / 1024) = %d > FAT_COMPARE_MAX_KB(%d)", ((boot.FATsecs * boot.BytesPerSec) / 1024), FAT_COMPARE_MAX_KB ); xlog_printf(ANDROID_LOG_INFO, FSCK_XLOG_TAG, " - Skip FAT compare!") ; skip_fat_compare = 1; } start_count(&fsck_p1_time) ; if (!quiet) { if (skip_fat_compare) printf("** Phase 1 - Read FAT (compare skipped)\n"); else if (boot.ValidFat < 0) printf("** Phase 1 - Read and Compare FATs\n"); else printf("** Phase 1 - Read FAT\n"); } mod |= readfat(dosfs, &boot, boot.ValidFat >= 0 ? boot.ValidFat : 0, &fat); if (mod & FSERROR) { printf("FSERROR after readfat()\n"); } if (mod & FSFATAL) { printf("\nFatal error during readfat()\n"); close(dosfs); return 8; } if (!skip_fat_compare && boot.ValidFat < 0) for (i = 1; i < (int)boot.FATs; i++) { struct fatEntry *currentFat; mod |= readfat(dosfs, &boot, i, ¤tFat); if (mod & FSFATAL) { printf("Fatal error during readfat() for comparison\n"); free(fat); (void)close(dosfs); return 8; } mod |= comparefat(&boot, fat, currentFat, i); free(currentFat); if (mod & FSFATAL) { printf("Fatal error during FAT comparison\n"); free(fat); (void)close(dosfs); return 8; } } end_count("Phase#1", &fsck_p1_time) ; start_count(&fsck_p2_time) ; if (!quiet) printf("** Phase 2 - Check Cluster Chains\n"); mod |= checkfat(&boot, fat); if (mod & FSERROR) { printf("FSERROR after checkfat()\n"); } if (mod & FSFATAL) { printf("Fatal error during FAT check\n"); free(fat); (void)close(dosfs); return 8; } end_count("Phase#2", &fsck_p2_time) ; /* delay writing FATs */ start_count(&fsck_p3_time) ; if (!quiet) printf("** Phase 3 - Checking Directories\n"); mod |= resetDosDirSection(&boot, fat); if (mod & FSERROR) { printf("FSERROR after resetDosDirSection()\n"); } if (mod & FSFATAL) { printf("Fatal error during resetDosDirSection()\n"); free(fat); close(dosfs); return 8; } /* delay writing FATs */ mod |= handleDirTree(dosfs, &boot, fat); if (mod & FSERROR) { printf("FSERROR after handleDirTree()\n"); /* try to recovery again */ mod &= ~FSERROR; mod |= handleDirTree(dosfs, &boot, fat); } if (mod & FSFATAL) { printf("Fatal error during handleDirTree()\n"); finishDosDirSection(); free(fat); close(dosfs); return 8; } end_count("Phase#3", &fsck_p3_time) ; start_count(&fsck_p4_time) ; if (!quiet) printf("** Phase 4 - Checking for Lost Files\n"); mod |= checklost(dosfs, &boot, fat); if (mod & FSERROR) { printf("FSERROR after checklost()\n"); } if (mod & FSFATAL) { printf("Fatal error during checklost()\n"); finishDosDirSection(); free(fat); (void)close(dosfs); return 8; } end_count("Phase#4", &fsck_p4_time) ; /* now write the FATs */ if (mod & FSFATMOD) { if (ask(1, "Update FATs")) { mod |= writefat(dosfs, &boot, fat, mod & FSFIXFAT); if (mod & FSFATAL) { printf("Fatal error during writefat()\n"); finishDosDirSection(); free(fat); (void)close(dosfs); return 8; } } else mod |= FSERROR; } if (boot.NumBad) pwarn("%d files, %d free (%d clusters), %d bad (%d clusters)\n", boot.NumFiles, boot.NumFree * boot.ClusterSize / 1024, boot.NumFree, boot.NumBad * boot.ClusterSize / 1024, boot.NumBad); else pwarn("%d files, %d free (%d clusters)\n", boot.NumFiles, boot.NumFree * boot.ClusterSize / 1024, boot.NumFree); if (mod && (mod & FSERROR) == 0) { if (mod & FSDIRTY) { if (ask(1, "MARK FILE SYSTEM CLEAN") == 0) mod &= ~FSDIRTY; if (mod & FSDIRTY) { pwarn("MARKING FILE SYSTEM CLEAN\n"); mod |= writefat(dosfs, &boot, fat, 1); } else { pwarn("\n***** FILE SYSTEM IS LEFT MARKED AS DIRTY *****\n"); mod |= FSERROR; /* file system not clean */ } } } finishDosDirSection(); free(fat); (void)close(dosfs); if (mod & FSFATAL) { pwarn("\n***** FSFATAL *****\n"); return 8; } if (mod & FSERROR) { pwarn("\n***** FSERROR *****\n"); return 8; } if (mod) { pwarn("\n***** FILE SYSTEM WAS MODIFIED *****\n"); return 4; } return 0; }