int prefs_from_tstr(prefs_data *prefs, const TCHAR *str, size_t str_len_cch) { int f_ok; size_t str_len_cb; assert(str); if (!str) return FALSE; if (-1 == str_len_cch) str_len_cch = tstr_len(str); str_len_cb = str_len_cch * sizeof(TCHAR); while (0 != str_len_cb) { f_ok = prefs_parse_item(prefs, &str, &str_len_cb); if (!f_ok) return FALSE; } assert(0 == str_len_cb); return TRUE; }
uint32 sec_save_wlinfo(char* firm_ver, char* dhd_ver, char* nvram_p) { struct file *fp = NULL; struct file *nvfp = NULL; char *filepath = "/data/.wifiver.info"; int min_len, str_len = 0; int ret = 0; char* nvram_buf; char temp_buf[256]; DHD_TRACE(("[WIFI] %s: Entered.\n", __FUNCTION__)); DHD_INFO(("[WIFI] firmware version : %s\n", firm_ver)); DHD_INFO(("[WIFI] dhd driver version : %s\n", dhd_ver)); DHD_INFO(("[WIFI] nvram path : %s\n", nvram_p)); memset(version_info,0,sizeof(version_info)); if(strlen(dhd_ver)){ min_len = min(strlen(dhd_ver) , max_len(temp_buf, DHD_prefix)); min_len += strlen(DHD_prefix) + 3; DHD_INFO(("[WIFI] DHD ver length : %d\n", min_len)); snprintf(version_info+str_len, min_len, DHD_prefix " %s\n",dhd_ver); str_len = strlen(version_info); DHD_INFO(("[WIFI] version_info len : %d\n", str_len)); DHD_INFO(("[WIFI] version_info : %s\n", version_info)); }else{ DHD_ERROR(("[WIFI] Driver version is missing.\n")); } if(strlen(firm_ver)){ min_len = min(strlen(firm_ver) , max_len(temp_buf, Firm_prefix)); min_len += strlen(Firm_prefix) + 3; DHD_INFO(("[WIFI] firmware ver length : %d\n", min_len)); snprintf(version_info+str_len, min_len, Firm_prefix " %s\n",firm_ver); str_len = strlen(version_info); DHD_INFO(("[WIFI] version_info len : %d\n", str_len)); DHD_INFO(("[WIFI] version_info : %s\n", version_info)); }else{ DHD_ERROR(("[WIFI] Firmware version is missing.\n")); } if(nvram_p){ memset(temp_buf,0,sizeof(temp_buf)); nvfp = filp_open(nvram_p, O_RDONLY, 0); if (IS_ERR(nvfp) || (nvfp == NULL)) { DHD_ERROR(("[WIFI] %s: Nvarm File open failed.\n", __FUNCTION__)); return -1; } else { ret = kernel_read(nvfp, nvfp->f_pos, temp_buf, sizeof(temp_buf)); filp_close(nvfp, NULL); } if(strlen(temp_buf)){ nvram_buf = temp_buf; bcmstrtok(&nvram_buf, "\n", 0); DHD_INFO(("[WIFI] nvram tolkening : %s(%d) \n", temp_buf, strlen(temp_buf))); snprintf(version_info+str_len, tstr_len(temp_buf, Nv_prefix), Nv_prefix " %s\n", temp_buf); str_len = strlen(version_info); DHD_INFO(("[WIFI] version_info : %s\n", version_info)); DHD_INFO(("[WIFI] version_info len : %d, nvram len : %d\n", str_len, strlen(temp_buf))); }else{ DHD_ERROR(("[WIFI] No info is missing.\n")); } }else{ DHD_ERROR(("[WIFI] No nvram path\n")); } DHD_INFO(("[WIFI] version_info : %s, strlen : %d\n", version_info,strlen(version_info))); fp = filp_open(filepath, O_RDONLY, 0); if (fp != NULL) { if (IS_ERR(fp) || (fp == NULL)) { DHD_INFO(("[WIFI] %s: File open failed.\n", __FUNCTION__)); } else { memset(version_old_info, 0, sizeof(version_old_info)); ret = kernel_read(fp, fp->f_pos, version_old_info, sizeof(version_info)); filp_close(fp, NULL); DHD_INFO(("[WIFI] kernel_read ret : %d.\n", ret)); if(strcmp(version_info,version_old_info) == 0){ DHD_ERROR(("[WIFI] %s: : already saved.\n", __FUNCTION__)); return 0; } } } fp = filp_open(filepath, O_RDWR | O_CREAT, 0666); if (IS_ERR(fp) || (fp == NULL)) { DHD_ERROR(("[WIFI] %s: File open failed.\n", __FUNCTION__)); } else { ret = write_filesystem(fp, fp->f_pos, version_info, sizeof(version_info)); DHD_INFO(("[WIFI] sec_save_wlinfo done. ret : %d\n",ret)); DHD_ERROR(("[WIFI] save .wifiver.info file.\n")); filp_close(fp, NULL); } return ret; }